Presentan el lenguaje Hare, "ideal para crear sistemas operativos": sus creadores buscan sustituir a C simplificándolo

26/04/2022
Artículo original

Presentan el lenguaje Hare,

Drew DeVault es un programador que tiene en su haber numerosos proyectos, como un administrador de ventanas en mosaico (Sway WM), un sistema operativo para calculadoras (Knight OS), una implementación libre de Minecraft (TrueCraft) y hasta su propio servicio de alojamiento GIT.

Pero ayer presentó un proyecto nuevo, mayor y a más largo plazo, en el que él y treinta colaboradores llevaban dos años y medio trabajando en secreto: un lenguaje de programación llamado Hare (aquí su web oficial), con el que pretende ofrecer una alternativa —nada menos— que a C.

Palabras mayores, siendo C como es el lenguaje de programación más importante de la historia (y sí, aún lo es, aunque no sea el más usado: es el lenguaje en que se desarrollan los núcleos de los principales sistemas operativos).

Su idea, de hecho, es "simplificar C sin reducir su utilidad". De hecho, lo califica como un lenguaje adecuado para desarrollar "sistemas operativos, drivers, herramientas del sistema, compiladores, software de red y otras tareas de bajo nivel y alto rendimiento".

Hare ofrece tipado estático, gestión manual de memoria y "un tiempo de ejecución mínimo". Eso, y un diseño estable y robusto. De hecho, prometen que desarrollarán el lenguaje de una "manera conservadora", para que no tengamos que gastar mucho esfuerzo en mantenernos al día con los cambios del mismo. Y, cuando lleguen a la versión 1.0, —objetivo que pretenden cumplir antes de que termine este año—…

"vamos a finalizar la especificación, congelar el diseño del lenguaje y realizar sólo cambios compatibles con versiones anteriores de la biblioteca estándar".

Así luce un 'Hola Mundo' en versión multilingüe, con Hare:

Programa2

Y así se ve un programa de ejemplo, capaz de calcular su propio hash SHA-256:

Programa

Y si necesitas ejemplos más complejos y tangibles, ya existen dos proyectos basados en Hare: el almacén de contraseñas Himitsu y el microkernel x86_64 Helios.

¿Te ha interesado la propuesta de Hare? Pues bien, ahora puedes:

Punto débil: no está dirigido a usuarios de Windows y macOS

¿Un punto negativo? Su disponibilidad —actual y prevista— para ciertas plataformas. Por ahora, funciona en Linux y FreeBSD para x86_64, aarch64 y riscv64. Quieren añadir más arquitecturas (sobre todod e 32 bits), pero entre los sistemas operativos contemplados, aunque encontramos el minoritario Haiku, no se encuentran Windows y macOS:

"No tenemos intención de admitir plataformas no libres, pero debido a que el lenguaje está estandarizado, una implementación o bifurcación de terceros podría desarrollar fácilmente el soporte de Windows o macOS si lo desea".

¿Qué ofrece Hare que no ofrezca Rust?

Pero, ¿no era Rust el lenguaje que se estaba alzando como sustituto de C? ¿No está en proyecto empezar a desarrollar partes del propio Kernel de Linux en Rust, incluso? ¿Por qué reinventar la rueda, entonces? Unos meses antes de que DeVault empezara a trabajar en la creación de Hare, explicaba en su blog por qué no consideraba a Rust un buen reemplazo para C:

"Tengo un dicho que resume mi opinión de Rust comparándolo con Go: 'Go es el resultado de que los programadores de C diseñen un nuevo lenguaje de programación, y Rust es el resultado de que los programadores de C ++ diseñen un nuevo lenguaje de programación'.

"Tanto Rust como C ++ son […] lenguajes que resuelven problemas agregando más funcionalidades, mientras que en un lenguaje como C resuelves problemas escribiendo más código C".

En aquel entonces, DeVault vaticinaba que el lenguaje que sustituyera a C sería más sencillo, no más complejo que éste. Y explicaba que Go había logrado eso "especializándose en ciertas clases de problemas y abordándolos con la solución más simple posible", pero destacaba que no había logrado reemplazar "por completo" a C. Y ahí es donde entra Hare.

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();