Drew DeVolt apresentou a linguagem de programação de sistemas Hare.

Drew DeVault, autor do ambiente de usuário Sway, do cliente de e-mail Aerc e da plataforma de desenvolvimento colaborativo SourceHut, apresentou a linguagem de programação Hare, na qual ele e sua equipe trabalharam nos últimos dois anos e meio. Hare é apresentada como uma linguagem de programação de sistema, próxima à linguagem C, mas mais simples que C. Entre os principais princípios de design do Hare está a ênfase na simplificação e total confiança nas ações do programador (executar exatamente o que está especificado, sem iniciativa própria e comportamento implícito), com ferramentas auxiliares para identificar erros e problemas típicos.

Os códigos-fonte do compilador e das ferramentas são distribuídos sob a licença GPLv3, enquanto o código da biblioteca padrão está sob a licença MPL (Mozilla Public License). Na primeira versão pública, foram anunciados suporte para os sistemas operacionais Linux e FreeBSD nas plataformas x86_64, aarch64 e riscv64, além de uso autossuficiente para execução em hardware sem sistema operacional. Os planos incluem suporte para os sistemas operacionais NetBSD, OpenBSD, Illumos, Haiku e Plan 9, e plataformas ppc64le, i686 e arm32.

A linguagem utiliza gerenciamento manual de memória e um sistema de tipos estáticos, onde cada variável deve ter um tipo definido atribuído explicitamente. Para a execução do aplicativo, um runtime mínimo é anexado. A linguagem é otimizada para resolver tarefas de baixo nível, como desenvolvimento de sistemas operacionais, compiladores, aplicativos de rede e utilitários de sistema, onde é necessário alcançar o máximo desempenho e controle total sobre a execução.

Para os desenvolvedores, uma biblioteca padrão de funções está disponível, fornecendo acesso a interfaces básicas do sistema operacional, algoritmos típicos e implementações de protocolos e formatos. A biblioteca abrange áreas como entrada/saída, manipulação de arquivos, expressões regulares, criptografia, comunicação de rede, operações com tempos e datas, acesso a primitivos Unix típicos (por exemplo, poll, fnmatch e glob), parsing e verificação de tipos. Bindings para acessar recursos do OpenGL, SDL2 e libui são fornecidos separadamente.

Como exemplos de projetos escritos na linguagem Hare, mencionam-se o microkernel Helios, o gerenciador de senhas Himitsu, o sistema de rastreamento raytracing, o programa de criptografia box, o daemon bittorrent btqd, o scheduled (semelhante ao sistema cron), o toothbrush (cliente e para o protocolo finger). servidor Nos planos futuros, destaca-se a estabilização da especificação da linguagem e do conjunto da biblioteca padrão, a implementação do suporte para plataformas e arquiteturas faltantes, e a adição de funções de biblioteca para suportar TLS 1.2 e 1.3.

Exemplo de código na linguagem 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], «list is unsorted»); }; };

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster