Drū Devolta iepazīstināja ar Hare sistēmu programmēšanas valodu

Sway lietotāju vides, Aerc e-pasta klienta un sadarbības izstrādes platformas SourceHut autors Drū Devaults iepazīstināja ar programmēšanas valodu Hare, pie kuras viņš un viņa komanda ir strādājuši pēdējos divarpus gadus. Zaķis tiek reklamēts kā sistēmu programmēšanas valoda, kas ir līdzīga C, bet vienkāršāka nekā C. Starp galvenajiem Zaķa projektēšanas principiem ir norādīts, ka galvenā uzmanība tiek pievērsta vienkāršošanai un pilnīgai uzticēšanās programmētāja darbībām (darīt tieši to, kas norādīts, bez iniciatīvas un netiešas uzvedības), ar palīgrīkiem tipisku kļūdu un problēmu identificēšanai.

Kompilatora un rīku ķēdes pirmkods ir licencēts saskaņā ar GPLv3 licenci, un standarta bibliotēkas kods ir licencēts saskaņā ar MPL (Mozilla publiskā licence). Pirmajā publiskajā laidienā tika paziņots par atbalstu operētājsistēmām. Linux un FreeBSD uz x86_64, aarch64 un riscv64 platformām, kā arī atsevišķa ieviešana darbībai bez operētājsistēmas (bare metal). Plānos ietilpst atbalsts NetBSD, OpenBSD, Illumos, Haiku un Plan 9 operētājsistēmām, kā arī ppc64le, i686 un arm32 platformām.

Valoda izmanto manuālu atmiņas pārvaldību un statisku tipu sistēmu, kurā katram mainīgajam ir skaidri jāpiešķir konkrēts veids. Lai palaistu lietojumprogrammu, ir pievienots minimālais izpildes laiks. Valoda ir optimizēta zema līmeņa problēmu risināšanai, piemēram, operētājsistēmu, kompilatoru, tīkla lietojumprogrammu un sistēmas utilītu izstrādei, kam 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 pamata saskarnēm, standarta algoritmiem un protokolu un formātu implementācijām. Bibliotēka aptver tādas jomas kā ievade/izvade, failu manipulācijas, regulārās izteiksmes, šifrēšana, tīklošana, laika un datuma darbības, piekļuve parastajiem Unix primitīviem (piemēram, poll, fnmatch un glob), parsēšana un tipa pārbaude. Saistības, lai piekļūtu OpenGL, SDL2 un libui iespējām, tiek nodrošinātas atsevišķi.

Hare valodā rakstītu projektu piemēri ir Helios mikrokodols, Himitsu paroļu pārvaldnieks, staru izsekošanas sistēma, kastes šifrēšanas programma, btqd bittorrent dēmons, scheduled (cron līdzīga sistēma), zobu birste (klients un serveri (pirkstu protokolam). Nākotnes plānos ietilpst valodas specifikācijas un standarta bibliotēkas stabilizēšana, atbalsta ieviešana trūkstošajām platformām un arhitektūrām, kā arī bibliotēkas funkciju pievienošana TLS 1.2 un 1.3 atbalstam.

Koda piemērs programmā Hare: izmantojiet kripto::sha256; izmantot kodējumu::hex; izmantot fmt; izmantot hash; useio; izmantot os; eksportēt fn main() void = { const hash = sha256::sha256(); const fails = os::open("main.ha")!; atlikt io::aizvērt(fails); io::copy(&hash, fails)!; lai summa: [sha256::SIZE]u8 = [0...]; hash::sum(&hash, summa); hex::encode(os::stdout, summa)!; fmt::println()!; const greetings = [ “Sveika, pasaule!”, “¡Hola Mundo!”, “Γειά σου Κόσμε!”, “Sveika, pasaule!”, “こんにちは世界!”, ]; for (lai i = 0z; i < len(sveicieni); i += 1) { fmt::println(sveicieni[i])!; }; let x: *int = alloc(42); fmt::printfln("x: {}", x)!; fmt::printfln("*x: {}", *x)!; bezmaksas(x); const fails = os::open(os::args[1])!; atlikt io::aizvērt(failu)!; let buffer: *[65535]u8 = alloc([0...]); atlikt bezmaksas(buferis); const n = io::lasīt(fails, buferis)! kā izmērs; io::write(os::stdout, buffer[..n])!; }; fn sort(items: []int) void = { ... }; @test fn sort() void = { let items = [5, 4, 3, 2, 1]; šķirot(preces); for (lai i = 1z; i < len(vienumi); i += 1) { apgalvot(vienumi[i - 1] <= vienumi[i], “saraksts nav sakārtots”); }; };

Avots: opennet.ru

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster