Drew DeWalt introdujo el lenguaje de programación de sistemas Hare

Drew DeVault, autor del entorno de usuario Sway, el cliente de correo electrónico Aerc y la plataforma de desarrollo colaborativo SourceHut, presentó el lenguaje de programación Hare en el que él y su equipo han estado trabajando durante los últimos dos años y medio. Hare se promociona como un lenguaje de programación de sistemas similar a C pero más simple que C. De los principios clave de diseño de Hare, se declara una orientación hacia la simplificación y total confianza en las acciones del programador (hacer exactamente lo que se indica, sin iniciativa y comportamiento implícito), con herramientas auxiliares para identificar errores y problemas típicos.

Исходные тексты компилятора и инструментария распространяются под лицензией GPLv3, а код стандартной библиотеки под лицензией MPL (Mozilla Public License). В первом публичном выпуске заявлена поддержка операционных систем Linux и FreeBSD на платформах x86_64, aarch64 и riscv64, а также самодостаточное использование для запуска поверх оборудования без операционной системы. В планах упоминается поддержка операционных систем NetBSD, OpenBSD, Illumos, Haiku и Plan 9 и платформ ppc64le, i686 и arm32.

El lenguaje utiliza una gestión de memoria manual y un sistema de tipo estático, en el que a cada variable se le debe asignar explícitamente un tipo específico. Se adjunta un tiempo de ejecución mínimo para ejecutar la aplicación. El lenguaje está optimizado para tareas de bajo nivel, como el desarrollo de sistemas operativos, compiladores, aplicaciones de red y utilidades del sistema que requieren el máximo rendimiento y un control total sobre la ejecución.

Se preparó una biblioteca estándar de funciones para desarrolladores, que brinda acceso a las interfaces básicas del sistema operativo, algoritmos estándar e implementaciones de protocolos y formatos. La biblioteca cubre áreas como E/S, manipulación de archivos, expresiones regulares, cifrado, redes, operaciones de fecha y hora, acceso a primitivas genéricas de Unix (como sondeo, fnmatch y glob), análisis y verificación de tipos. Los enlaces se proporcionan por separado para acceder a las funciones de OpenGL, SDL2 y libui.

В качестве примеров проектов, написанных на языке Hare, упоминаются микроядро Helios, менеджер паролей Himitsu, система трассировки лучей raytracing, программа для шифрования box, bittorrent-демон btqd, scheduled (аналог системы cron), toothbrush (клиент и servidor для протокола finger). Из планов на будущее отмечается стабилизация спецификации языка и состава стандартной библиотеки, реализация поддержки недостающих платформ и архитектур, добавление библиотечных функций для поддержки TLS 1.2 и 1.3.

Ejemplo de código liebre: use crypto::sha256; usar codificación::hex; utilizar fmt; usar hachís; usoio; usar sistema operativo; exportar fn main() void = { const hash = sha256::sha256(); const archivo = os::open("main.ha"!); deferio::close(archivo); io::copia(&hash, archivo)!; sea ​​suma: [sha256::TAMAÑO]u8 = [0…]; hash::suma(&hash, suma); hex::encode(os::stdout, suma)!; fmt::println(!); const saludos = [ "¡Hola mundo!", "¡Hola Mundo!", "Γειά σου Κόσμε!", "¡Hola mundo!", "こんにちは世界!", ]; for (let i = 0z; i < len(saludos); i += 1) { fmt::println(saludos[i])!; }; sea ​​x: *int = alloc(42); fmt::printfln(" x: {}", x)!; fmt::printfln("*x: {}", *x)!; libre(x); const archivo = os::open(os::args[1])!; deferio::close(archivo)!; let buffer: *[65535]u8 = alloc([0…]); aplazar libre (búfer); const n = io::read(archivo, búfer)! como tamaño; io::write(os::stdout, búfer[..n])!; }; fn sort(items: []int) void = {... }; @test fn sort() void = {let items = [5, 4, 3, 2, 1]; ordenar(artículos); for (let i = 1z; i < len(elementos); i += 1) { afirmar(elementos[i - 1] <= elementos[i], "la lista no está ordenada"); }; };

Fuente: opennet.ru

Compre alojamiento confiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra alojamiento web fiable con protección DDoS, servidores VPS VDS | ProHoster