süsteemse programmeerimise keele väljaanne . Keel kasutab staatilist tüpiseerimist ja on loodud silmas pidades Pascalli, C++, Pythoni ja Lispi. Nim'i lähtekood kompileeritakse C, C++ või JavaScripti esitusvormiks. Edasi kompileeritakse saadud C/C++ kood täitmisfailiks, kasutades mis tahes saadaval olevat kompilaatorit (clang, gcc, icc, Visual C++), mis võimaldab saavutada peaaegu C-ga sarnast jõudlust, kui mitte arvesse võtta prügifunktsiooni täitmise kulusid. Sarnaselt Pythoni keelega kasutatakse Nim'is plokkide eraldajatena sissetõmbeid. Toetatakse meetaprogrammeerimise vahendeid ja võimalusi domeeni spetsiifiliste keelte (DSL) loomiseks. Projekti kood on MIT litsentsi all.
Nim 0.20 väljaanne võib toimida kandidaadina esimese stabiilse 1.0 versiooni väljaandmiseks ning sisaldab mitmeid ühilduvust rikkuma süüdistavaid muudatusi, mis on vajalikud esimese stabiilse haru moodustamiseks, mis fikseerib keele seisundi. Versioon 1.0 esindab stabiilset väljaannet pikaajalise tugiteenusega, mille puhul on tagatud tagurpidi ühilduvuse säilitamine stabiliseeritud keeleosas. Eraldi on kompilaatoris saadaval ka eksperimenteerimisrežiim, kus arendatakse uusi funktsioone, mis võivad rikkuda tagurpidi ühilduvust.
Nim 0.20 muudatustest võib välja tuua:
- „Not“ on nüüd alati üheralduse operaator, st väljendid nagu „assert(not a)“ ei ole enam lubatud ja lubatud on ainult „assert not a“;
- Komplektidesse on lisatud rangemad tervete ja ujukomaarvude konverteerimise kontrollid kompileerimise etapis, st väljend „const b = uint16(-1)“ toob nüüd esile veateate, kuna -1 ei saa konverteerida täisarvuks positiivseks tüübiks;
- Pakettide lahti pakkimine on tagatud muutujate ja tsüklite konstandiks.
Näiteks saab nüüd kasutada selliseid määranguid nagu ‘const (d, e) = (7, «eight»)’ ja «for (x, y) in f»; - Algväärtuste määramine on tagatud ka hulkade ja tabelite puhul. Näiteks pärast «var s: HashSet[int]» deklareerimist saab kohe käivitada «s.incl(5)», mis varem viis tõrkeni;
- Parandatud on vigade informatiivsus, mis on seotud «case» operaatori ja massiivi indeksi ületamise probleemidega;
- Tabeli pikkuse muutmine iteratsiooni käigus on keelatud.
Allikas: opennet.ru
