Выпуск Nim 0.20 можна разглядаць як кандыдат у рэлізы першай стабільнай версіі 1.0, улучальны некалькі парушаючых сумяшчальнасць змен, неабходных для фармавання першай стабільнай галіны, якая зафіксуе стан мовы. Версія 1.0 падаецца як стабільны выпуск з працяглым тэрмінам падтрымкі для якога будзе гарантавана захаванне зваротнай сумяшчальнасці ў стабілізаванай частцы мовы. Асобна ў кампілятары таксама будзе даступны эксперыментальны рэжым, у якім будуць развівацца новыя магчымасці, якія могуць парушаць адваротную сумяшчальнасць.
З прапанаваных у Nim 0.20 змен можна вылучыць:
- "Not" зараз заўсёды з'яўляецца унарным аператарам, г.зн. выразы віду "assert(not a)" цяпер недапушчальныя і дапускаецца толькі ўказанне "assert not a";
- Уключаны жорсткія праверкі пераўтварэння цэлых і рэчавых лікаў на этапе кампіляцыі, г.зн. выраз «const b = uint16(-1)» зараз прывядзе да высновы памылкі, бо -1 не можа быць пераўтвораны ў цэлы беззнакавы тып;
- Забяспечана распакаванне картэжаў для канстант і зменных цыклаў.
Напрыклад, зараз можна выкарыстоўваць прысваенні выгляду 'const(d, e) = (7, "eight")' і "for (x, y) in f"; - Забяспечана ініцыялізацыя па змаўчанні хэшаў і табліц. Напрыклад, пасля аб'явы «var s: HashSet[int]» можна адразу выканаць «s.incl(5)», што раней прыводзіла да памылкі;
- Палепшана інфарматыўнасць памылак для праблем, звязаных з аператарам "case" і выхадам за межы індэкса масіва;
- Забаронена змены даўжыні табліцы падчас ітэрацыі.
Крыніца: opennet.ru