Drew DeVolt præsenterede programmeringssproget Hare

Drew DeVault, skaberen af brugergrænsefladen Sway, e-mailklienten Aerc og samarbejdsplatformen SourceHut, har præsenteret programmeringssproget Hare, som han og hans team har arbejdet på det seneste halvandet år. Hare præsenteres som et systemprogrammeringssprog, der er tættere på C-sproget, men enklere end C. Et af de centrale designprincipper for Hare er fokusering på at forenkle og maksimalt stole på programmørens handlinger (udføre præcis det, der er angivet, uden selvstændighed eller implicit adfærd), samtidig med at der tilbydes værktøjer til at identificere typiske fejl og problemer.

Kildeteksterne til kompilatoren og værktøjer distribueres under GPLv3-licensen, mens koden til standardbiblioteket er under MPL (Mozilla Public License). Den første offentlige udgivelse understøtter operativsystemerne Linux og FreeBSD på x86_64, aarch64 og riscv64-platforme, samt selvstændig brug til at køre på hardware uden operativsystem. Planerne nævner støtte til operativsystemerne NetBSD, OpenBSD, Illumos, Haiku og Plan 9 samt platformene ppc64le, i686 og arm32.

Sproget anvender manuel hukommelsesstyring og et statisk typesystem, hvor hver variabel tydeligt skal tildeles en bestemt type. For at køre applikationen er der knyttet et minimalt runtime. Sproget er optimeret til at løse lavniveauopgaver som udvikling af operativsystemer, kompilatorer, netværksapplikationer og systemværktøjer, hvor maksimal ydeevne og fuld kontrol over udførelsen er nødvendig.

For udviklere er der et standardbibliotek af funktioner, der giver adgang til grundlæggende grænseflader i operativsystemet, typiske algoritmer samt implementeringer af protokoller og formater. Biblioteket dækker områder som input/output, arbejde med filer, regulære udtryk, kryptering, netværk, tids- og datohåndtering, adgang til typiske Unix-primitiver (f.eks. poll, fnmatch og glob), parsning og typekontrol. Separat tilbydes bindinger til adgang til OpenGL-, SDL2- og libui-funktioner.

Som eksempler på projekter skrevet på programmeringssproget Hare nævnes mikrokerne Helios, password manageren Himitsu, systemet til ray tracing, krypteringsprogrammet box, bittorrent-daemonen btqd, scheduled (analog til cron-systemet), toothbrush (klient og for protokollen finger). server Blandt fremtidsplanerne er stabilisering af sprog-specifikationen og indholdet af standardbiblioteket, implementering af support til de manglende platforme og arkitekturer samt tilføjelse af bibliotekfunktioner til støtte for TLS 1.2 og 1.3.

Eksempel på kode i programmeringssproget 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»); }; };

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster