Nim 2.2.8, un linguaghju di prugrammazione di sistemi, hè statu publicatu. Nim hè un linguaghju di prugrammazione compilatu è tippatu staticamente cù una sintassi ispirata da Python è capacità di metaprogrammazione simili à Lisp. Si compila in C, C++ è JavaScript, furnendu prestazioni di livellu C cù l'espressività di i linguaggi di altu livellu. U codice di u prugettu hè licenziatu sottu a licenza MIT.
E caratteristiche di Nim includenu un sistema di macro chì opera nantu à l'AST à u mumentu di a compilazione, supportu per a prugrammazione generica cù cuncetti, dispatch multiplu, gestione deterministica di a memoria cù supportu per strategie multiple (ARC/ORC, refc, mark-and-sweep), supportu async/await integratu per a prugrammazione asincrona, è FFI per una facile integrazione cù C/C++/JavaScript. Nim hè pusizionatu cum'è un linguaghju di sistema adattatu per u sviluppu da sistemi embedded à web.servitori, cù un enfasi nantu à l'efficienza, a sicurezza di a memoria è a cunvenienza di u sviluppatore.
A versione 2.2.8 hè ghjunta quattru mesi dopu à a versione 2.2.6 è include 89 commit cù correzioni di bug è miglioramenti. U miglioramentu principale di a versione hè un aumentu significativu di a stabilità di l'allocatore di memoria predefinitu quandu si usa attivamente u multithreading. Sicondu i sviluppatori, a necessità di a suluzione "-d:useMalloc" per u codice multithreading hè una cosa di u passatu. L'utilizatori sò incuraghjiti à furnisce feedback.
Trà i bug curretti:
- SIGBUS quandu si itereghja nantu à una tavula custante per via di a distruzzione prematura di l'uggetti tempuranei;
- SIGSEGV cù iteratori finali;
- Generazione di codice C incorretta durante l'inizializazione di .global in un metudu;
- trasfurmazione di l'errore infine in a chjusura di l'iteratore cù try..except;
- Manghjuscazione incorretta di u nome in stile C++ quandu si usa --debuginfo;
- setLen hè lentu quandu si diminuisce a dimensione di a sequenza per via di un svuotamentu eccessivu di a memoria;
- mancanza di setLenUninit per u modu "—mm:refc";
- U prucessu di riscrittura di termini si blocca nantu à i fugliali di grande dimensione;
- SIGSEGV quandu si utilizanu tipi distinti cù assignazione à oggetti di heap in modalità refc;
- Accessu incorrectu à m_type in hooks per tipi distinti generichi sottu ARC/ORC/ATOMICARC;
- Crash di u compilatore quandu si passa una tupla cù "items" da u cuncettu;
- I cuncetti recursivi anu causatu un segmentfault di u compilatore;
- Generazione incorretta di richieste HTTPS via proxy HTTP in httpclient;
- cumpurtamentu indefinitu in l'operazione shl;
- truncà i valori interi longhi senza preavvisu;
- U compilatore si blocca cù un numeru d'istanziazioni generiche incorrette;
- modu aghjuntu —styleCheck:warn.
Source: opennet.ru
