Nim programming language release 1.4.0

Isang bagong bersyon ng Nim system programming language ang inilabas, na nitong Setyembre ay ipinagdiwang ang isang taong anibersaryo nito. unang matatag na bersyon. Ang wika ay katulad sa syntax sa Python, at halos katulad ng C++ sa pagganap. Ayon kay FAQ Ang wika ay labis na humiram mula sa (sa pagkakasunud-sunod ng kontribusyon): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Gumagana kahit saan salamat sa kakayahang mag-compile sa C/C++/Objective-C/JS. Sinusuportahan nito mga macro, OOP, generics, pagbubukod, mainit na pagpapalit ng code at marami pang iba. Lisensya: MIT.

Ang pinakamahalagang pagbabago:

  • May bagong ORC garbage collector na gumagamit ng algorithm mula sa ARC, ngunit sa parehong oras ay pinangangasiwaan ang mga circular reference sa isang espesyal na paraan. Pinagana ng -gc:orc na opsyon. Tungkol sa mga pagkakaiba ng ARC/ORC mayroong isang mahusay na artikulo.

  • Ang isang mode para sa mahigpit na mga kahulugan ng function ay idinagdag, na nagbibigay-daan sa isang karagdagang pagsusuri para sa pagbabago ng bagay. Na-activate sa pamamagitan ng pragma {.experimental: "strictFuncs".} o sa pamamagitan ng --experimental:strictFuncs key.

  • Ang mula sa keyword ay maaari na ngayong gamitin bilang isang operator.

  • Idinagdag ang .noalias pragma. Nagmapa ito sa C restrict na keyword upang mapataas ang kahusayan na maibibigay ng keyword.

  • Ang mga partikular na babala ay maaari na ngayong gawing mga error sa pamamagitan ng --warningAsError[X]:on|off.

  • Bagong command: nim r main.nim [args...], na nag-compile at nagpapatakbo ng main.nim, at may kasamang --usenimcache upang ang resulta ay maiimbak sa $nimcache/main$exeExt, gamit ang parehong logic bilang nim c - r upang maalis mula sa recompilation kapag ang mga mapagkukunan ay hindi nagbago. Halimbawa:

nim r compiler/nim.nim --help # compiled sa unang pagkakataon
echo 'import os; echo getCurrentCompilerExe()' | nim r - # gumagana din ito
nim r compiler/nim.nim --fullhelp # nang walang recompilation
nim r β€”nimcache:/tmp main # binary na naka-save sa /tmp/main

  • Nagdagdag ng bagong pahiwatig -hint:msgOrigin, na magpapakita kung saan nakabuo ang compiler ng mga mensahe ng error/babala. Nakakatulong ito kapag hindi halata kung saan nanggaling ang mensahe.

  • Nagdagdag ng flag β€”backend:js|c|cpp|objc (o -b:js, atbp.) upang baguhin ang backend.

  • Idinagdag --usenimcache flag sa mga binary na output sa nimcache.

  • Inalis ang mga susi: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Ipinapakita na ngayon ng nimsuggest utility hindi lamang ang pre-declaration, kundi pati na rin ang lokasyon ng pagpapatupad para sa isang def request.

Bilang karagdagan, maraming mga pagbabago ang naidagdag sa karaniwang library at maraming mga pag-aayos ng bug.

Pinagmulan: linux.org.ru