Drew DeVault predstavio je jezik sistemskog programiranja Hare

Drew DeVault, autor korisničkog okruženja Sway, email klijenta Aerc i platforme za zajednički razvoj SourceHut, predstavio je programski jezik Hare, na kojem je sa svojim timom radio posljednje dvije i pol godine. Hare se predstavlja kao jezik sistemskog programiranja, blizak jeziku C, ali jednostavniji od C. Među ključnim principima dizajniranja Hare-a ističe se usmjerenost na pojednostavljenje i potpuno povjerenje u rad programera (izvršavanje isključivo onoga što je navedeno, bez samoinicijative i neprimjerenog ponašanja), uz prisustvo pomoćnih alata za otkrivanje uobičajenih grešaka i problema.

Izvorni kod kompajlera i alata distribuira se pod GPLv3 licencom, dok se kod standardne biblioteke distribuira pod MPL (Mozilla Public License). U prvom javnom izdanju najavljena je podrška za operacijske sustave Linux i FreeBSD na platformama x86_64, aarch64 i riscv64, kao i samostalna upotreba za pokretanje direktno na hardveru bez operacijskog sustava. U planovima se spominje podrška za operacijske sustave NetBSD, OpenBSD, Illumos, Haiku i Plan 9 te platforme ppc64le, i686 i arm32.

U jeziku se koristi ručno upravljanje memorijom i statički sustav tipova, pri čemu svakoj varijabli mora biti jasno dodijeljen određeni tip. Za izvršenje aplikacije pridružuje se minimalni runtime. Jezik je optimiziran za rješavanje niskonivelskih zadataka, kao što su razvoj operacijskih sustava, kompajlera, mrežnih aplikacija i sistemskih alata, za koje je potrebna maksimalna izvedba i potpuna kontrola nad izvršavanjem.

Za programere je pripremljena standardna biblioteka funkcija koja pruža pristup osnovnim sučeljima operacijskog sustava, uobičajenim algoritmima i implementacijama protokola i formata. Biblioteka pokriva područja kao što su ulaz/izlaz, rad s datotekama, regularni izrazi, šifriranje, mrežna komunikacija, operacije s vremenom i datumima, pristup uobičajenim Unix primitivima (na primjer, poll, fnmatch i glob), parsiranje i provjera tipova. Posebno su dostupne veze za pristup mogućnostima OpenGL, SDL2 i libui.

Primjeri projekata napisanih na jeziku Hare uključuju mikrojezgro Helios, upravitelja lozinkama Himitsu, sustav praćenja zraka raytracing, program za šifriranje box, bittorrent-demona btqd, scheduled (analog sustava cron), toothbrush (klijent i za protokol finger). server U planovima za budućnost ističe se stabilizacija specifikacije jezika i sastava standardne knjižnice, realizacija podrške za nedostajuće platforme i arhitekture, dodavanje knjižničnih funkcija za podršku TLS 1.2 i 1.3.

Primjer koda na jeziku 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»); }; };

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster