edición general
208 meneos
5751 clics
Breve historia de Rust, el lenguaje de programación que ha destronado a C

Breve historia de Rust, el lenguaje de programación que ha destronado a C

Durante décadas, los programadores han escrito sistemas críticos en C y C++. Ahora, recurren a Rust .Muchos proyectos de software surgen porque, en algún lugar, un programador tenía un problema personal que resolver. Eso, más o menos, le ocurrió a Graydon Hoare. En el año 2006, Hoare era un programador informático de 29 años que trabajaba para Mozilla, la empresa de navegadores de código abierto. Al volver a su apartamento de Vancouver, descubrió que el ascensor no funcionaba: su software se había bloqueado. Y no era la primera vez que le ocur

| etiquetas: historia de rust , lenguaje de programación , c , graydon hoare
12»
  1. #81 en qué sector (fintech, electrónica de consumo, crypto, browser engines) y qué tipo de trabajo, si se puede saber? (Remoto, presencial, híbrido)

    Y en España o fuera (o desde España pero para cliente fuera)

    Si prefieres mantener el anonimato y responder solo a una, que sea la primera, plis
  2. #89 no tengo ni idea, ni ganas de mirarlo ahora, pero básicamente todos los compiladores empiezan escribiéndose en otro lenguaje ya existente hasta que llegan a un punto de desarrollo en el que son capaces de compilarse a si mismos.
  3. #63 Si te refieres a algo así, sigue detectándolo. Lo cual no es sorprendente, dado que el compilador lleva la cuenta de dónde se asignan los valores.

    Es decepcionante que no sea un error "duro" en vez de un warning, pero detectarlo en tiempo de jubilación entra dentro del problema de parada.  media
  4. #29
    Rust no te deja compilar si hay desbordamientos

    #24 procede a demostrar que ha compilado un código que provoca desbordamiento



    No entiendes que es desbordamiento, los ingenieros tampoco lo comprenden, solo yo lo entiendoxD xD

    entre esto y el rollo espía de la KGB que traés con tu curro no se puede ser más patético jajajaj reconozco que me has alegrado la mañana ehhh
  5. ¿Alguien sabe de algún fabricante de HW que ofrezca soporte Rust en sus productos?
  6. #2 En el año 9900 los programadores de cobol estarán angustiados porque se acerca el año 10000 y habrá trillones de líneas por revisar.
  7. #20 Cuando trabajé para Banca Catalana era todo en PL1, más algo de assembler. El PL/1 es muy superior al COBOL. Puedes traducir un programa de COBOL línea a línea a PL/1, pero PL/1 puede hacer mucho mas. Por ejemplo les escribí un analizador sintáctico de PL/1 usando apuntadores a memoria para construir el árbol.

    ¿Deutsche? Crecieron mucho en sistemas medios, usando Java, C, y hasta COBOL, que sólo atacan al mainframe (Frankfurt) a base de CICS. El batch sigue siendo el de siempre, que lo van manteniendo a base de sustos y lloros.

    Cuando aparecí por Deutsche había mucha gente que me conocía, algunos de Catalana, pero también otros de haber pasado por Caixa, y aún a algunos les sonaba de verme en la máquina de cerveza en el edificio de Sant Cugat. Este es un mundo pequeño.
  8. #105 No me refería a eso, me refería a que la recursividad dependa de alguna variable cuyo valor el compilador no pueda determinar que es lo normal, vamos.
  9. #10 Esto en Excel te da #EXE. Hay que poner un límite en alguna parte.
  10. #108 Angustiados por algo que todavía tardará 100 años en ocurrir?
    :troll:
  11. #49 Ver un mensaje de stack overflow es una advertencia del compilador

    ¿Qué? No.
  12. #112 Tu no eres consciente de la cantidad de líneas de código que se escribirán de aquí al 9900, 100 años estarán justitos, una pesadilla va a ser.
  13. #1 Aqui otro, que estuvo trabajando en AS-400 por el tema del efecto 2000.
  14. #115 De aquella nos libramos. :popcorn:
  15. #116 Pues sí, parecía bastante grave en un principio, pero al final no creo que hubiera muchas incidencias con el tema (alguna si hubo, pero muy pocas).
  16. #102 Es mentira, uno no soy un delincuente.
  17. Ya hacen linux en rust?, vaya
  18. #85 Solo en Netflix, la PS4, en routers, OpenSSH en TODAS partes (adivina de dónde sale)....

    Si tu supieras...
  19. #52 No, no es lo mismo. Los namespaces y SeLinux son explícitos. En el caso de pledge y unveil es implicito. Si el programa intenta algo fuera de lo admitido, segfault desde el kernel.
  20. #85 Sin OpenBSD no tendrias LibreSSL, OpenSSH y cientos de mitigaciones.

    Tendrías que usar un GNU LSH (que no usa ni dios) con más RCE's que un emulador de binarios.

    De hecho en OpenBSD mandaron al cuerno linux_compat ya que podría ser un coladero. Total, hay versiones nativas de casi todo.
  21. #109 De hecho hubo sistemas mucho más seguros que Unix desde el principio, como Multics. Ahí muchos de los ataques modernos no hubieran ni existido.
  22. #45 > overflow

    Primero que lo intenten, (ROP), y segundo que pledge no actue mandando el proceso a hacer gárgaras.
  23. #86 Si crees que soy un tecnocuñado es que no has visto mis historial de comentarios.

    Para todo lo demás, #61. Que un módulo RTC en hw usando hasta un GPS para ponerse en hora le cuesta calderilla a empresas. En Shenzhen los compras por toneladas.

    Los habrá USB, serial o usando GPIO's, pero no te preocupes que eso para uno de ingeniería electrónica es un paseo.
  24. #126 Sí, mejor que en la tuya. Como va GNU LSH? Se come algo en conexiones cifradas vs OpenSSH? Qué tal OpenSSL vs LibreSSL? Aguanta dos días sin ser la risión?

    Si no llega a ser por los BSD a ver qué tendríais de pila de red, de conexiones seguras, de ciertas implementaciones de seguridad pioneras en OpenBSD y muchas cosas más.

    Sobre GNU GCC vs Clang, no he visto cosa que devore más RAM y CPU salvo Chrome. Compilar algo en equipos modestos usando GCC es imposible. Luego normal, han probado compilaciones cruzadas pero no nativas y todo casca que da gusto.

    No hay más que ver los bugs gordos que estoy viendo en algunos equipos con GNU/Linux X86 (y sin GNU) vs su contraparte en OpenBSD donde todo funciona sin tener segfaullts porque a esos desarrolladores Rockstar se la sudan los equipos usándo código de 32 bit totalmente funcional. Y hablo de algunos Celeron aún usados, y muchos Atom de 32 bits, no algo verdaderamente básico como un Pentium 4 con SSE2.
  25. #126 Ah, hablemos de filosofía de proyectos. GNU's Not Unix. Todo correcto. GNU bebe del ITS con Emacs, de los hackers, de su libertad, de su apertura total como era ITS vs Unix y el corporativismo de AT&T aunque luego salieron cosas como los BSD. Muy loable, de acuerdo. Solo que para el proyecto GNU, Unix es algo sobre lo que escribirse encima, un poco como Apple usando Mach y NeXT y como base para construir la UI clásica de los Mac encima. No algo para tener como base para todo el sistema en cuanto a modelo de diseño.
    De ahí que nazcan proyectos como GNU GUIX, y con el tiempo el peso de las utilidades de Unix será cada vez más testimonial hasta el punto de igual reescribirse como wrappers escritos en Scheme con un JIT potente como el que va existiendo desde la versión 3 de Guile.
    Y seguramente la visión de la FSF y la de Red Hat acaben por ser antagónicas naciendo forks de muchos proyectos.
    Eso va a romper la cohesión pero quizá nazca un entorno LISP Machine 2.0 o "ITS 2.0" en computación, filosóficamente hablando. Pero claro, olvidate de la cohesión en sistemas que usen Linux como kernel. Compartiran eso y Glibc y gracias.
    Todo lo demás será un REPL escrito en Scheme como prompt y con wrappers simulando las utilidades Unix. Y Emacs claro,
    será el REPL "avanzado" pudiendo hacer todo desde ahí.
    Los BSD, todos son un solo sistema y se nota. No reescriben tecnologías de la noche a la mañana con 2000 hacks. Por eso en muchos sitios se empezarán a ver muchas máquinas con Jails y virtualización desde FreeBSD y cuando OpenBSD mejore con vmm(4) e importe un sistema de ficheros de Dragonfly veremos donde quedan muchos Linux en los servidores.
    Porque de momento el ZFS de FreeBSD no tiene los problemas que tienen en licencia los GNU.
  26. Llevo unos meses aprendiendo Rust. Es un lenguaje increíble en el que han perdido la oportunidad de eliminar el punto y coma
  27. #129 Peliculones, no. La realidad que se nos viene.
  28. #60 Nada de eso tiene que ver con que Java y Python compilen a C.

    Tanto el intérprete de python como la máquina virtual de Java están hechos en C++.

    La implementación oficial de Python, CPython, está escrita en C, no en C++, pero también existen implementaciones en otros lenguajes, como PyPy (escrita en RPython, un subset de Python). Por otra parte, existen compiladores y máquinas virtuales de Java escritos en diferentes lenguajes: C, C++, Java, Smalltalk...

    Otra cosa es que ambos sean JIT que convierten Java/Python a código máquina sobre la marcha.

    Nope. Lo que se convierte a código máquina sobre la marcha es el bytecode, no el código fuente. Y CPython no incluye JIT, otras implementaciones como PyPy o Jython sí.
  29. #76 O podría hacer referencia a su propio comentario. Mejor demostración que esa, creo que no hay
  30. #83 No has entendido la intención de #76. Bueno, supongo que la mayoría no lo entendió. Por eso pasó desapercibido.
  31. #114 Pero los programadores de 9900 no estarán estresados por lo que ocurra en 10000. Eso tenlo por seguro.
  32. #135 ¿Cómo que no?, vivirán 300 años y tendrán que currar 250 antes de jubilarse.
  33. #134 Me siento como el cuerpo de un bucle while(0) :foreveralone:
  34. #121 pero yo insisto, el software puede ser manipulado incluso haciendo cosas admitidas.

    Por ejemplo, un software que conecta con una base de datos, si el software está comprometido y se manipula para entregar un dump de la bbdd, esta dentro de sus funciones y ningún vigilante puede detectar que está haciendo algo que no debe.

    Como decían más arriba, un sistema es tan débil como su eslabón más débil, y casi siempre es el software en ejecución.

    Que OpenBSD este a salvo de escaladas de permisos te "salva" el sistema, pero el sistema no es importante, es una plataforma, lo importante siempre son los datos de las aplicaciones que corren en ellas.

    ¿Para que quiero ser root en un sistema con una bbdd si puedo sacar los datos a través de algún overflow en el software que accede a ellos de forma legítima?
  35. #125 me espero a que saquen la peli
  36. #138 En OpenBSD como digo los overflows no son tan fáciles. Y muchos demonios corren con sandbox y pledge/unveil.
  37. #139 Pues mira el corto de autor:

    guix.gnu.org

    En breve se avecinarán cosas, como la emulación de una shell y herramientas POSIX escritas en Scheme.
  38. #101 Aunque antes de poder hacerle el "bootstrapping" de rigor, se escribía en OCaml
  39. #4 Los coches de ahora y desde hace decadas, no llevan un chasis en si, sino que son monocasco. Lo mas parecido la chasis seria la plataforma, sobre la que se montan el techo, puertas, laterales.
    Todoterrennos verdaderos eran los ultimos que llevaban chasis y carroceria separada, pero hasta el defender se ha pasado al monocasco.

    #6 Creo que los F-35 tuvieron un problema de cambio de hora al sobrevolar la zona del pacifico donde se pasa de un dia a otro. Yo pienso que seria facil evitar esto usando UTC, para las cosas que necesitan una hora consistente y luego la represetancion la adaptas a la zona horaria.

    #13 Yo entiendo que el problema es la implementacion en sofware y que el SO sea de 32bit deberia ser poco relevante. Es un problema previsible y añadir otro byte, no cuesta nada.
    El hardware creaba el problema de que la bios no sabia representar al 2k. Pero por sofware, se puede suplir sabiendo que el punto de partida ya no es 1980, por ejemplo.
    HAbia programas que lo hacian en el arranque, cuando no habia internet permanente ni NTP estaba extendido.

    #25 OK, entiendo que aunque el problema puede ser facil de solucionar, hay muchos sistema que pueden haberse olvidado de un problema que dará la cara dentro de decadas.
  40. #140 pero es indiferente.

    Como te digo, el problema no es atacar el sistema operativo, es atacar el software.

    Tu casa puede ser muy seguro, pero si hay un tunel en tu jardín hasta lo que quiere el ladrón, sin tener que violar tu casa, tienes un problema de seguridad.

    Hay atacantes que si buscan obtener el control del sistema operativo, pero la mayoría de ataques no necesitan el control del sistema.
  41. #7 #20 #109 Conoceis a mackuskey? es tambien un abuelo informatico que cuenta historias de informatica del año catapum.
    eltamiz.com/elcedazo/author/macluskey/
    Creo que tiene un libro de Historia de un Viejo informatico.
    eltamiz.com/elcedazo/2009/03/31/historia-de-un-viejo-informatico-la-ir

    #68 #66 Eso entiendo yo que las gestion de memoria en C no tiene "topes" y si te sales, puede acabar en otra zona de memoria y si puede elegir donde, meterte en otras zonas y hacer cosas no previstas.
    En pascal, creo que el BIt 0 tiene la longitud del array y en Rust, no se como evitar salirte de la memoria asignada.

    #45 No responte tu pregunta. Pero Qmail tiene un diseño en dos partes. Una pequeña y sencilla y facil de vigilar conectada a internet y el resto de programa que se conecta a internet a traves de la anterior y solo le va a dejar acciones concretas. Ofrecen recompensa a quien encuentre un bug que les de acceso.
    en.wikipedia.org/wiki/Qmail
    Por otra parte yo seria partidario de limitar los permisos al minimo a los programas, no solo a todo el usuario.
    Un word, necesita aceso a ficheros temporales y un sitema de guardar los archivos que se puede delegar en otro programa asegurado.
    Un firefox parecido y se podria limitar lo que puede tocar en el disco duro y las acciones que pueda hacer por internet.
  42. #144 El software de OpenBSD parchea el código de cada port, al menos con C(XX)FLAGS y LDFLAGS.

    Y en el caso de los navegadores principales (FFox/Chromium) tienen soporte de Pledge y Unveil como parte de su funcionamiento. No es algo externo a ellos como Selinux, forma parte de su propio funcionamiento, y el kernel vigila pledge(4) y unveil(4).
  43. #104 La pregunta y respuesta que he hecho en chatgpt:
    P: ¿en qué lenguaje de programación se comenzó a desarrollar Rust?
    R: El lenguaje de programación Rust fue inicialmente desarrollado en el lenguaje de programación C++, aunque luego se reescribió en Rust a medida que el lenguaje se fue desarrollando. Rust se inició como un proyecto interno de Mozilla Research en 2006 y fue presentado públicamente en 2010. Desde entonces, Rust ha sido desarrollado de forma abierta y colaborativa por una comunidad global de desarrolladores.
  44. #145 En pascal, creo que el BIt 0 tiene la longitud del array

    Los dos primeros bytes
  45. #147 Otra demostración de que ChatGPT no tiene ni idea de lo que escribe. Goto #142
  46. #149 Pero a que cuela?
    Seria interesante una recopilacion de mentiras de ChatGPT.

    #102 En trading de alta velocidad la latencia es muy importante, contrataron a un desarrollador del nucleo de linux.
    Puede que Rush podria tener alguna utilidad.
    Hay aplicaciones forenses para el Rush, como una aplicacion que gana por ejemplo a Python.
    yewtu.be/watch?v=hhRM-D5xn60

    #107 A que te refieres?
    Rust se compila a un pseudo-ASM/esperanto LLVM y de ahi se compila al ASM/codigo maquina de cada arquitectura( x86, arm, microcontroladorres, etc) .



    Parece que Rust es un lenguaje para nenanzas, lo que puede generar una cooperacion positiva. Tal vez se estudia poco la sociologia del desarrollo de sofware.

    Mientras tanto, la comunidad de Rust también fue construyendo una cultura conocida por ser amistosa y abierta a los recién llegados. "Nadie te llama nunca novato. Ninguna pregunta se considera estúpida", dice Nell Shamrell-Harrington, ingeniera principal de Microsoft que, por aquel entonces trabajaba en Rust en Mozilla.

    Shamrell-Harrington explica que esto, en parte, se debe a que Hoare publicó muy pronto un "código de conducta", que prohibía el acoso, y se esperaba que cumpliera cualquiera que contribuyera a Rust. La comunidad lo aceptó y, según los miembros más veteranos de la comunidad Rust, por ello los programadores queer y trans se involucraron en Rust en mayor proporción que en otros lenguajes. Incluso los mensajes de error que crea el compilador cuando el programador erra son cuidadosos: describen el error, y sugieren amablemente cómo solucionarlo.

    "Cuando cometo errores, los compiladores de C y C++ me hacen sentir como una persona terrible. El compilador de Rust es como si te guiara para escribir un código muy seguro", admite Shamrell-Harrington riendo.
  47. #104 Rust está confuso, ¡tan confuso que se compiló a sí mismo!
  48. #150 A que te refieres?

    Cuando trabajas con alguna placa de evaluación o un SoC de algún fabricante, este te ofrece un SDK (compilador, librerías para ese HW, etc...), y en entornos empresariales no se suele usar gcc/clang para producto final. ¿Existe algún SDK de algún fabricante que ofrezca Rust? A eso me refiero.
  49. #152 Ok. Gracias.
    Lo siento no tengo ni idea.
12»
comentarios cerrados

menéame