3 puntos por GN⁺ 2024-07-31 | 1 comentarios | Compartir por WhatsApp
  • Traducir C a Rust (TRACTOR)

    • Dr. Dan Wallach
    • Tras más de 20 años de esfuerzos por resolver los problemas de seguridad de memoria en C y C++, la comunidad de ingeniería de software ha llegado a una conclusión
    • No basta con depender solo de herramientas de detección de errores
    • Se prefiere usar lenguajes de programación "seguros" que puedan rechazar programas inseguros en tiempo de compilación
    • El programa TRACTOR tiene como objetivo traducir automáticamente código C existente a Rust
    • La meta es alcanzar la misma calidad y estilo que el trabajo escrito por desarrolladores expertos en Rust, eliminando las vulnerabilidades de seguridad de memoria presentes en programas C
    • Este programa podría incluir una nueva combinación de análisis estático, análisis dinámico y técnicas de aprendizaje automático como los modelos de lenguaje grandes
    • Puede encontrarse información adicional en el aviso especial de TRACTOR en SAM.Gov
  • Logros principales de DARPA

    • Revolución del sigilo

      • En las primeras investigaciones de DARPA sobre tecnología furtiva, Have Blue, prototipo del F-117A, voló con éxito por primera vez en 1977
      • El éxito del programa F-117A marcó el inicio de la revolución del sigilo, que aportó enormes beneficios a la seguridad nacional
    • Navegación en la palma de la mano

      • Los primeros receptores GPS eran dispositivos grandes y pesados
      • En 1983, DARPA trabajó para miniaturizarlos, impulsando una adopción mucho más amplia de la funcionalidad GPS
    • Abriendo el camino al internet moderno

      • La investigación de ARPA desempeñó un papel clave en el inicio de la revolución de la información
      • Desarrolló las bases conceptuales de ARPANET e inventó protocolos digitales que llevaron al nacimiento de internet
  • Resumen de GN⁺

    • El programa TRACTOR es un intento importante de resolver problemas de seguridad de memoria mediante la traducción automática de código C existente a Rust
    • La investigación de DARPA ha contribuido enormemente al desarrollo de la tecnología moderna, incluida la tecnología furtiva, la miniaturización del GPS y el nacimiento de internet
    • Este artículo puede ser útil para ingenieros de software y personas interesadas en la historia de la tecnología
    • Proyectos con funciones similares incluyen Checked C de Microsoft y el lenguaje Carbon de Google

1 comentarios

 
GN⁺ 2024-07-31
Opiniones en Hacker News
  • El Rust escrito por programadores experimentados es muy distinto de C, y la mayor parte del código interesante está escrita en C++

    • Determinar estáticamente toda la vida útil de las asignaciones de un programa en C es un problema muy difícil
    • Los programas en C/C++ pueden vincular la vida útil de las asignaciones a eventos como un clic del usuario
    • Si el programa que se intenta analizar tiene errores, la vida útil podría no tener sentido
    • La investigación previa asume que el código analizado es correcto
  • Es interesante que esta propuesta se haya hecho pública

    • Se intenta moderar las expectativas sobre la viabilidad de la traducción automática
    • El código fuente en C contiene menos información que el código fuente en Rust
    • Es imposible generar la información faltante
    • Inferirla correctamente requiere juicio, y eso puede producir errores
    • El proyecto podría tener cierto grado de éxito, pero debe abordarse con cautela
    • Espero que un proyecto del gobierno no se interprete como una condena total de C ni como un elogio total de Rust
  • No me gusta la mentalidad de "reescribir el mundo en Rust"

    • La traducción mecánica no es buena si se quiere portar un proyecto a un lenguaje o plataforma nuevos
    • Hay que invertir tiempo en planear una mejor arquitectura y diseñar el sistema de software
    • Si se decidió usar Rust, entonces hay que escribirlo en Rust
    • Es mejor actualizar C a un C moderno y usar model checkers para verificar la seguridad de memoria, recursos y aritmética de enteros
  • Mucha gente está leyendo este proyecto como una exigencia de traducir código C y C++ a Rust

    • C y C++ son inherentemente inseguros
    • Se debería traducir o escribir tanto código como sea posible en lenguajes seguros
    • Apoyo el software que traduce código C existente a Rust
    • El objetivo no es un consenso para reescribir el mundo en Rust, sino migrar hacia lenguajes seguros
  • Hay problemas para mantener una base de código traducida

    • Se necesita una base de código escrita en C y un equipo de ingenieros en C capaz de mantenerla
    • Una base de código en Rust traducida automáticamente puede ser más difícil de leer y entender que el original
    • Se necesita un equipo de ingenieros en Rust
    • Si ya se cuenta con ingenieros en Rust, es mejor reescribir manualmente el código
  • Un programa que haga el porting automático tendría que incluir todas las capacidades necesarias para hacer seguro el código C

    • Si Rust no tiene errores de memoria y pudiera traducir C automáticamente, entonces podría corregir automáticamente todos los errores de memoria
    • Eso, por lo general, es imposible
  • Sería mejor contratar primero a los ingenieros talentosos que fueron despedidos de Mozilla para que sigan trabajando en el propio lenguaje

    • El procesamiento asíncrono todavía no está completamente terminado
    • Hay varios problemas
  • Está bien que DARPA impulse este problema

    • Traducir a Rust seguro es muy difícil
    • Hoy existen herramientas para traducir de C a Rust, pero el resultado es difícil de mantener
    • Para hacerlo bien, hay que resolver los problemas del tamaño de los arreglos y del uso no lineal de punteros