Nova verzija programskog jezika Nim 0.20

održan izdanje sistemskog programskog jezika Nim 0.20.0. Jezik koristi statičko kucanje i napravljen je imajući na umu Pascal, C++, Python i Lisp. Nim izvorni kod se kompajlira u C, C++ ili JavaScript reprezentaciju. Nakon toga, rezultirajući C/C++ kod se kompajlira u izvršnu datoteku koristeći bilo koji dostupan kompajler (clang, gcc, icc, Visual C++), što vam omogućava da postignete performanse bliske C, ako ne uzmete u obzir troškove pokretanja sakupljač smeća. Slično Pythonu, Nim koristi uvlačenje kao separatore blokova. Podržani su alati i mogućnosti za metaprogramiranje za kreiranje jezika specifičnih za domenu (DSL). Šifra projekta isporučuje se pod MIT licencom.

Izdanje Nim 0.20 se može posmatrati kao kandidat za izdavanje za prvo stabilno izdanje 1.0, uključujući nekoliko promena koje su neophodne da bi se formirala prva stabilna grana koja upisuje stanje jezika. Verzija 1.0 se reklamira kao stabilno, dugoročno izdanje podrške koje će zajamčeno održavati kompatibilnost unatrag u stabilizovanom dijelu jezika. Odvojeno, eksperimentalni način rada će također biti dostupan u kompajleru, u kojem će se razvijati nove karakteristike koje mogu narušiti kompatibilnost unatrag.

Od izmjena predloženih u Nimu 0.20, možemo istaknuti:

  • "Ne" je sada uvijek unarni operator, tj. izrazi poput "assert(not a)" su sada nevažeći i dozvoljeno je samo "assert not a";
  • Omogućene su čvrste provjere za pretvaranje cijelih i realnih brojeva u vrijeme kompajliranja, tj. izraz "const b = uint16(-1)" će sada rezultirati greškom, jer se -1 ne može pretvoriti u neoznačeni cijeli broj;
  • Omogućeno je raspakivanje tuple-ova za konstante i varijable petlje.
    Na primjer, zadaci poput 'const (d, e) = (7, "osam")' i "za (x, y) u f" sada se mogu koristiti;

  • Obezbeđena podrazumevana inicijalizacija heševa i tabela. Na primjer, nakon deklariranja "var s: HashSet[int]" možete odmah izvršiti "s.incl(5)", što je dovodilo do greške;
  • Poboljšan sadržaj informacija o greškama za probleme vezane za operator "case" i indeks niza izvan granica;
  • Zabranjeno je menjati dužinu tabele tokom iteracije.

izvor: opennet.ru

Dodajte komentar