Nova verzija programskog jezika Nim 0.20

odvijao izdanje sistemskog programskog jezika Nim 0.20.0. Jezik koristi statično tipkanje i stvoren je imajući na umu Pascal, C++, Python i Lisp. Nim izvorni kod kompilira se u C, C++ ili JavaScript reprezentaciju. Nakon toga, dobiveni C/C++ kod se kompajlira u izvršnu datoteku pomoću bilo kojeg dostupnog prevoditelja (clang, gcc, icc, Visual C++), što vam omogućuje postizanje performansi bliskih C-u, ako ne uzmete u obzir troškove rada sakupljač smeća. Slično Pythonu, Nim koristi uvlake kao graničnike blokova. Podržani su alati za metaprogramiranje i mogućnosti za stvaranje jezika specifičnih za domenu (DSL). Šifra projekta isporučuje se pod licencom MIT-a.

Izdanje Nim 0.20 može se smatrati kandidatom za prvo stabilno izdanje 1.0, koje uključuje nekoliko promjena koje narušavaju interoperabilnost i koje su potrebne za formiranje prve stabilne grane koja će objaviti stanje jezika. Verzija 1.0 reklamira se kao stabilno, dugoročno izdanje za podršku koje će zajamčeno održavati kompatibilnost unatrag u stabiliziranom dijelu jezika. Zasebno, kompajler će također imati dostupan eksperimentalni način rada, u kojem će se razvijati nove značajke koje mogu narušiti kompatibilnost sa starijim verzijama.

Među promjenama predloženim u Nimu 0.20 su:

  • "Ne" je sada uvijek unarni operator, tj. izrazi poput “assert(not a)” sada nisu dopušteni i samo je “assert not a” dopušteno;
  • Omogućene stroge provjere za pretvorbu cijelih i realnih brojeva u fazi kompilacije, tj. izraz "const b = uint16(-1)" sada će rezultirati greškom, budući da se -1 ne može pretvoriti u nepredznačeni cijeli broj;
  • Omogućeno je raspakiranje torki za konstante i varijable petlje.
    Na primjer, sada možete koristiti dodjele poput 'const (d, e) = (7, "osam")" i "za (x, y) u f";

  • Omogućena zadana inicijalizacija hashova i tablica. Na primjer, nakon deklariranja “var s: HashSet[int]” možete odmah izvršiti “s.incl(5)”, što je prethodno dovelo do pogreške;
  • Poboljšane informacije o pogrešci za probleme povezane s operatorom "case" i indeksom polja izvan granica;
  • Mijenjanje duljine tablice tijekom iteracije je zabranjeno.

Izvor: opennet.ru

Dodajte komentar