Noua versiune a limbajului de programare Nim 0.20

a avut loc lansarea limbajului de programare a sistemului Nim 0.20.0. Limbajul folosește tastarea statică și este construit având în vedere Pascal, C++, Python și Lisp. Codul sursă Nim este compilat într-o reprezentare C, C++ sau JavaScript. Ulterior, codul C/C++ rezultat este compilat într-un fișier executabil folosind orice compilator disponibil (clang, gcc, icc, Visual C++), ceea ce vă permite să obțineți performanțe apropiate de C, dacă nu țineți cont de costul rulării gunoiul. Similar cu Python, Nim folosește indentarea ca separatori de bloc. Sunt acceptate instrumentele și capabilitățile de metaprogramare pentru crearea de limbaje specifice domeniului (DSL). Cod proiect furnizat sub licența MIT.

Lansarea Nim 0.20 poate fi văzută ca o lansare candidată pentru prima lansare stabilă 1.0, inclusiv mai multe modificări care distrug compatibilitatea necesare pentru a forma prima ramură stabilă care comite starea limbajului. Versiunea 1.0 este prezentată ca o versiune de suport stabilă, pe termen lung, care va fi garantată pentru a menține compatibilitatea cu versiunea inversă în partea stabilizată a limbii. Separat, în compilator va fi disponibil și un mod experimental, în care vor fi dezvoltate noi caracteristici care pot rupe compatibilitatea cu versiunea anterioară.

Dintre modificările propuse în Nim 0.20, putem evidenția:

  • „Nu” este acum întotdeauna un operator unar, adică. expresii precum „assert(not a)” sunt acum nevalide și este permis doar „assert not a”;
  • Verificările dure pentru conversia numerelor întregi și reale în timpul compilării sunt activate, de exemplu. expresia „const b = uint16(-1)” va avea ca rezultat acum o eroare, deoarece -1 nu poate fi convertit într-un tip întreg fără semn;
  • Este furnizată dezambalarea tuplurilor pentru constante și variabile de buclă.
    De exemplu, atribuiri precum „const (d, e) = (7, „opt”)” și „pentru (x, y) în f” pot fi acum utilizate;

  • Furnizat inițializarea implicită a hash-urilor și a tabelelor. De exemplu, după declararea „var s: HashSet[int]”, puteți executa imediat „s.incl(5)”, care ducea la o eroare;
  • S-a îmbunătățit conținutul informațional al erorilor pentru probleme legate de operatorul „caz” și indexul matricei în afara limitelor;
  • Este interzisă modificarea lungimii tabelului în timpul iterației.

Sursa: opennet.ru

Adauga un comentariu