Nova versio de la programlingvo Nim-sistema estis publikigita, kiu ĉi-septembre festis sian unujaran datrevenon. unua stabila versio. La lingvo estas simila en sintakso al Python, kaj preskaŭ kiel C++ en efikeco. Laŭ Oftaj Demandoj La lingvo multe pruntas de (en ordo de kontribuo): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Funkcias ĉie danke al la kapablo kompili en C/C++/Objective-C/JS. Ĝi subtenas makrooj, OOP, generikoj, esceptoj, varma kodo interŝanĝo kaj multe pli. Licenco: MIT.
La plej signifaj ŝanĝoj:
-
Estas nova ORC rubokolektanto kiu uzas la algoritmon de ARC, sed samtempe pritraktas cirkulajn referencojn en speciala maniero. Ebligita per la opcio -gc:orc. Pri la diferencoj ARC/ORC estas bonega artikolo.
-
Reĝimo por striktaj funkciodifinoj estis aldonita, kiu ebligas kroman kontrolon por objektoŝanĝebleco. Aktivigite per la pragma {.experimental: "strictFuncs".} aŭ per la klavo --experimental:strictFuncs.
-
La ŝlosilvorto from nun povas esti uzata kiel operatoro.
-
Aldonita .noalias pragma. Ĝi mapas al la ŝlosilvorto C-limigi por pliigi la efikecon, kiun la ŝlosilvorto povas provizi.
-
Specifaj avertoj nun povas esti igitaj eraroj per --warningAsError[X]:on|off.
-
Nova komando: nim r main.nim [args...], kiu kompilas kaj rulas main.nim, kaj inkluzivas --usenimcache tiel ke la rezulto estas konservita en $nimcache/main$exeExt, uzante la saman logikon kiel nim c - r forigi el rekompilo kiam la fontoj ne ŝanĝiĝis. Ekzemplo:
nim r compiler/nim.nim --help # kompilita unuafoje
echo 'import os; echo getCurrentCompilerExe()' | nim r - # ankaŭ ĉi tio funkcias
nim r compiler/nim.nim --fullhelp # sen rekompilo
nim r —nimcache:/tmp ĉefa # binaro konservita en /tmp/main
-
Aldonis novan sugeston -hint:msgOrigin, kiu montros kie la kompililo generis erarajn/avertajn mesaĝojn. Ĉi tio helpas kiam ne estas evidente de kie venis la mesaĝo.
-
Aldonita flago —backend:js|c|cpp|objc (aŭ -b:js, ktp.) por ŝanĝi la backend.
-
Aldonita --usenimcache flago por eligi binarojn al nimcache.
-
Ŝlosiloj forigitaj: --oldNewlines, --laxStrings, --oldast, --oldgensym
-
La nimsuggest-ilaĵo nun montras ne nur la antaŭdeklaron, sed ankaŭ la efektiviglokon por def-peto.
Krome, multaj ŝanĝoj estis aldonitaj al la norma biblioteko kaj multaj eraroj korektoj.
fonto: linux.org.ru