Hare – nowy język programowania systemowego chce być jak C
Języki programowania rodzą się i umierają i zaledwie część z nich jest w stanie zdobyć uznanie programistów. Warto jednak odnotować, że dziś światło ujrzał Hare – nowy język programowania systemowego, któremu warto przyjrzeć się bliżej.
Hare – nowy język chce zastąpić C
Przyciągać uwagę do Hare może już sam fakt, że mowa o języku niskopoziomowym, który ma służyć przede wszystkim jako systemowy język programowania. Jak wiadomo, segment ten jest bardzo statyczny, języki niskopoziomowe rozwijają się bardzo niespiesznie i nawet dobry następca dla C i C++, Rust, popularyzuje się opieszale.
Założenia stojące za Hare trudno uznać za skomplikowane – język ma ambicję być jak C, tylko być prostszym w nauce. W praktyce oznacza to, że mamy do czynienia z typowaniem statycznym, ręcznym zarządzanie pamięcią oraz możliwie jak najkrótszym rozruchem programów. Tak prezentuje się przykładowy program służący do generowania funkcji skrótu SHA-256:
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()!;
};
W bibliotece standardowej już dziś znajdziemy między innymi implementacje kryptografii, obsługę sieci, operacji I/O czy wyrażenia regularne POSIX Extended. Z użyciem Hare zostało już napisanych kilka ciekawych projektów, w tym menedżer sekretów Himitsu, mikrokernel x86 Helios czy demon sieci bittorernt btgd.
Ambitne plany
Oczywiście Hare jest na samym początku o swojej drogi, co zresztą podkreślają sami twórcy. Ich plany są ambitne – do osiągnięcia wersji 1.0 chcą znacząco rozszerzyć listę obsługiwanych architektury (na razie są to tylko x86_64, aarch64 i riscv64) oraz systemów operacyjnych (jak dotąd tylko Linux i FreeBSD) oraz dodanie obsługi TLS 1.2 i 1.3.
Szczegóły na temat języka Hare oraz dokumentacja całego dostępne są tutaj.