rilascio del linguaggio di programmazione di sistema . Il linguaggio Nim utilizza la tipizzazione statica ed è stato progettato tenendo in considerazione Pascal, C++, Python e Lisp. Il codice sorgente scritto in Nim viene compilato in un rappresentazione in C, C++ o JavaScript. Successivamente, il codice C/C++ generato viene compilato in un file eseguibile utilizzando un qualsiasi compilatore disponibile (clang, gcc, icc, Visual C++), il che consente di ottenere prestazioni simili a quelle del C, escludendo i costi associati all'esecuzione del garbage collector. Analogamente a Python, Nim utilizza l'indentazione come delimitatore di blocchi. Supporta gli strumenti di metaprogrammazione e offre possibilità per la creazione di linguaggi specifici per domini (DSL). Codice del progetto sotto licenza MIT.
Tra le modifiche significative nella nuova versione:
- Implementato un nuovo garbage collector («—gc:arc»).
- Nel modulo «» sono stati aggiunti nuovi macro collect, dup e capture.
- Aggiunto un nuovo macro «with».
- Sono state apportate numerose nuove chiamate alla libreria standard, inclusi strformat.fmt, strtabs.clear, browsers.osOpen, typetraits.tupleLen, typetraits.genericParams, os.normalizePathEnd, times.fromUnixFloat, os.isRelativeTo, times.isLeapDay, net.getPeerCertificates, jsconsole.trace, jsconsole.table, jsconsole.exception, sequtils.countIt, ecc.
- Aggiunti nuovi moduli std/stackframes e std/compilesettings.
- Nel compilatore sono state aggiunte le opzioni «—asm» (per l'analisi del codice assembler generato) e «—panics:on» per forzare l'uscita in caso di errori IndexError e OverflowError, senza possibilità di intercettazione dal gestore «try».
- Accelerata la determinazione dei possibili overflow dei buffer.
Fonte: opennet.ru
