Hare programavimo kalbos išleidimas 0.26

Drew DeVault, „Sway“ vartotojo aplinkos, „Aerc“ el. pašto kliento ir „SourceHut“ bendradarbiavimo kūrimo platformos autorius, išleido „Hare“ programavimo kalbos 0.26.0 versiją. „Hare“ pristatoma kaip sistemų programavimo kalba, panaši į C, bet paprastesnė už C. Kompiliatoriaus ir įrankių grandinės šaltinio kodas licencijuojamas pagal GPLv3 licenciją, o standartinis bibliotekos kodas – pagal MPL („Mozilla Public License“).

Kalba yra optimizuota sprendžiant žemo lygio problemas, tokias kaip operacinių sistemų, kompiliatorių, tinklo programų ir sistemos paslaugų kūrimas, kuriems reikalingas maksimalus našumas ir visiška vykdymo kontrolė. Kalba naudoja rankinį atminties valdymą ir statinio tipo sistemą, kurioje kiekvienam kintamajam turi būti aiškiai priskirtas konkretus tipas.

Programai paleisti pateikiamas minimalus vykdymo laikas, o plėtrai platinama standartinė funkcijų biblioteka, suteikianti prieigą prie pagrindinių operacinės sistemos sąsajų, taip pat siūlomos funkcijos, skirtos darbui su standartiniais algoritmais, protokolais ir formatais, įskaitant įrankius reguliariosioms išraiškoms naudoti ir šifravimui. Kuriant grafines programas, kuriamas „hare-wayland“ įrankių rinkinys, taip pat surišimai, leidžiantys pasiekti GTK, Vulkan, OpenGL, SDL3 ir libui galimybes.

Naujoje versijoje:

  • Pridėta ciklo konstrukcija „for(…){…} else {…}“ ir galimybė naudoti ciklą kaip išraišką reikšmei priskirti kintamajam „item = for(…){…}“. Kintamajam priskirta reikšmė gali būti grąžinta, kai ciklas nutraukiamas išraiška „break value“ arba nurodant „yield default_value“ prie ciklo pridėtame bloke „else{…}“, kuris iškviečiamas, jei ciklas nenutraukiamas naudojant funkciją „break“. const item = for (let sample .. items) { if (item.key == key) { break item; }; } else { yield -1; };
  • Pridėta galimybė naudoti „_“ reikšmės priskyrimą, kad būtų ignoruojamas klaidų apdorojimas (jei įvyksta klaida, teiginys nebus keliamas). _ = os::remove(«/kai kurie/failai»);
  • Pridėta galimybė naudoti „_“ reikšmę neįvardytiems laukams struktūrose kurti. Tokius laukus galima naudoti papildomam užpildymui. export type my_struct = struct @packed { x: u32, // offset: 0 _: u8, // offset: 4 y: u64, // offset: 5 };
  • Dabar galima aiškiai palikti kintamuosius ir laukus struktūrose neinicializuotoje būsenoje, priskiriant jiems reikšmę „@undefined“. Anksčiau kalba reikalavo, kad visi vietiniai ir globalūs kintamieji būtų inicializuojami kūrimo metu. Palikti juos neinicializuotus gali prireikti, kai kintamąjį reikia inicializuoti vėliau, o ne deklaravimo metu, pavyzdžiui, kai funkcijai perduodama rodyklė į kintamąjį, kurį funkcija turi inicializuoti. tegul x: my_object = @undefined;
  • Pridėtas „Dragonfly BSD“ operacinės sistemos palaikymas. Anksčiau buvo palaikomos „Linux“, „FreeBSD“, „NetBSD“ ir „OpenBSD“.

Šaltinis: opennet.ru

Добавить комментарий