Drew DeVault, Sway kasutajaliidese, Aerc meilikliendi ja SourceHut koostööplatvormi autor, avaldas programmeerimiskeele Hare versiooni 0.25.2. Versiooni number koosneb massiivist 0.YY.Q, kus YY on aasta kahe viimase numbri ja Q on kvartali number, eelmine versioon Hare 0.24.2 ilmus aasta tagasi. Hare on mõeldud süsteemide programmeerimiseks, olles sarnane C-keelele, kuid lihtsam kui C. Kompilaatori ja tööriistade allikasood 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äitmiseks on pakutud minimaalne runtime, arendamiseks on saadaval standardne funktsioonide raamatukogu, mis annab juurdepääsu operatsioonisüsteemi põhiliidesele ning pakub funktsioone tüüpiliste algoritmide, protokollide ja formaatide töötlemiseks, sealhulgas vahendeid regulaaravaldiste ja krüpteerimise rakendamiseks. Graafikarakenduste arendamiseks on välja töötatud tööriistade komplekt hare-wayland ning sidemed, et pääseda juurde GTK, Vulkan, OpenGL, SDL2 ja libui võimalustele.
Uues versioonis:
- Puhvri sissetuleku ja väljunde võimalusi on laiendatud. Moodulisse "memio::" on lisatud "nonblocking" voogude režiim. Pakutakse valikuid, et seadistada käitumist failide lõpu töötlemisel bufio::scanner'is ja puhvritel voogude haldamise režiime bufio::stream'is. Lisatud on funktsioonid os::open_buffered ja os::create_buffered.
- Utiliidis "haredoc" on rakendatud võimalus tõmmata README-failidest moodulite lühikirjeldus ja kuvada see moodulite loendi väljundis.
- Toetatakse Unix/POSIX API-d: io::fsync, io::fdatasync, unix::getrlimit, unix::setrlimit ja fcntl (os::getflags ja os::setflags kaudu). Operatsioonisüsteemile NetBSD on portitud jagatud mälu tugi.
- Hare utiliidi on lisatud välistöötlejate sisestamise tugi, mida kutsutakse esile alamsõnaga „hare tool“. Näiteks, sellise töötleja abil on tagatud integreerimine tööriista „hare-update“.
- Vigade töötlemine mälu nappuse olukordades on muudetud kohustuslikuks. Uus primitiivne tüüp „nomem“ on lisatud, mida mälu eraldamise funktsioonid tagastavad, kui nõutava mälu mahtu ei ole võimalik eraldada.
- API kuupäevade ja aja käsitlemiseks on parendatud. Aja tsoonide käsitlemise võimalusi on laiendatud ja lisatud PETZ reeglite tugi (POSIX Extending TZ). Paljud funktsioonid on viidud moodulist time::chrono moodulisse time::date.
- Koodi semantiliste annotatsioonide tugi on lisatud, võimaldades lisada koodile täiendavaid metaandmeid, mida kompilaator ignoreerib, kuid mida leksikaalne analüsaator võib standardraamatukogus arvesse võtta. #[json::gen] export type player = struct { name: str, #[json::field(name = «X», omit_null=true)] x: *f64, #[json::field(name = «Y», omit_null=true)] y: *f64, };
- Lisatud on utiliit hare-update, et lihtsustada koodi migratsiooni uutele versioonidele Hare tööriistadest, mis sisaldavad muudatusi, mis rikuvad tagasipööratavust. Näiteks saab utiliiti kasutada olemasoleva koodi kohandamiseks uute mälu eraldamise vigade töötlemise nõuete rakendamiseks, mis ilmusid praeguses väljas.
Allikas: opennet.ru
