Raphael Amorim, creador de Rio Terminal, presenta Jam, un lenguaje de programación en desarrollo hacia su versión 1.0 que busca combinar la inmediatez y la ergonomía de los lenguajes de tipo C —Go, Zig, C moderno— con la seguridad de memoria propia de Rust, pero sin recolector de basura ni un sistema de préstamos complejo. El autor parte de una crítica respetuosa al estado actual del sector: Rust, aunque poderoso, presenta una curva de aprendizaje tan empinada que muchos ingenieros competentes se estancan al pasar de "escribir algo en Rust" a "ser productivos". Zig, por su parte, conserva la sensación del C pero no es seguro por defecto, lo que obliga a depender en producción de herramientas externas como Valgrind, AddressSanitizer o fuzzing, trasladando la verificación fuera del lenguaje.
En la era del código generado o revisado por inteligencia artificial, Amorim sostiene que el compilador debe asumir la mayor parte de la detección de errores, ya que la revisión humana línea por línea tiende a desaparecer. Esa necesidad de seguridad, junto con una curva de aprendizaje accesible y el alto rendimiento, son los motivos que le han llevado a crear Jam.
El lenguaje se apoya en cuatro pilares; en esta entrega se detallan los dos primeros. El primero es la semántica de valores mutables descrita por Racordon y Abrahams en 2022: cada enlace posee su valor, los préstamos de parámetros solo viven durante una llamada a función y no aparece en el código de usuario ninguna sintaxis de referencias ni de tiempos de vida. Esto sustituye al comprobador de préstamos de Rust. El segundo es el sistema drop heredado de Rust: los tipos declaran una función drop, el compilador sintetiza la llamada en cada salida de ámbito y un análisis ligero de flujo de datos detecta en tiempo de compilación los usos de memoria no inicializada.
En la práctica, escribir un tipo File con un descriptor de fichero que se cierre automáticamente al salir del ámbito requiere en Jam únicamente declarar la función drop; en Zig sería necesario un defer explícito y en C++ entraría en juego el conjunto de reglas de cero/tres/cinco, los destructores virtuales y los problemas asociados a las excepciones en constructores y destructores. En el código intermedio LLVM generado por Jam, la llamada a __drop_File aparece justo antes de la instrucción de retorno, demostrando que la limpieza se ejecuta de forma incondicional sin intervención del programador.
