Den Drew DeVault, Auteur vun der Sway-Benotzerumgebung, dem Aerc-E-Mail-Client an der kollaborativer Entwécklungsplattform SourceHut, huet d'Versioun 0.26.0 vun der Programméiersprooch Hare erausbruecht. Hare gëtt als eng Systemprogramméiersprooch ugesinn, déi ähnlech wéi C ass, awer méi einfach wéi C. De Compiler- a Toolchain-Quellcode sinn ënner der GPLv3 lizenzéiert, an de Standardbibliothéikscode ass ënner der MPL (Mozilla Public License) lizenzéiert.
D'Sprooch ass optimiséiert fir Low-Level Probleemer ze léisen wéi d'Entwécklung vu Betribssystemer, Compilers, Netzwierkapplikatiounen a System Utilities déi maximal Leeschtung a voll Kontroll iwwer d'Ausféierung erfuerderen. D'Sprooch benotzt manuell Erënnerung Gestioun an engem statesch Typ System, an deem all Variabel muss explizit eng spezifesch Zort zougewisen ginn.
Fir d'Applikatioun ze lafen, gëtt e minimale Runtime geliwwert, a fir d'Entwécklung gëtt eng Standardbibliothéik vu Funktiounen verdeelt, déi Zougang zu de Basisinterfaces vum Betribssystem ubitt, souwéi Funktiounen ubidden fir mat Standardalgorithmen, Protokoller a Formater ze schaffen, inklusiv Tools fir regelméisseg Ausdréck a Verschlësselung ze benotzen. Fir d'Entwécklung vu grafeschen Uwendungen gëtt den Hare-wayland Toolkit entwéckelt, souwéi Bindungen fir Zougang zu de Fäegkeeten vun GTK, Vulkan, OpenGL, SDL3 a Libui.
An der neier Versioun:
- De "for(…){…} else {…}" Loop-Konstrukt an d'Méiglechkeet, eng Loop als Ausdrock ze benotzen, fir enger Variabel "item = for(…){…}" e Wäert zouzeweisen, gouf bäigefüügt. De Wäert, deen der Variabel zougewise gëtt, kann zréckginn ginn, wann d'Loop duerch den "break value"-Ausdrock ënnerbrach gëtt oder andeems "yield default_value" am "else{…}"-Block, deen un d'Loop ugehaange ass, spezifizéiert gëtt, deen opgeruff gëtt, wann d'Loop net duerch break ënnerbrach gëtt. const item = for (let sample .. items) { if (item.key == key) { break item; }; } else { yield -1; };
- D'Méiglechkeet gouf bäigefüügt, d'Wäertzouweisung "_" ze benotzen, fir d'Feelerbehandlung ze ignoréieren (wann e Feeler optrëtt, gëtt keng Behauptung generéiert). _ = os::remove(«/some/file»);
- D'Méiglechkeet gouf bäigefüügt, de Wäert "_" ze benotzen, fir onbenannt Felder a Strukturen ze erstellen. Sou Felder kënne fir zousätzlech Padding benotzt ginn. export type my_struct = struct @packed { x: u32, // offset: 0 _: u8, // offset: 4 y: u64, // offset: 5 };
- Et ass elo méiglech, Variabelen a Felder a Strukturen explizit an engem net initialiséierten Zoustand ze loossen, andeems hinnen de Wäert "@undefined" zougewise gëtt. Virdrun huet d'Sprooch verlaangt, datt all lokal a global Variabelen beim Erstelle initialiséiert goufen. Se net initialiséieren ze loossen kann néideg sinn, wann eng Variabel spéider initialiséiert muss ginn, net beim Deklaratiounszäitpunkt, zum Beispill, wann e Pointer op eng Variabel, déi d'Funktioun initialiséiere muss, un eng Funktioun weiderginn gëtt. loosst x: my_object = @undefined;
- Ënnerstëtzung fir den Dragonfly BSD Betribssystem gouf bäigefüügt. Virdru goufen Linux, FreeBSD, NetBSD an OpenBSD ënnerstëtzt.
Source: opennet.ru
