Programmeerimiskeele Hare versioon 0.26 väljaanne

Drew DeVault, Sway kasutajakeskkonna, Aerc meilikliendi ja SourceHut koostööpõhise arenduse platvormi autor, on välja andnud programmeerimiskeele Hare versiooni 0.26.0. Hare esitleb end süsteemide programmeerimiskeelena, mis on sarnane C-keelele, kuid lihtsam. Kompilaatori lähtekood ja tööriistakomplekt on jagatud GPLv3 litsentsi alusel, samas kui standardraamatukogu kood on MPL (Mozilla Public License) litsentsi all.

Keel on optimeeritud madala taseme ülesannete lahendamiseks, nagu operatsioonisüsteemide, kompilaatorite, võrgurakenduste ja süsteemide utiliitide arendamine, kus nõutakse maksimaalset jõudlust ja täielikku kontrolli täitmise üle. Keeles kasutatakse käsitsi mälu haldust ja staatilist tüübivormi, kus igale muutujale peab olema selgelt määratud kindel tüüp.

Rakenduse töötamiseks on saadaval minimaalne runtime, samas kui arendamiseks jagatakse standardne funktsioonide raamatukogu, mis annab ligipääsu operatsioonisüsteemi põhiliidestele ning pakub funktsioone, mis hõlmavad tüüpiliste algoritmide, protokollide ja formaatide käsitlemist, sealhulgas vahendeid regulaarsete väljendite ja krüpteerimise kasutamiseks. Graafiliste rakenduste arendamiseks on arendamisel tööriistakomplekt hare-wayland ning ka sidemed, et pääseda juurde GTK, Vulkan, OpenGL, SDL3 ja libui võimalustele.

Uues versioonis:

  • Lisatud tsüklistruktuur «for(…){…} else {…}» ja võimalus kasutada tsüklit väljendina muutujale väärtuse määramiseks «item = for(…){…}». Väärtus, mis määratakse muutujale, võib olla tagastatud tsükli katkestamisel väljendiga «break väärtus» või kasutades «yield vaikimisi_väärtus» tsükliga seotud «else{…}» plokis, mis kutsutakse esile, kui tsükkel ei ole katkestatud läbi break. const item = for (let sample .. items) { if (item.key == key) { break item; }; } else { yield -1; };
  • Lisatud võimalus kasutada väärtuse määramist «_» vigade töötlemise ignoreerimiseks (vigade tekkimise korral ei toimu assertion). _ = os::remove(«/some/file»);
  • Lisatud võimalus kasutada väärtust «_» nimetamata väljade loomiseks struktuurides. Selliseid välju saab kasutada lisandite täitmiseks. export type my_struct = struct @packed { x: u32, // offset: 0 _: u8, // offset: 4 y: u64, // offset: 5 };
  • On võimaldatud jätta muutujaid ja välju struktuurides initsialiseerimata, määrates neile väärtuse „@undefined”. Varem nõudis keel, et kõik lokaalsed ja globaalsed muutujad oleksid loomise ajal initsialiseeritud. Initsialiseerimise jätmine võib osutuda vajalikuks, kui muutuja peab olema initsialiseeritud mitte deklareerimise ajal, vaid hiljem, näiteks siis, kui funktsioonile edastatakse näitaja muutuja suunamiseks, mida see funktsioon peab initsialiseerima. let x: my_object = @undefined;
  • Lisatud tugi operatsioonisüsteemile Dragonfly BSD. Varem toetasid süsteemid Linux, FreeBSD, NetBSD ja OpenBSD.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster