Drew DeVault a prezentat limbajul de programare sistematic Hare

Drew DeVault, autorul mediului de utilizare Sway, al clientului de e-mail Aerc și al platformei de dezvoltare colaborativă SourceHut, a prezentat limbajul de programare Hare, pe care el și echipa sa l-au dezvoltat în ultimii doi ani și jumătate. Hare este prezentat ca un limbaj de programare de sistem, asemănător limbajului C, dar mai simplu. Printre principiile cheie de proiectare ale lui Hare se numără orientarea către simplificare și încrederea deplină în acțiunile programatorului (executarea exact a ceea ce este specificat, fără auto-interpretări și comportamente implicite), având la dispoziție instrumente auxiliare pentru identificarea erorilor și problemelor tipice.

Codurile sursă ale compilatorului și ale instrumentarului sunt distribuite sub licența GPLv3, iar codul bibliotecii standard sub licența MPL (Mozilla Public License). În prima lansare publică, este anunțată suportul pentru sistemele de operare Linux și FreeBSD pe platformele x86_64, aarch64 și riscv64, precum și utilizarea autonomă pentru a rula direct pe hardware fără un sistem de operare. În planuri se menționează suportul pentru sistemele de operare NetBSD, OpenBSD, Illumos, Haiku și Plan 9 și pentru platformele ppc64le, i686 și arm32.

Limbajul folosește gestionarea manuală a memoriei și un sistem de tipuri static, în care fiecare variabilă trebuie să aibă un tip specificat în mod explicit. Pentru executarea aplicației se atașează un runtime minim. Limbajul este optimizat pentru a rezolva sarcini de nivel scăzut, cum ar fi dezvoltarea sistemelor de operare, a compilatoarelor, a aplicațiilor de rețea și a utilitarelor de sistem, pentru care este necesară maximizarea performanței și controlul total asupra execuției.

Pentru dezvoltatori, a fost pregătită o bibliotecă standard de funcții, oferind acces la interfețele de bază ale sistemului de operare, algoritmi tipici și implementări ale protocoalelor și formatelor. Biblioteca acoperă domenii precum input/output, manipularea fișierelor, expresii regulate, criptografie, interacțiune de rețea, operații cu timp și date, acces la primitivele Unix tipice (de exemplu, poll, fnmatch și glob), parsing și validare a tipurilor. Separat, sunt oferite bindinguri pentru acces la capabilitățile OpenGL, SDL2 și libui.

Printre exemplele de proiecte scrise în limbajul Hare se numără microkernelul Helios, managerul de parole Himitsu, sistemul de raytracing, programul de criptare box, demonul bittorrent btqd, scheduled (echivalent cu sistemul cron), toothbrush (client și pentru protocolul finger). serverul Printre planurile de viitor se menționează stabilizarea specificației limbajului și a compunerii bibliotecii standard, implementarea suportului pentru platformele și arhitecturile lipsă, adăugarea funcțiilor bibliotecii pentru suportul TLS 1.2 și 1.3.

Exemplu de cod în limbajul 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»); }; };

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster