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