Drew DeVolt představil jazyk systémového programování Hare

Drew DeVault, autor uživatelského prostředí Sway, e-mailového klienta Aerc a platformy pro spolupráci SourceHut, představil programovací jazyk Hare, na kterém pracoval se svým týmem poslední dva a půl roku. Hare je prezentován jako jazyk systémového programování, blízký jazyku C, ale jednodušší než C. Mezi klíčové principy návrhu Hare patří orientace na zjednodušení a úplná důvěra v akce programátora (provádět přesně to, co je uvedeno, bez svévolnosti a neexplicitního chování), s dostupnými nástroji k odhalení typických chyb a problémů.

Zdrojové kódy kompilátoru a nástrojů jsou distribuovány pod licencí GPLv3, zatímco kód standardní knihovny pod licencí MPL (Mozilla Public License). V prvním veřejném vydání byla oznámena podpora operačních systémů Linux a FreeBSD na platformách x86_64, aarch64 a riscv64, stejně jako samostatné použití pro spuštění na hardwaru bez operačního systému. V plánech se zmiňuje podpora operačních systémů NetBSD, OpenBSD, Illumos, Haiku a Plan 9 a platforem ppc64le, i686 a arm32.

Jazyk používá ruční správu paměti a statický systém typů, přičemž každé proměnné musí být explicitně přiřazen určitý typ. Pro provedení aplikace je připojen minimální runtime. Jazyk je optimalizován pro řešení nízkoúrovňových úloh, jako je vývoj operačních systémů, kompilátorů, síťových aplikací a systémových utilit, pro které je vyžadována maximální výkonnost a úplná kontrola nad prováděním.

Pro vývojáře je připravena standardní knihovna funkcí, která poskytuje přístup k základním rozhraním operačního systému, typovým algoritmům a implementacím protokolů a formátů. Knihovna pokrývá oblasti jako vstup/výstup, práce se soubory, regulární výrazy, šifrování, síťová komunikace, operace s časem a daty, přístup k typovým unixovým primitivům (například poll, fnmatch a glob), analýzu a kontrolu typů. Samostatně jsou k dispozici vazby pro přístup k funkcím OpenGL, SDL2 a libui.

Mezi příklady projektů napsaných v jazyce Hare patří mikrojádro Helios, správce hesel Himitsu, systém sledování paprsků raytracing, program pro šifrování box, bittorrentový démon btqd, scheduled (analog systému cron), toothbrush (klient a pro protokol finger). server Mezi plány do budoucna se uvádí stabilizace specifikace jazyka a složení standardní knihovny, realizace podpory chybějících platforem a architektur, přidání knihovních funkcí pro podporu TLS 1.2 a 1.3.

Příkladem kódu v jazyce 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»); }; };

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster