De Nim 0.20-uitgave kan worden beschouwd als een kandidaat voor de eerste stabiele 1.0-uitgave, waarin verschillende interoperabiliteitsbrekende wijzigingen zijn opgenomen die nodig zijn om de eerste stabiele tak te vormen die de staat van de taal zal vastleggen. Versie 1.0 wordt aangeprezen als een stabiele ondersteuningsrelease voor de lange termijn die gegarandeerd achterwaartse compatibiliteit zal behouden in het gestabiliseerde deel van de taal. Daarnaast zal de compiler ook een experimentele modus beschikbaar hebben waarin nieuwe functies zullen worden ontwikkeld die achterwaartse compatibiliteit kunnen verbreken.
Onder de in Nim 0.20 voorgestelde wijzigingen zijn:
- "Niet" is nu altijd een unaire operator, d.w.z. uitdrukkingen als “beweren(niet a)” zijn nu niet toegestaan en alleen “beweren niet a” is toegestaan;
- Strenge controles mogelijk gemaakt voor de conversie van gehele getallen en reële getallen in de compilatiefase, d.w.z. de uitdrukking "const b = uint16(-1)" zal nu resulteren in een fout, omdat -1 niet kan worden geconverteerd naar een geheel getal zonder teken;
- Er is voorzien in het uitpakken van tupels voor constanten en lusvariabelen.
U kunt nu bijvoorbeeld toewijzingen gebruiken als 'const (d, e) = (7, "acht")" en "for (x, y) in f"; - Biedt standaardinitialisatie van hashes en tabellen. Nadat u bijvoorbeeld “var s: HashSet[int]” hebt gedeclareerd, kunt u onmiddellijk “s.incl(5)” uitvoeren, wat eerder tot een fout leidde;
- Verbeterde foutinformatie voor problemen met betrekking tot de “case”-operator en de array-index buiten het bereik;
- Het wijzigen van de tafellengte tijdens de iteratie is verboden.
Bron: opennet.ru