Izdaja programskega jezika Nim 2.2.8

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

Dodaj komentar