Nuwe weergawe van die Nim-programmeertaal 0.20

plaasgevind stelsel programmeertaal vrystelling Nim 0.20.0. Die taal gebruik statiese tik en is gebou met Pascal, C++, Python en Lisp in gedagte. Nim-bronkode word saamgestel in 'n C-, C++- of JavaScript-voorstelling. Vervolgens word die resulterende C/C++-kode saamgestel in 'n uitvoerbare lΓͺer deur gebruik te maak van enige beskikbare samesteller (clang, gcc, icc, Visual C++), wat jou toelaat om werkverrigting naby aan C te bereik, as jy nie die koste van hardloop in ag neem nie die vullisverwyderaar. Soortgelyk aan Python, gebruik Nim inkeping as blokskeiers. Metaprogrammeringsinstrumente en vermoΓ«ns vir die skep van domeinspesifieke tale (DSL's) word ondersteun. Projek kode verskaf onder die MIT-lisensie.

Die vrystelling van Nim 0.20 kan gesien word as 'n vrystellingskandidaat vir die eerste stabiele 1.0-vrystelling, insluitend verskeie versoenbaarheid-breek veranderinge wat nodig is om die eerste stabiele tak te vorm wat die toestand van die taal verbind. Weergawe 1.0 word voorgehou as 'n stabiele, langtermyn-ondersteuningsvrystelling wat gewaarborg sal word om terugwaartse versoenbaarheid in die gestabiliseerde deel van die taal te handhaaf. Afsonderlik sal 'n eksperimentele modus ook in die samesteller beskikbaar wees, waarin nuwe kenmerke ontwikkel sal word wat terugwaartse versoenbaarheid kan verbreek.

Van die veranderinge wat in Nim 0.20 voorgestel word, kan ons uitlig:

  • "Nie" is nou altyd 'n unΓͺre operateur, m.a.w. uitdrukkings soos "assert(not a)" is nou ongeldig en slegs "assert not a" word toegelaat;
  • Harde tjeks vir die omskakeling van heelgetalle en reΓ«le getalle tydens samestellingstyd is geaktiveer, d.w.s. die uitdrukking "const b = uint16(-1)" sal nou 'n fout tot gevolg hΓͺ, aangesien -1 nie na 'n ongetekende heelgetaltipe omgeskakel kan word nie;
  • Uitpak van tupels vir konstantes en lusveranderlikes word verskaf.
    Byvoorbeeld, opdragte soos 'const (d, e) = (7, "agt")' en "vir (x, y) in f" kan nou gebruik word;

  • Voorsien verstek inisialisering van hashes en tabelle. Byvoorbeeld, nadat jy "var s: HashSet[int]" verklaar het, kan jy dadelik "s.incl(5)" uitvoer, wat vroeΓ«r tot 'n fout gelei het;
  • Verbeter die inligting-inhoud van foute vir probleme wat verband hou met die "geval" operateur en skikking indeks buite perke;
  • Dit is verbode om die tabellengte tydens iterasie te verander.

Bron: opennet.ru

Voeg 'n opmerking