Versioni i ri i gjuhës së programimit Nim 0.20.

U shpall lëshimi i gjuhës së programimit sistemor Nim 0.20.0. Gjuha përdor tipizimin statik dhe është krijuar me referencë në Pascal, C++, Python dhe Lisp. Kodi burimor në gjuhën Nim kompilohet në një përfaqësim në C, C++ ose JavaScript. Më pas, kodi i marrë C/C++ kompilohet në një skedar ekzekutiv me ndihmën e ndonjë kompjuteri të disponueshëm (clang, gcc, icc, Visual C++), çka lejon arritjen e performancës të ngjashme me atë të C-së, përveç kostove të ekzekutimit të mbledhësit të plehrave. Në mënyrë analogjike me Python, Nim përdor hapësirat si ndarës të blloqeve. Mënyrat e metaprogramimit dhe opsionet për krijimin e gjuhëve të specializuara (DSL) janë të mbështetura. Kodi i projektit ofrohet në përputhje me licencën MIT.

Lëshimi i Nim 0.20 mund të konsiderohet si kandidat për lëshimet e versionit të parë të qëndrueshëm 1.0, që përfshin disa ndryshime që ndërhyjnë në përputhshmëri, të nevojshme për formimin e degës së parë të qëndrueshme, e cila do të fiksojë shtetin e gjuhës. Versioni 1.0 prezantohet si një lëshim i qëndrueshëm me një periudhë të gjatë mbështetjeje, për të cilin do të garantohet ruajtja e përputhshmërisë mbrapsht në pjesën e stabilizuar të gjuhës. Ndryshe, në kompilator gjithashtu do të jetë në dispozicion një mod experimental, ku do të zhvillohen mundësi të reja, të cilat mund të ndërhyjnë në përputhshmëri mbrapsht.

Nga ndryshimet e propozuara në Nim 0.20, mund të veçojmë:

  • «Not» tani është gjithmonë një operator unarn, dmth. shprehjet e tilla si «assert(not a)» tani janë të papranueshme dhe lejohet vetëm shënimi «assert not a»;
  • Janë përfshirë kontrollet e forta për konvertimin e numrave të plotë dhe të vërtetë në fazën e komp spirimit, dmth. shprehja «const b = uint16(-1)» tani do të rezultojë me një gabim, pasi -1 nuk mund të konvertohet në një tip të plotë pa shenja;
  • Janë siguruar shpërndarjet e tupleve për konstantet dhe variablat e cikleve.
    Për shembull, tani mund të përdoren caktimet si ‘const (d, e) = (7, «eight»)’ dhe «for (x, y) in f»;
  • Janë garantuar inicializime të paracaktuara për hash dhe tabela. Për shembull, pas shpalljes «var s: HashSet[int]» mund të realizohet menjëherë «s.incl(5)», gjë që më parë shkaktonte një gabim;
  • Përmirësuar informativitetin e gabimeve për probleme që lidhen me operatorin «case» dhe daljen nga kufijtë e indeksit të array-t;
  • Modifikimi i gjatësi të tabelës gjatë iteraimit është i ndaluar.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster