Vrystelling van die Nim 1.4.0-programmeertaal

'n Nuwe weergawe van die Nim-stelselprogrammeertaal is vrygestel, wat hierdie September sy eenjarige bestaansjaar gevier het. eerste stabiele weergawe. Die taal is soortgelyk in sintaksis aan Python, en amper soos C++ in prestasie. Volgens FAQ Die taal leen baie van (in volgorde van bydrae): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Werk oral danksy die vermoë om saam te stel in C/C++/Objective-C/JS. Dit ondersteun makro's, OOP, generiese, uitsonderings, warm kode ruil en baie meer. Lisensie: MIT.

Die belangrikste veranderinge:

  • Daar is 'n nuwe ORC-vullisverwyderaar wat die algoritme van ARC gebruik, maar terselfdertyd omsendbriefverwysings op 'n spesiale manier hanteer. Geaktiveer deur die -gc:orc opsie. Oor die LNR/ORK verskille daar is 'n wonderlike artikel.

  • 'n Modus vir streng funksiedefinisies is bygevoeg, wat 'n bykomende kontrole vir objekmutabiliteit moontlik maak. Geaktiveer via die pragma {.experimental: "strictFuncs".} of via die --experimental:strictFuncs-sleutel.

  • Die van-sleutelwoord kan nou as 'n operateur gebruik word.

  • Bygevoeg .noalias pragma. Dit word gekoppel aan die C-beperk-sleutelwoord om die doeltreffendheid wat die sleutelwoord kan bied, te verhoog.

  • Spesifieke waarskuwings kan nou in foute verander word via --warningAsError[X]:aan|af.

  • Nuwe opdrag: nim r main.nim [args...], wat main.nim saamstel en laat loop, en --usenimcache insluit sodat die resultaat in $nimcache/main$exeExt gestoor word, met dieselfde logika as nim c - r om van hersamestelling ontslae te raak wanneer die bronne nie verander het nie. Voorbeeld:

nim r compiler/nim.nim --help # vir die eerste keer saamgestel
eggo 'invoer os; eggo getCurrentCompilerExe()' | nim r - # dit werk ook
nim r samesteller/nim.nim --fullhelp # sonder hersamestelling
nim r —nimcache:/tmp hoof # binêr gestoor in /tmp/main

  • Het 'n nuwe wenk bygevoeg -hint:msgOrigin, wat sal wys waar die samesteller fout-/waarskuwingboodskappe gegenereer het. Dit help wanneer dit nie duidelik is waar die boodskap vandaan kom nie.

  • Vlag bygevoeg —backend:js|c|cpp|objc (of -b:js, ens.) om die backend te verander.

  • Bygevoeg --usenimcache vlag om binaries uit te voer na nimcache.

  • Sleutels verwyder: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Die nimsuggest-nutsding wys nou nie net die voorafverklaring nie, maar ook die implementeringsligging vir 'n def-versoek.

Daarbenewens is baie veranderinge by die standaardbiblioteek gevoeg en baie foutoplossings.

Bron: linux.org.ru