Nim programazio-lengoaiaren bertsio berria 0.20

ospatu sistemaren programazio lengoaia kaleratzea Ni 0.20.0. Hizkuntzak idazketa estatikoa erabiltzen du eta Pascal, C++, Python eta Lisp kontuan hartuta eraikita dago. Nim iturburu-kodea C, C++ edo JavaScript irudikapen batean biltzen da. Ondoren, sortzen den C/C++ kodea fitxategi exekutagarri batean konpilatzen da erabilgarri dagoen edozein konpiladore erabiliz (clang, gcc, icc, Visual C++), eta horrek C-tik gertuko errendimendua lortzeko aukera ematen du, exekutatzeko kostua kontuan hartzen ez baduzu. zabor-biltzailea. Python-en antzera, Nimek koska erabiltzen du bloke-bereizle gisa. Domeinuko hizkuntza espezifikoak (DSL) sortzeko metaprogramazio tresnak eta gaitasunak onartzen dira. Proiektuaren kodea hornituta MIT lizentziapean.

Nim 0.20 bertsioa lehen 1.0 bertsio egonkorraren bertsiorako hautagai gisa ikus daiteke, hizkuntzaren egoera konprometitzen duen lehen adar egonkorra osatzeko beharrezkoak diren bateragarritasun-hauste aldaketa batzuk barne. 1.0 bertsioa epe luzerako euskarri egonkor gisa aurkezten da, hizkuntzaren zati egonkortuan atzerako bateragarritasuna mantentzea bermatuta egongo dena. Bereiz, modu esperimental bat ere eskuragarri egongo da konpilatzailean, eta bertan atzerako bateragarritasuna hautsi dezaketen ezaugarri berriak garatuko dira.

Nim 0.20-n proposatutako aldaketetatik, honako hauek nabarmendu ditzakegu:

  • "Ez" orain beti operadore unarioa da, hau da. "assert(ez a)" bezalako esamoldeak baliogabeak dira orain eta "assert not a" bakarrik onartzen da;
  • Konpilazio garaian osoak eta zenbaki errealak bihurtzeko egiaztapen gogorrak gaituta daude, hau da. "const b = uint16(-1)" esapideak errore bat eragingo du orain, -1 ezin baita zeinu gabeko zenbaki oso batera bihurtu;
  • Konstanteen eta begiztetako aldagaien tuplak desekatzea eskaintzen da.
    Adibidez, 'const (d, e) = (7, "zortzi")' eta "for (x, y) in f" bezalako esleipenak erabil daitezke orain;

  • Hash eta taulen hasierako lehenetsia eman du. Adibidez, "var s: HashSet[int]" deklaratu ondoren, berehala exekutatu dezakezu "s.incl(5)", eta horrek errore bat ekartzen zuen;
  • Erroreen informazio-edukia hobetu da "kasu" operadorearekin eta array-indizearekin lotutako arazoetarako mugetatik kanpo;
  • Debekatuta dago taularen luzera aldatzea iteraldian zehar.

Iturria: opennet.ru

Gehitu iruzkin berria