È stata rilasciata una nuova versione del linguaggio di programmazione del sistema Nim, che questo settembre segna un anno dal suo rilascio. prima versione stabile. La sintassi è simile a Python e le prestazioni sono quasi come C++. Secondo FAQ il linguaggio prende in prestito pesantemente da (in ordine di peso del contributo): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Funziona ovunque grazie alla possibilità di compilare in C/C++/Objective-C/JS. Supporta macro, OLP, generici, eccezioni, sostituzione del codice a caldo e altro ancora. Licenza - MIT.
Le modifiche più significative:
-
Esiste un nuovo Garbage Collector ORC che utilizza l'algoritmo ARC ma gestisce i riferimenti circolari in un modo speciale. Abilitato con l'opzione --gc:orc. Informazioni sulle differenze ARC/ORC c'è un ottimo articolo.
-
È stata aggiunta una modalità di definizioni di funzioni rigorose, che include un controllo aggiuntivo per la mutabilità degli oggetti. Attivato tramite il pragma {.experimental: "strictFuncs".} o tramite l'opzione --experimental:strictFuncs.
-
La parola chiave from può ora essere utilizzata come operatore.
-
Aggiunto .noalias pragma. Si associa alla parola chiave C limit per aumentare l'efficienza che questa parola chiave può fornire.
-
Avvisi specifici ora possono essere trasformati in errori tramite --warningAsError[X]:on|off.
-
Nuovo comando: nim r main.nim [args...], che compila ed esegue main.nim e include --usenimcache in modo che il risultato sia memorizzato in $nimcache/main$exeExt, utilizzando la stessa logica di nim c - r da eliminare dalla ricompilazione, quando il codice sorgente non è cambiato. Esempio:
nim r compiler/nim.nim --help # compilato per la prima volta
echo 'importa sistema operativo; echo getCurrentCompilerExe()' | nim r - # anche questo funziona
nim r compiler/nim.nim --fullhelp # senza ricompilazione
nim r --nimcache:/tmp main # binario salvato in /tmp/main
-
Aggiunto un nuovo suggerimento --hint:msgOrigin che mostrerà dove il compilatore ha generato messaggi di errore/avviso. Questo aiuta quando non è ovvio da dove provenga il messaggio.
-
Aggiunto il flag --backend:js|c|cpp|objc (o -b:js, ecc.) per modificare il backend.
-
Aggiunto il flag --usenimcache per l'output dei file binari in nimcache.
-
Chiavi rimosse: --oldNewlines, --laxStrings, --oldast, --oldgensym
-
L'utilità nimsuggest ora mostra non solo la dichiarazione anticipata, ma anche la posizione dell'implementazione quando viene richiesta def.
Inoltre, sono state aggiunte molte modifiche alla libreria standard e molte correzioni di bug.
Fonte: linux.org.ru