Drū DeVolts prezentēja sistēmu programmēšanas valodu Hare

Drew DeVault, Sway lietotāju vides, e-pasta klienta Aerc un sadarbības platformas SourceHut autors, ir iepazīstinājis ar programēšanas valodu Hare, pie kuras viņš kopā ar savu komandu strādājis pēdējos divus ar pusi gadus. Hare tiek piedāvāta kā sistēmu programmēšanas valoda, kas ir tuvu C valodai, bet ir vienkāršāka par C. Kā galvenais dizaina princips Hare ir vienkāršošana un pilnīga uzticēšanās programmista rīcībai (veikt tieši to, kas norādīts, bez iepriekšēja rīcības un neizpaustas uzvedības), ar rīkiem, kas palīdz atklāt tipiskas kļūdas un problēmas.

Kompilatora un rīku avota kodi tiek izplatīti ar GPLv3 licenci, bet standarta bibliotēkas kods - ar MPL (Mozilla Public License). Pirmajā publiskajā izlaidumā ir paziņota atbalsta nodrošināšana operētājsistēmām Linux un FreeBSD uz x86_64, aarch64 un riscv64 platformām, kā arī autonomai izmantošanai uz ierīcēm bez operētājsistēmas. Plānos ir pieminēts atbalsts operētājsistēmām NetBSD, OpenBSD, Illumos, Haiku un Plan 9 un ppc64le, i686 un arm32 platformām.

Valodā tiek izmantota manuāla atmiņas pārvaldība un statiska tipu sistēma, kurā katrai mainīgajai skaidri jābūt piešķirtam noteiktam tipam. Lai izpildītu lietojumprogrammu, tiek pievienots minimāls runtime. Valoda ir optimizēta zemu līmeņu uzdevumu risināšanai, piemēram, operētājsistēmu, kompilatoru, tīkla lietojumprogrammu un sistēmas utilītu izstrādei, kurām ir nepieciešama maksimāla veiktspēja un pilnīga izpildes kontrole.

Izstrādātājiem ir sagatavota standarta funkciju bibliotēka, kas nodrošina piekļuvi operētājsistēmas pamatinterfeisiem, tipisku algoritmu un protokolu un formātu īstenojumiem. Bibliotēka aptver tādas jomas kā ievade/izvade, failu apstrāde, regulāras izteiksmes, šifrēšana, tīkla mijiedarbība, laika un datumu operācijas, piekļuve tipiskajiem Unix primitīviem (piemēram, poll, fnmatch un glob), parsēšana un tipu pārbaude. Atsevišķi tiek sniegtas saites piekļuvei OpenGL, SDL2 un libui iespējām.

Kā piemēriem projektiem, kas uzrakstīti valodā Hare, var minēt mikro kodu Helios, paroli pārvaldītāju Himitsu, raytracing sistēmu, šifrēšanas programmu box, bittorrent serveri btqd, scheduled (analogs cron sistēmai), toothbrush (klients un protokols finger). servera No nākotnes plāniem tiek izcelta valodas specifikācijas stabilizācija un standarta bibliotēkas sastāvs, trūkstošo platformu un arhitektūru atbalsta realizācija, kā arī bibliotēku funkciju pievienošana, lai atbalstītu TLS 1.2 un 1.3.

Kods valodā 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], «saraksts nav kārtots»); }; };

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster