Drew DeVault, autori i ambientit përdorues Sway, klientit të postës Aerc dhe platformës së zhvillimit bashkëpunues SourceHut, publikoi versionin e gjuhës së programimit Hare 0.25.2. Numri i versionit formohet si 0.YY.Q, ku YY janë dy shifrat e fundit të vitit, dhe Q është numri i tremujorit, versioni i mëparshëm Hare 0.24.2 u publikua një vit më parë. Hare paraqitet si një gjuhë e programimit sistemor, e afërt me gjuhën C, por më e thjeshtë se C. Kodi burimor i kompilatorit dhe mjetet shpërndahen nën licencën GPLv3, ndërsa kodi i bibliotekës standarde nën licencën MPL (Mozilla Public License).
Gjuha është optimizuar për zgjidhjen e detyrave të nivelit të ulët, si zhvillimi i sistemeve operative, kompilerëve, aplikacioneve rrjet dhe mjeteve sistemore, për të cilat kërkohet arritja e performancës maksimale dhe kontrolli të plotë mbi ekzekutimin. Në këtë gjuhë aplikohet menaxhimi manual i memories dhe një sistem i tipave statik, ku çdo variabël duhet t'i caktohet një tip i caktuar.
Për ekzekutimin e aplikacionit ofrohet një runtime minimal, dhe për zhvillim shpërndahet biblioteka standarde e funksioneve, e cila ofron qasje në ndërfaqet bazë të sistemit operativ dhe gjithashtu ofron funksione për të punuar me algoritmet tipike, protokollet dhe formatet, duke përfshirë mjete për përdorimin e shprehjeve të rregullta dhe enkriptimin. Për zhvillimin e aplikacioneve grafike, zhvillohet mjeti hare-wayland, si dhe lidhje për qasje në mundësitë e GTK, Vulkan, OpenGL, SDL2 dhe libui.
Në këtë version të ri:
- Janë zgjeruar mundësitë e hyrjes/daljes me bufer. Në modul «memio::» është shtuar një modalitet fluksit «nonblocking». Janë ofruar opcione për konfigurimin e sjelljes në përpunimin e fundit të skedarit në bufio::scanner dhe modalitete menaxhimi të flukseve bufio::stream. Janë shtuar funksionet os::open_buffered dhe os::create_buffered.
- Në utilitarin «haredoc» është përfshirë mundësia e nxjerrjes së një përshkrimi të shkurtër të moduleve nga skedarët README dhe shfaqjes së tij gjatë listimit të moduleve.
- ĂshtĂ« realizuar mbĂ«shtetje pĂ«r Unix/POSIX API: io::fsync, io::fdatasync, unix::getrlimit, unix::setrlimit dhe fcntl (pĂ«rmes os::getflags dhe os::setflags). PĂ«r sistemin operativ NetBSD Ă«shtĂ« portuar mbĂ«shtetje pĂ«r kujtesĂ« tĂ« ndarĂ«.
- Në utilitarin hare është shtuar mbështetje për inkorporimin e trajtuesve të jashtëm, të cilët thirren përmes komandës nën «hare tool». Për shembull, përmes një trajtuesi të tillë është siguruar integrimi me mjetin «hare-update».
- ĂshtĂ« bĂ«rĂ« e detyrueshme pĂ«rpunimi i gabimeve nĂ« situata tĂ« mungesĂ«s sĂ« memories. ĂshtĂ« shtuar njĂ« tip primitiv i ri «nomem», qĂ« kthehet nga funksionet e alokimit tĂ« memories kur nuk Ă«shtĂ« e mundur tĂ« alokosh sasinĂ« e kĂ«rkuar tĂ« memories.
- API i përmirësuar për punën me datat dhe orët. Mundësitë për punën me zona kohore janë zgjeruar dhe është shtuar mbështetje për rregullat PETZ (POSIX Extending TZ). Shumë funksione janë transferuar nga moduli time::chrono në time::date.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r annotimet semantike tĂ« kodit, duke lejuar lidhjen e metadatat shtesĂ« me kodin, tĂ« cilat injorohen nga kompili, por mund tĂ« merren parasysh nga analizatori leksikor nĂ« bibliotekĂ«n standarde. #[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, };
- ĂshtĂ« shtuar utiliteti hare-update pĂ«r tĂ« thjeshtuar migrimin e kodit nĂ« versione tĂ« reja tĂ« mjeteve Hare, qĂ« pĂ«rmbajnĂ« ndryshime qĂ« dĂ«mtojnĂ« mbĂ«shtetje tĂ« prapaveprueshme. PĂ«r shembull, utiliteti mund tĂ« pĂ«rdoret pĂ«r tĂ« adaptuar kodin ekzistues pĂ«r aplikimin e trajtimit tĂ« detyrueshĂ«m tĂ« gabimeve gjatĂ« alokimit tĂ« memories, e cila Ă«shtĂ« shfaqur nĂ« versionin aktual.
Burimi: opennet.ru
