A apărut o nouă versiune a limbajului de programare sistem Nim, care în această septembrie împlinește un an de la lansare versiunea stabilă inițială. Prin sintaxă, limba este asemănătoare cu Python, iar prin performanță este aproape la fel ca C++. Conform Întrebări frecvente limbajul împrumută mult din (în ordinea importanței contribuției): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Funcționează oriunde datorită capacității de compilare în C/C++/Objective-C/JS. Suportă macro-uri, OOP, generice, excepții, înlocuirea la cald a codului și multe altele. Licența este MIT.
Cele mai semnificative modificări:
-
A apărut un nou colector de gunoi ORC, care folosește un algoritm din ARC, dar procesează în mod special referințele circulare. Se activează cu opțiunea —gc:orc. Despre diferențele ARC/ORC există un articol excelent.
A fost adăugat un mod de definiții stricte pentru funcții, care include o verificare suplimentară a mutabilității obiectelor. Se activează prin pragma {.experimental: "strictFuncs".} sau prin cheia —experimental:strictFuncs.
Cuvântul cheie from poate fi acum folosit ca operator.
A fost adăugată pragma .noalias. Aceasta corespunde cu cuvântul cheie C restrict, pentru a îmbunătăți eficiența pe care o poate oferi acest cuvânt.
Avertizările specifice pot fi acum transformate în erori prin —warningAsError[X]:on|off.
Comanda nouă: nim r main.nim [args…], care compilează și rulează main.nim, și include —usenimcache, astfel încât rezultatul să fie salvat în $nimcache/main$exeExt, folosind aceeași logică ca nim c -r pentru a evita recompilarea, 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 — # și asta funcționează
nim r compiler/nim.nim —fullhelp # fără recompilare
nim r —nimcache:/tmp main # binarul salvat în /tmp/main
A fost adăugată o nouă sugestie —hint:msgOrigin, care va arăta unde compilatorul a generat mesaje de eroare/avertizare. Acest lucru ajută atunci când nu este evident de unde provine mesajul.
A fost adăugat un steag —backend:js|c|cpp|objc (sau -b:js etc.) pentru a schimba backend-ul.
A fost adăugat un steag —usenimcache pentru a ieși binarele în nimcache.
Au fost eliminate cheile: —oldNewlines, —laxStrings, —oldast, —oldgensym
Utilitarul nimsuggest acum arată nu doar declarația preliminară, ci și locația implementării la cererea def.
În plus, au fost adăugătoare o mulțime de modificări în biblioteca standard și numeroase corecții de erori.
Sursa: linux.org.ru
