Drew DeVault presentó el lenguaje de programación de sistemas Hare

Drew DeVault, autor del entorno de usuario Sway, del cliente de correo Aerc y de la plataforma de desarrollo colaborativo SourceHut, ha presentado el lenguaje de programación Hare, en el que él y su equipo han trabajado durante los últimos dos años y medio. Hare se presenta como un lenguaje de programación de sistemas, cercano al lenguaje C, pero más simple que C. Uno de los principios clave en el diseño de Hare es su enfoque en la simplificación y la total confianza en las acciones del programador (ejecutar exactamente lo que se indica, sin intervenciones y comportamientos implícitos), junto con herramientas auxiliares para identificar errores y problemas comunes.

Los códigos fuente del compilador y las herramientas se distribuyen bajo la licencia GPLv3, y el código de la biblioteca estándar bajo la licencia MPL (Mozilla Public License). En el primer lanzamiento público, se declara soporte para los sistemas operativos Linux y FreeBSD en plataformas x86_64, aarch64 y riscv64, así como el uso autónomo para ejecutar sobre hardware sin un sistema operativo. En los planes se menciona el soporte para los sistemas operativos NetBSD, OpenBSD, Illumos, Haiku y Plan 9, y las plataformas ppc64le, i686 y arm32.

El lenguaje utiliza un manejo manual de memoria y un sistema de tipos estático, donde a cada variable se le debe asignar explícitamente un tipo determinado. Para la ejecución de la aplicación se adjunta un runtime mínimo. El lenguaje está optimizado para abordar tareas de bajo nivel, como el desarrollo de sistemas operativos, compiladores, aplicaciones de red y utilidades del sistema, donde se requiere alcanzar un rendimiento máximo y control total sobre la ejecución.

Para los desarrolladores, se ha preparado una biblioteca estándar de funciones que proporciona acceso a las interfaces básicas del sistema operativo, algoritmos comunes e implementaciones de protocolos y formatos. La biblioteca abarca áreas como entrada/salida, manejo de archivos, expresiones regulares, cifrado, interacción en red, operaciones con fechas y horas, acceso a primitivas de Unix comunes (como poll, fnmatch y glob), análisis y verificación de tipos. Además, se proporcionan enlaces para acceder a las capacidades de OpenGL, SDL2 y libui.

Como ejemplos de proyectos escritos en el lenguaje Hare, se mencionan el microkernel Helios, el gestor de contraseñas Himitsu, el sistema de trazado de rayos, el programa de cifrado box, el demonio bittorrent btqd, scheduled (un equivalente a cron), toothbrush (cliente y para el protocolo finger). servidor Entre los planes futuros se destaca la estabilización de la especificación del lenguaje y de la biblioteca estándar, la implementación de soporte para plataformas y arquitecturas faltantes, y la adición de funciones de biblioteca para el soporte de TLS 1.2 y 1.3.

Ejemplo de código en el lenguaje Hare: use crypto::sha256; use encoding::hex; use fmt; use hash; use io; use os; export fn main() void = { const hash = sha256::sha256(); const file = os::open(«main.ha»)!; defer io::close(file); io::copy(&hash, file)!; let sum: [sha256::SIZE]u8 = [0…]; hash::sum(&hash, sum); hex::encode(os::stdout, sum)!; fmt::println()!; const greetings = [ «Hello, world!», «¡Hola Mundo!», «Γειά σου Κόσμε!», «Привет, мир!», «こんにちは世界!», ]; for (let i = 0z; i < len(greetings); i += 1) { fmt::println(greetings[i])!; }; let x: *int = alloc(42); fmt::printfln(» x: {}», x)!; fmt::printfln(«*x: {}», *x)!; free(x); const file = os::open(os::args[1])!; defer io::close(file)!; let buffer: *[65535]u8 = alloc([0…]); defer free(buffer); const n = io::read(file, buffer)! as size; io::write(os::stdout, buffer[..n])!; }; fn sort(items: []int) void = { … }; @test fn sort() void = { let items = [5, 4, 3, 2, 1]; sort(items); for (let i = 1z; i < len(items); i += 1) { assert(items[i — 1] <= items[i], «la lista no está ordenada»); }; };

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster