Nova različica programskega jezika Nim 0.20

potekala izdaja sistemskega programskega jezika Nim 0.20.0. Jezik uporablja statično tipkanje in je bil ustvarjen z mislijo na Pascal, C++, Python in Lisp. Izvorna koda Nim je prevedena v predstavitev C, C++ ali JavaScript. Nato se nastala koda C/C++ prevede v izvedljivo datoteko s katerim koli razpoložljivim prevajalnikom (clang, gcc, icc, Visual C++), ki omogoča doseganje zmogljivosti blizu C, če ne upoštevate stroškov delovanja pobiralec smeti. Podobno kot Python tudi Nim uporablja zamike kot ločila blokov. Podprta so orodja za metaprogramiranje in zmožnosti za ustvarjanje domensko specifičnih jezikov (DSL). Koda projekta priloženo pod licenco MIT.

Izdaja Nim 0.20 se lahko šteje za kandidata za prvo stabilno izdajo 1.0, ki vključuje več sprememb, ki motijo ​​interoperabilnost in so potrebne za oblikovanje prve stabilne veje, ki bo objavila stanje jezika. Različica 1.0 se oglašuje kot stabilna izdaja za dolgoročno podporo, ki bo zajamčeno ohranila združljivost za nazaj v stabiliziranem delu jezika. Poleg tega bo prevajalnik imel na voljo tudi poskusni način, v katerem bodo razvite nove funkcije, ki bi lahko prekinile združljivost za nazaj.

Med predlaganimi spremembami v Nim 0.20 so:

  • »Ne« je zdaj vedno unarni operator, tj. izrazi, kot je »uveljavi (ne a)«, zdaj niso dovoljeni in dovoljeno je samo »uveljaviti ne a«;
  • Omogočena stroga preverjanja pretvorbe celih in realnih števil v fazi prevajanja, tj. izraz "const b = uint16(-1)" bo zdaj povzročil napako, ker -1 ni mogoče pretvoriti v nepredznačeni celoštevilski tip;
  • Zagotovljeno je razpakiranje tupl za konstante in spremenljivke zanke.
    Na primer, zdaj lahko uporabite dodelitve, kot sta 'const (d, e) = (7, "osem")" in "za (x, y) v f";

  • Zagotovljena privzeta inicializacija zgoščenih vrednosti in tabel. Na primer, po deklaraciji »var s: HashSet[int]« lahko takoj izvedete »s.incl(5)«, kar je prej povzročilo napako;
  • Izboljšane informacije o napakah za težave, povezane z operatorjem »case« in indeksom polja zunaj meja;
  • Spreminjanje dolžine tabele med iteracijo je prepovedano.

Vir: opennet.ru

Dodaj komentar