Drew DeWalt presentou a linguaxe de programación do sistema Hare

Drew DeVault, o autor do entorno de usuario Sway, o cliente de correo electrónico Aerc e a plataforma de desenvolvemento colaborativo SourceHut, presentou a linguaxe de programación Hare, na que el e o seu equipo estiveron traballando durante os últimos dous anos e medio. Hare preséntase como unha linguaxe de programación de sistemas similar a C, pero máis sinxela que C. Entre os principios clave de deseño de Hare, o foco declarado está na simplificación e a total confianza nas accións do programador (facer exactamente o que se especifica, sen iniciativa e comportamento implícito), coa presenza de ferramentas auxiliares para identificar erros e problemas típicos.

O código fonte do compilador e da cadea de ferramentas ten licenza GPLv3, e o código da biblioteca estándar ten licenza MPL (licenza pública de Mozilla). A primeira versión pública anunciou a compatibilidade con sistemas operativos Linux e FreeBSD en plataformas x86_64, aarch64 e riscv64, así como unha implementación independente para operación bare-metal. Os plans inclúen compatibilidade cos sistemas operativos NetBSD, OpenBSD, Illumos, Haiku e Plan 9 e as plataformas ppc64le, i686 e arm32.

A linguaxe utiliza a xestión manual da memoria e un sistema de tipo estático, no que a cada variable se lle debe asignar explícitamente un tipo específico. Para executar a aplicación, achégase un tempo de execución mínimo. A linguaxe está optimizada para resolver problemas de baixo nivel como o desenvolvemento de sistemas operativos, compiladores, aplicacións de rede e utilidades do sistema que requiren o máximo rendemento e control total da execución.

Preparouse unha biblioteca estándar de funcións para desenvolvedores, que proporciona acceso ás interfaces básicas do sistema operativo, algoritmos estándar e implementacións de protocolos e formatos. A biblioteca abrangue áreas como entrada/saída, manipulación de ficheiros, expresións regulares, cifrado, redes, operacións de data e hora, acceso a primitivas comúns de Unix (como poll, fnmatch e glob), análise e comprobación de tipos. Os enlaces para acceder ás capacidades OpenGL, SDL2 e libui ofrécense por separado.

Exemplos de proxectos escritos na linguaxe Hare inclúen o microkernel Helios, o xestor de contrasinais Himitsu, o sistema de trazado de raios, o programa de cifrado de caixas, o daemon de bittorrent btqd, scheduled (un sistema semellante a cron), toothbrush (un cliente e... servidor (para o protocolo finger). Os plans futuros inclúen a estabilización da especificación da linguaxe e da biblioteca estándar, a implementación de compatibilidade con plataformas e arquitecturas que faltan e a adición de funcións de biblioteca para admitir TLS 1.2 e 1.3.

Exemplo de código en Hare: use crypto::sha256; usar codificación::hex; usar fmt; usar hash; useio; use os; exportar fn main() void = { const hash = sha256::sha256(); const file = os::open("main.ha"!); defer io::close(ficheiro); io::copiar(&hash, ficheiro)!; sexa a suma: [sha256::SIZE]u8 = [0...]; hash::sum(&hash, suma); hex::encode(os::stdout, sum)!; fmt::println()!; const greetings = [ “Ola, mundo!”, “¡Hola Mundo!”, “Γειά σου Κόσμε!”, “Ola, mundo!”, “こんにちは世界!”, ]; para (let i = 0z; i < len(saúdo); i += 1) { fmt::println(saúdo[i])!; }; sexa x: *int = alloc(42); fmt::printfln("x: {}", x)!; fmt::printfln("*x: {}", *x)!; libre (x); const file = os::open(os::args[1])!; defer io::close(ficheiro)!; let buffer: *[65535]u8 = alloc([0...]); defer free(buffer); const n = io::read(ficheiro, búfer)! como tamaño; io::write(os::stdout, buffer[..n])!; }; fn sort(elementos: []int) void = { ... }; @test fn sort() void = { let items = [5, 4, 3, 2, 1]; ordenar (elementos); for (permitir i = 1z; i < len(elementos); i += 1) { assert(elementos[i - 1] <= items[i], "a lista está sen ordenar"); }; };

Fonte: opennet.ru

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