Wydanie Nim 0.20 można uznać za kandydata na pierwszą stabilną wersję 1.0, zawierającą kilka zmian zakłócających interoperacyjność potrzebnych do utworzenia pierwszej stabilnej gałęzi, która zatwierdzi stan języka. Wersja 1.0 jest reklamowana jako stabilna, długoterminowa wersja wspierająca, która gwarantuje zachowanie kompatybilności wstecznej w ustabilizowanej części języka. Oddzielnie kompilator będzie miał również dostępny tryb eksperymentalny, w którym opracowywane będą nowe funkcje, które mogą zakłócać kompatybilność wsteczną.
Wśród zmian zaproponowanych w Nim 0.20 są:
- „Not” jest teraz zawsze operatorem jednoargumentowym, tj. wyrażenia takie jak „twierdzić (nie a)” są teraz niedozwolone i dozwolone jest jedynie „twierdzić, że nie a”;
- Włączono ścisłą kontrolę konwersji liczb całkowitych i rzeczywistych na etapie kompilacji, tj. wyrażenie „const b = uint16(-1)” spowoduje teraz błąd, ponieważ -1 nie można przekonwertować na typ całkowity bez znaku;
- Zapewnione jest rozpakowywanie krotek dla stałych i zmiennych pętli.
Na przykład teraz możesz używać przypisań takich jak „const (d, e) = (7, „osiem”)” i „for (x, y) in f”; - Zapewniono domyślną inicjalizację skrótów i tabel. Przykładowo po zadeklarowaniu „var s: HashSet[int]” można od razu wykonać „s.incl(5)”, co poprzednio kończyło się błędem;
- Poprawione informacje o błędach w przypadku problemów związanych z operatorem „case” i indeksem tablicy poza zakresem;
- Zmiana długości tabeli podczas iteracji jest zabroniona.
Źródło: opennet.ru