Drew DeVault predstavil jazyk systémového programovania Hare

Drew DeVault, autor používateľského prostredia Sway, emailového klienta Aerc a platformy na spoluprácu SourceHut, predstavil programovací jazyk Hare, na ktorom pracoval so svojím tímom posledné dva a pol roka. Hare sa predstavil ako jazyk systémového programovania, blízky jazyku C, ale jednoduchší než C. Z kľúčových princípov dizajnu Hare sa uvádza orientácia na zjednodušenie a úplnú dôveru v akcie programátora (vykonávať presne to, čo je uvedené, bez samostatného konania a neexplicitného správania), pričom sú k dispozícii pomocné nástroje na identifikáciu typických chýb a problémov.

Zdroje pre kompilátor a nástroje sú distribuované pod licenciou GPLv3, zatiaľ čo kód štandardnej knižnice pod licenciou MPL (Mozilla Public License). V prvom verejnom vydaní je deklarovaná podpora operačných systémov Linux a FreeBSD na platformách x86_64, aarch64 a riscv64, ako aj samostatné použitie na prevádzku nad hardvérom bez operačného systému. V pláne je zmienka o podpore operačných systémov NetBSD, OpenBSD, Illumos, Haiku a Plan 9 a platformách ppc64le, i686 a arm32.

Jazyk používa manuálne spravovanie pamäte a statický systém typov, pričom každej premennej musí byť explicitne priradený konkrétny typ. Na vykonanie aplikácie je pripojený minimálny runtime. Jazyk je optimalizovaný na riešenie nízkoúrovňových úloh, ako je vývoj operačných systémov, kompilátorov, sieťových aplikácií a systémových utilít, kde je potrebné dosiahnuť maximálny výkon a úplnú kontrolu nad vykonávaním.

Pre vývojárov bola pripravená štandardná knižnica funkcií, ktorá poskytuje prístup k základným rozhraním operačného systému, typovým algoritmom a implementáciám protokolov a formátov. Knižnica pokrýva oblasti ako vstup/výstup, práca so súbormi, regulárne výrazy, šifrovanie, sieťová interakcia, operácie s časom a dátumami, prístup k typovým Unix-primitívam (napríklad poll, fnmatch a glob), parsovanie a overovanie typov. Osobitne sú poskytnuté väzby pre prístup k možnostiam OpenGL, SDL2 a libui.

Medzi príkladmi projektov, ktoré boli napísané v jazyku Hare, sú mikrokernel Helios, správca hesiel Himitsu, systém raytracing, program na šifrovanie box, bittorrentový démon btqd, scheduled (podobne ako systém cron), toothbrush (klient a pre protokol finger). server Do plánov do budúcna patrí stabilizácia špecifikácie jazyka a obsahu štandardnej knižnice, implementácia podpory chýbajúcich platforiem a architektúr, pridanie knižničných funkcií na podporu TLS 1.2 a 1.3.

Príklad kódu v jazyku 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

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster