Izšel je Nim 2.2.8, sistemski programski jezik. Nim je statično tipiziran, preveden programski jezik s sintakso, ki jo navdihuje Python, in zmožnostmi metaprogramiranja, podobnimi Lispu. Prevaja se v jezike C, C++ in JavaScript, kar zagotavlja zmogljivost na ravni C z izraznostjo visokonivojskih jezikov. Koda projekta je licencirana pod licenco MIT.
Nimove funkcije vključujejo makro sistem, ki deluje na AST v času prevajanja, podporo za generično programiranje s koncepti, večkratno odpremo, deterministično upravljanje pomnilnika s podporo za več strategij (ARC/ORC, refc, mark-and-sweep), vgrajeno podporo za asinhrono programiranje (async/await) in FFI za enostavno integracijo s C/C++/JavaScript. Nim je pozicioniran kot sistemski jezik, primeren za razvoj od vgrajenih sistemov do spletnih sistemov.strežniki, s poudarkom na učinkovitosti, varnosti pomnilnika in udobju za razvijalce.
Izdaja 2.2.8 je izšla štiri mesece po različici 2.2.6 in vključuje 89 sprememb (commit) s popravki napak in izboljšavami. Glavna izboljšava izdaje je znatno povečanje stabilnosti privzetega alokatorja pomnilnika pri aktivni uporabi večnitnosti. Po besedah razvijalcev je potreba po rešitvi »-d:useMalloc« za večnitno kodo stvar preteklosti. Uporabnike spodbujamo, da posredujejo povratne informacije.
Med odpravljenimi napakami:
- SIGBUS pri iteraciji po konstantni tabeli zaradi prezgodnjega uničenja začasnih objektov;
- SIGSEGV z zaključnimi iteratorji;
- Nepravilno generiranje kode C pri inicializaciji .global znotraj metode;
- napaka pri obdelavi pri zapiranju iteratorja s try..except;
- Nepravilno popačenje imena v slogu C++ pri uporabi --debuginfo;
- setLen je počasen pri zmanjševanju velikosti zaporedja zaradi prekomernega čiščenja pomnilnika;
- pomanjkanje setLenUninit za način "—mm:refc";
- Obdelava prepisovanja izrazov se pri velikih datotekah ustavi;
- SIGSEGV pri uporabi različnih tipov z dodelitvijo objektom kopice v načinu refc;
- Nepravilen dostop do m_type v kavljih za generične ločene tipe pod ARC/ORC/ATOMICARC;
- sesutje prevajalnika pri podajanju nabora z "elementi" iz koncepta;
- rekurzivni koncepti so povzročili napako prevajalnika v segmentu;
- Nepravilno generiranje zahtev HTTPS prek proxyja HTTP v httpclientu;
- nedefinirano vedenje v operaciji shl;
- brez opozorila skrajša dolge celoštevilske literale;
- prevajalnik se sesuje zaradi številnih napačnih generičnih instancij;
- dodan način —styleCheck:warn.
Vir: opennet.ru
