A Nim programozási nyelv új verziója 0.20

került sor rendszer programozási nyelv kiadása Nim 0.20.0. A nyelv statikus gépelést használ, és a Pascal, C++, Python és Lisp figyelembevételével készült. A Nim forráskódot C, C++ vagy JavaScript reprezentációba fordítják. Ezt követően a kapott C/C++ kódot bármely elérhető fordítóval (clang, gcc, icc, Visual C++) futtatható fájlba fordítjuk, ami lehetővé teszi a C-hez közeli teljesítmény elérését, ha nem számolunk a futtatás költségeivel. a szemétszállító. A Pythonhoz hasonlóan a Nim is behúzást használ blokk elválasztóként. A tartományspecifikus nyelvek (DSL) létrehozására szolgáló metaprogramozási eszközök és képességek támogatottak. Projekt kód szállított az MIT engedélye alapján.

A Nim 0.20-as kiadás az első stabil 1.0-s kiadás jelöltjének tekinthető, amely számos interoperabilitást megtörő változtatást tartalmaz, amelyek az első stabil ág kialakításához szükségesek, amely leírja a nyelv állapotát. Az 1.0-s verziót stabil, hosszú távú támogatási kiadásként hirdetik, amely garantáltan fenntartja a visszafelé kompatibilitást a nyelv stabilizált részében. A fordítónak külön egy kísérleti üzemmódja is elérhető lesz, amelyben olyan új funkciókat fejlesztenek ki, amelyek sérthetik a visszafelé kompatibilitást.

A Nim 0.20-ban javasolt változtatások között szerepel:

  • A "nem" most mindig egy unáris operátor, azaz. az olyan kifejezések, mint az „assert(not a)” most nem engedélyezettek, és csak az „assert not a” engedélyezett;
  • Szigorú ellenőrzések engedélyezettek az egész és valós számok konverziójához a fordítási szakaszban, pl. a "const b = uint16(-1)" kifejezés most hibát fog eredményezni, mivel a -1 nem konvertálható előjel nélküli egész típussá;
  • A konstansok és ciklusváltozók sorainak kicsomagolása biztosított.
    Például most már használhat olyan hozzárendeléseket, mint "const (d, e) = (7, "nyolc")" és "for (x, y) in f";

  • A hash-ek és táblák alapértelmezett inicializálása biztosított. Például a „var s: HashSet[int]” deklarálása után azonnal végrehajthatja az „s.incl(5)” parancsot, amely korábban hibához vezetett;
  • Továbbfejlesztett hibainformáció a „case” operátorral és a tömb indexével kapcsolatos problémákhoz a határokon kívül;
  • A táblázat hosszának módosítása iteráció közben tilos.

Forrás: opennet.ru

Hozzászólás