Programmeerimiskeele Nim 0.20 uus versioon

võttis aset süsteemi programmeerimiskeele väljalase Nim 0.20.0. Keel kasutab staatilist tippimist ja selle loomisel on silmas peetud Pascalit, C++, Pythonit ja Lispi. Nim lähtekood kompileeritakse C-, C++- või JavaScripti esituseks. Seejärel kompileeritakse saadud C/C++ kood täitmisfailiks, kasutades mis tahes saadaolevat kompilaatorit (clang, gcc, icc, Visual C++), mis võimaldab teil saavutada C-le lähedase jõudluse, kui te ei võta arvesse käitamise kulusid. prügivedaja. Sarnaselt Pythoniga kasutab Nim ploki eraldajana taanet. Toetatakse metaprogrammeerimistööriistu ja -võimalusi domeenispetsiifiliste keelte (DSL) loomiseks. Projekti kood varustatud MIT litsentsi alusel.

Nim 0.20 väljalaset võib pidada esimese stabiilse versiooni 1.0 kandidaadiks, mis sisaldab mitmeid koostalitlusvõimet kahjustavaid muudatusi, mis on vajalikud esimese stabiilse haru moodustamiseks, mis määrab keele oleku. Versiooni 1.0 reklaamitakse kui stabiilset ja pikaajalist tugiväljaannet, mis garanteerib tagasiühilduvuse keele stabiliseeritud osas. Eraldi on kompilaatoril saadaval ka eksperimentaalne režiim, kus arendatakse uusi funktsioone, mis võivad tagasiühilduvust rikkuda.

Nim 0.20 pakutud muudatuste hulgas on järgmised:

  • "Mitte" on nüüd alati unaarne operaator, st. väljendid nagu "assert(not a)" pole nüüd lubatud ja lubatud on ainult "assert not a";
  • Lubatud täis- ja reaalarvude teisendamise ranged kontrollid koostamise etapis, st. avaldis "const b = uint16(-1)" toob nüüd kaasa vea, kuna -1 ei saa teisendada märgita täisarvu tüübiks;
  • Pakutakse konstantide ja tsüklimuutujate jaoks korteeži lahtipakkimist.
    Näiteks saate nüüd kasutada selliseid ülesandeid nagu 'const (d, e) = (7, "kaheksa")" ja "for (x, y) in f";

  • Pakub räside ja tabelite vaikimisi lähtestamist. Näiteks pärast "var s: HashSet[int]" deklareerimist saate kohe käivitada "s.incl(5)", mis varem põhjustas vea;
  • Täiustatud veateave „juhtumi“ operaatori ja massiiviindeksiga seotud probleemide jaoks väljaspool piire;
  • Tabeli pikkuse muutmine iteratsiooni ajal on keelatud.

Allikas: opennet.ru

Lisa kommentaar