Drew DeVault ha presentato il linguaggio di programmazione di sistema Hare

Drew DeVault, autore dell'ambiente utente Sway, del client di posta Aerc e della piattaforma di sviluppo collaborativo SourceHut, ha presentato il linguaggio di programmazione Hare, a cui ha lavorato con la sua squadra negli ultimi due anni e mezzo. Hare viene presentato come un linguaggio di programmazione di sistema, simile al C, ma più semplice. Uno dei principali principi di progettazione di Hare è l'orientamento alla semplificazione e la piena fiducia nelle azioni del programmatore (eseguendo esattamente ciò che è specificato, senza iniziative personali e comportamenti impliciti), fornendo strumenti ausiliari per individuare errori e problemi comuni.

Il codice sorgente del compilatore e degli strumenti è distribuito sotto licenza GPLv3, mentre il codice della libreria standard è sotto licenza MPL (Mozilla Public License). Nella prima versione pubblica è dichiarato il supporto per i sistemi operativi Linux e FreeBSD su piattaforme x86_64, aarch64 e riscv64, oltre a un utilizzo autonomo per l'esecuzione su hardware senza sistema operativo. Nei piani è prevista la compatibilità con i sistemi operativi NetBSD, OpenBSD, Illumos, Haiku e Plan 9 e le piattaforme ppc64le, i686 e arm32.

Il linguaggio utilizza la gestione manuale della memoria e un sistema di tipi statici, dove ad ogni variabile deve essere esplicitamente assegnato un tipo specifico. Per l'esecuzione dell'applicazione viene allegato un runtime minimo. Il linguaggio è ottimizzato per affrontare compiti a basso livello, come lo sviluppo di sistemi operativi, compilatori, applicazioni di rete e utility di sistema, per le quali è richiesta la massima prestazione e il completo controllo sull'esecuzione.

Per gli sviluppatori è stata preparata una libreria standard di funzioni che fornisce accesso alle interfacce di base del sistema operativo, algoritmi comuni e implementazioni di protocolli e formati. La libreria copre aree come input/output, gestione dei file, espressioni regolari, crittografia, interazione di rete, operazioni su tempo e date, accesso a primitivi Unix comuni (come poll, fnmatch e glob), parsing e verifica dei tipi. Sono inoltre fornite binding per accedere alle funzionalità di OpenGL, SDL2 e libui.

Come esempi di progetti scritti nel linguaggio Hare, si citano il microkernel Helios, il gestore delle password Himitsu, il sistema di ray tracing, il programma di crittografia box, il demone bittorrent btqd, scheduled (analogo al sistema cron), toothbrush (client e per il protocollo finger). server Tra i piani futuri, si segnala la stabilizzazione delle specifiche del linguaggio e della composizione della libreria standard, l'implementazione del supporto per piattaforme e architetture mancanti, e l'aggiunta di funzioni di libreria per supportare TLS 1.2 e 1.3.

Ecco un esempio di codice nel linguaggio 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"); }; };

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster