Limbajul de programare Nim versiunea 1.4.0

A fost lansată o nouă versiune a limbajului de programare a sistemului Nim, care în septembrie a sărbătorit un an de aniversare. prima versiune stabilă. Limbajul este similar în sintaxă cu Python și aproape ca C++ în performanță. Conform FAQ Limbajul împrumută foarte mult de la (în ordinea contribuției): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Funcționează peste tot datorită capacității de a compila în C/C++/Objective-C/JS. Susține macro-uri, OOP, generice, excepții, schimb de cod fierbinte și mult mai mult. Licență: MIT.

Cele mai semnificative modificări:

  • Există un nou colector de gunoi ORC care utilizează algoritmul de la ARC, dar în același timp gestionează referințele circulare într-un mod special. Activat de opțiunea -gc:orc. Despre diferențele ARC/ORC exista un articol grozav.

  • A fost adăugat un mod pentru definițiile stricte ale funcțiilor, care permite o verificare suplimentară pentru mutabilitatea obiectului. Activat prin pragma {.experimental: "strictFuncs".} sau prin tasta --experimental:strictFuncs.

  • Cuvântul cheie from poate fi folosit acum ca operator.

  • S-a adăugat .noalias pragma. Se mapează la cuvântul cheie C restrict pentru a crește eficiența pe care o poate oferi cuvântul cheie.

  • Avertismentele specifice pot fi acum transformate în erori prin --warningAsError[X]:on|off.

  • Comandă nouă: nim r main.nim [args...], care compilează și rulează main.nim și include --usenimcache, astfel încât rezultatul să fie stocat în $nimcache/main$exeExt, folosind aceeași logică ca nim c - r pentru a scăpa de la recompilare când sursele nu s-au schimbat. Exemplu:

nim r compiler/nim.nim --help # compilat pentru prima dată
echo 'import os; echo getCurrentCompilerExe()' | nim r - # funcționează și asta
nim r compiler/nim.nim --fullhelp # fără recompilare
nim r —nimcache:/tmp main # binar salvat în /tmp/main

  • S-a adăugat un nou indiciu -hint:msgOrigin, care va arăta unde a generat compilatorul mesajele de eroare/avertisment. Acest lucru ajută atunci când nu este evident de unde a venit mesajul.

  • S-a adăugat flag —backend:js|c|cpp|objc (sau -b:js etc.) pentru a schimba backend-ul.

  • S-a adăugat --usenimcache flag pentru a ieși binare în nimcache.

  • Cheile eliminate: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Utilitarul nimsuggest arată acum nu numai pre-declarația, ci și locația de implementare pentru o solicitare def.

În plus, au fost adăugate multe modificări bibliotecii standard și multe remedieri de erori.

Sursa: linux.org.ru