Nim 0.20-utgåvan kan betraktas som en kandidat för den första stabila 1.0-utgåvan, som innehåller flera interoperabilitetsbrytande ändringar som behövs för att bilda den första stabila grenen som kommer att befästa språkets tillstånd. Version 1.0 utses som en stabil, långsiktig supportversion som garanterat kommer att bibehålla bakåtkompatibilitet i den stabiliserade delen av språket. Separat kommer kompilatorn också att ha ett experimentläge tillgängligt där nya funktioner som kan bryta bakåtkompatibiliteten kommer att utvecklas.
Bland de ändringar som föreslås i Nim 0.20 är:
- "Inte" är nu alltid en unär operatör, dvs. uttryck som "assert(not a)" är nu inte tillåtna och endast "assert not a" är tillåtet;
- Aktiverade strikta kontroller för konvertering av heltal och reella tal vid kompileringsstadiet, d.v.s. uttrycket "const b = uint16(-1)" kommer nu att resultera i ett fel, eftersom -1 inte kan konverteras till en heltalstyp utan tecken;
- Uppackning av tupler för konstanter och loopvariabler tillhandahålls.
Till exempel kan du nu använda tilldelningar som 'const (d, e) = (7, "åtta")" och "för (x, y) i f"; - Tillhandahöll standardinitiering av hash och tabeller. Till exempel, efter att ha deklarerat "var s: HashSet[int]" kan du omedelbart köra "s.incl(5)", vilket tidigare ledde till ett fel;
- Förbättrad felinformation för problem relaterade till "case"-operatorn och arrayindex utanför gränserna;
- Det är förbjudet att ändra tabelllängden under iterationen.
Källa: opennet.ru