Drew DeVault, autori i mjedisit përdorues Sway, klientit të postës Aerc dhe platformës së bashkëpunimit SourceHut, publikoi versionin 0.24.2 të gjuhës së programimit Hare (numri i versionit formohet si 0.YY.Q, ku YY janë dy shifrat e fundit të vitit, dhe Q është numri i tremujorit). Hare paraqitet si një gjuhë programimi sistemore e afërt me gjuhën C, por më e thjeshtë se C. Kodi burimor i kompilatorit dhe mjeteve shpërndahet 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:
- Shtuar mbështetje për sistemin operativ NetBSD (përveç OpenBSD, FreeBSD dhe Linux që ishin mbështetur më parë).
- Shtuar sintaksën për të definuar ciklet 'for-each', që lehtësojnë përshkrimin e elementeve të array-ve dhe slice-ve. let items = [1, 2, 3, 4, 5]; for (let item .. items) { fmt::println(item)!; };
- Ofrohet mundësia për të definuar parametra opsionalë të funksioneve, ku vlera standarde përcaktohet gjatë definimit të funksionit. fn example(x: int, y: int = 34) void = { // ... }; example(12); // ekvivalente me thirrjen example(12, 34);
- Rritur performanca e modulit bufio dhe API-ve të lidhura, të cilat përdorin input/output të buferizuar, si unix::resolvconf, unix::hosts dhe unix::passwd.
- Në modul 'regex::', në shprehjet e rregullta, ofrohet mundësia e përdorimit të modeleve si '(ha|py|sh)' për të listuar disa variante për zgjedhje.
- Shtuar mbështetje për memorjen e ndarë (shm_open) dhe mekanizmin memfd, i cili lejon identifikimin e një zone memorjeje përmes një deskit të skedarëve të kaluar midis proceseve. Memorja e ndarë, e cila mund të përdoret për ndërveprimin midis proceseve dhe brenda proceseve, siç është tashmë e angazhuar në implementimin e klientit dhe server Wayland hare-wayland.
- Shtuar funksionet kriptografike crypto::ec, crypto::ecdh dhe crypto::ecdsa.
Burimi: opennet.ru
