È disponibile una nuova versione del linguaggio di programmazione di sistema Nim. Presenta alcune incompatibilità parziali con la versione 1.0, ad esempio a causa di una conversione dei tipi più rigorosa. Tuttavia, esiste un flag per questo —useVersion:1.0.
La principale novità è un nuovo garbage collector, attivabile con l'opzione —gc:arc. L'autore del linguaggio, Andreas Rumpf, ha intenzione di scrivere un articolo dettagliato sui vantaggi di ARC, ma nel frattempo propone di dare un'occhiata al suo intervento a FOSDEM, dove sono mostrati i risultati dei benchmark.
- Il compilatore ora supporta l'opzione —asm per facilitare lo studio del codice assembly generato.
- Il pragma align può essere utilizzato per variabili e campi di oggetti, simile a alignas in C/C++.
- =sink è ora un operatore opzionale. Il compilatore può ora utilizzare una combinazione di =destroy e copyMem per uno spostamento efficiente degli oggetti.
- Le conversioni a numeri interi senza segno non vengono verificate a runtime. Maggiori dettagli in https://github.com/nim-lang/RFCs/issues/175
- Una nuova sintassi per lvalue: var b {.byaddr.} = expr, attivabile tramite import std/decls
- Il compilatore supporta una nuova chiave —panics:on, che trasforma errori a runtime come IndexError o OverflowError in errori fatali, che non possono essere catturati tramite try. Questo può migliorare l'efficienza a runtime e la dimensione del programma.
- Il codice JS generato utilizza solo spazi al posto della mescolanza di spazi e tabulazioni.
- Il compilatore ora include il supporto per il pragma .localPassc, che consente di gestire opzioni speciali del backend C(++) per il file C(++) generato dall'attuale modulo Nim.
- Nimpretty ora non accetta argomenti negativi per la configurazione dell'indentazione, poiché ciò causava problemi ai file.
- Sono stati aggiunti nuovi macro (collect, dup, capture), attivabili tramite import sugar.
Inoltre, sono stati aggiunti numerosi cambiamenti alla libreria standard e molte correzioni di bug.
Fonte: linux.org.ru
