Nauja Nim 0.20 programavimo kalbos versija

įvyko sistemos programavimo kalbos leidimas Nim 0.20.0. Kalba naudoja statinį spausdinimą ir buvo sukurta atsižvelgiant į Pascal, C++, Python ir Lisp. Nim šaltinio kodas kompiliuojamas į C, C++ arba JavaScript vaizdavimą. Vėliau gautas C/C++ kodas sukompiliuojamas į vykdomąjį failą naudojant bet kurį turimą kompiliatorių (clang, gcc, icc, Visual C++), kuris leidžia pasiekti našumą, artimą C, jei neatsižvelgiate į paleidimo išlaidas. šiukšlių surinkėjas. Panašiai kaip Python, Nim naudoja įtrauką kaip blokų skyriklius. Palaikomi metaprogramavimo įrankiai ir galimybės kuriant specifines domeno kalbas (DSL). Projekto kodas tiekiama pagal MIT licenciją.

„Nim 0.20“ leidimas gali būti laikomas kandidatu į pirmąjį stabilų 1.0 leidimą, apimantį keletą sąveiką pažeidžiančių pakeitimų, reikalingų, kad būtų suformuota pirmoji stabili šaka, kuri nustatys kalbos būseną. Versija 1.0 reklamuojama kaip stabili, ilgalaikė palaikymo versija, kuri garantuotai išlaikys atgalinį suderinamumą stabilizuotoje kalbos dalyje. Atskirai kompiliatorius taip pat turės eksperimentinį režimą, kuriame bus kuriamos naujos funkcijos, kurios gali sutrikdyti atgalinį suderinamumą.

Tarp Nim 0.20 siūlomų pakeitimų yra šie:

  • „Ne“ dabar visada yra unarinis operatorius, t.y. tokie posakiai kaip „tvirtinti(ne a)“ dabar neleidžiami ir leidžiami tik „tvirtinti ne a“;
  • Įgalintas griežtas sveikųjų ir realiųjų skaičių konvertavimo patikrinimas kompiliavimo etape, t.y. posakis "const b = uint16(-1)" dabar sukels klaidą, nes -1 negalima konvertuoti į beženklio sveikojo skaičiaus tipą;
  • Pateikiamas konstantų ir ciklo kintamųjų eilučių išpakavimas.
    Pavyzdžiui, dabar galite naudoti tokias užduotis kaip „const (d, e) = (7, „aštuoni“)“ ir „for (x, y) in f“;

  • Numatytasis maišos ir lentelių inicijavimas. Pavyzdžiui, paskelbus „var s: HashSet[int]“, galite iš karto vykdyti „s.incl(5)“, dėl kurio anksčiau įvyko klaida;
  • Patobulinta klaidų informacija, susijusi su problemomis, susijusiomis su „atvejo“ operatoriumi ir masyvo indeksu už ribų;
  • Iteracijos metu keisti lentelės ilgį draudžiama.

Šaltinis: opennet.ru

Добавить комментарий