Lëshimi i gjuhës së programimit Hare 0.26

Drew DeVault, autori i mjedisit të përdoruesit Sway, klientit të postës Aerc dhe platformës për zhvillim të përbashkët SourceHut, publikoi versionin 0.26.0 të gjuhës së programimit Hare. Hare paraqitet si një gjuhë programimi sistemore, e ngjashme 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 realizimin e aplikacionit ofrohet një runtime minimal, ndërsa për zhvillim shpërndahet një bibliotekë standarde funksionesh, e cila siguron akses në ndërfaqet bazë të sistemit operativ, si dhe ofron funksione për punë me algoritme tipike, protokolle dhe formate, duke përfshirë mjete për përdorimin e shprehjeve të rregullta dhe enkriptimeve. Për zhvillimin e aplikacioneve grafike, po zhvillohet mjetet e hare-wayland, si dhe lidhje për akses në mundësitë e GTK, Vulkan, OpenGL, SDL3 dhe libui.

Në këtë version të ri:

  • ËshtĂ« shtuar struktura e ciklit «for(
){
} else {
}» dhe mundĂ«sia e pĂ«rdorimit tĂ« ciklit si njĂ« shprehje pĂ«r caktimin e vlerĂ«s pĂ«r njĂ« variabĂ«l «item = for(
){
}». Vlera qĂ« do t'i caktohet variablĂ«s mund tĂ« kthehet nĂ« rast tĂ« ndĂ«rprerjes sĂ« ciklit me shprehjen «break vlerë» ose pĂ«rmes pĂ«rcaktimit «yield vlerĂ«_pĂ«r_kĂ«tu» nĂ« bllokun e bashkuar me ciklin «else{
}», i cili thirret nĂ«se cikli nuk Ă«shtĂ« ndĂ«rprerĂ« pĂ«rmes break. const item = for (let sample .. items) { if (item.key == key) { break item; }; } else { yield -1; };
  • Shtuar mundĂ«sinĂ« e pĂ«rdorimit tĂ« atribuimit tĂ« vlerĂ«s «_» pĂ«r tĂ« injoruar pĂ«rpunimin e gabimeve (nĂ« rast se ndodh njĂ« gabim, nuk do tĂ« ndodhĂ« asnjĂ« assertion). _ = os::remove(«/some/file»);
  • Shtuar mundĂ«sinĂ« e pĂ«rdorimit tĂ« vlerĂ«s «_» pĂ«r krijimin e fushave pa emĂ«r nĂ« struktura. KĂ«to fusha mund tĂ« pĂ«rdoren pĂ«r mbushje shtesĂ«. export type my_struct = struct @packed { x: u32, // offset: 0 _: u8, // offset: 4 y: u64, // offset: 5 };
  • Realizuar mundĂ«sinĂ« e lĂ«nies eksplicite tĂ« variablave dhe fushave nĂ« struktura nĂ« njĂ« gjendje tĂ« pa inicializuar, pĂ«rmes atribuimit tĂ« vlerĂ«s «@undefined». MĂ« parĂ«, gjuha kĂ«rkonte qĂ« tĂ« gjithĂ« variablat lokalĂ« dhe globalĂ« tĂ« ishin tĂ« inicializuar gjatĂ« krijimit. LĂ«nia pa inicializim mund tĂ« jetĂ« e nevojshme kur njĂ« variabĂ«l duhet tĂ« inicializohet jo gjatĂ« shpalljes, por mĂ« vonĂ«, pĂ«r shembull, kur njĂ« tregues pĂ«r njĂ« variabĂ«l i jepet funksionit, tĂ« cilin ky funksion duhet ta inicializojĂ«. let x: my_object = @undefined;
  • Shtuar mbĂ«shtetje pĂ«r sistemin operativ Dragonfly BSD. MĂ« parĂ«, ishin mbĂ«shtetur Linux, FreeBSD, NetBSD dhe OpenBSD.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster