Linguaggio di programmazione Nim versione 1.4.0

È 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