Вийшла нова версія системної мови програмування Nim. У ній є часткова несумісність з версією 1.0, наприклад, через суворіше перетворення типів. Але цей випадок є прапор —useVersion:1.0.
Головне нововведення - новий збирач сміття, що включається опцією -gc: arc. Автор мови Andreas Rumpf має намір написати докладну статтю про переваги ARC, а поки що пропонує ознайомитися з його виступом на FOSDEMде показані результати бенчмарків.
- Компілятор тепер підтримує опцію -asm для зручнішого вивчення асемблерного коду, що виробляється.
- align pragma може бути використана для змінних і полів об'єкта, це схоже на alignas C/C++.
- =sink оператор тепер опціональний. Тепер компілятор може використовувати комбінацію =destroy і copyMem для ефективного переміщення об'єктів.
- Перетворення у unsigned integers не перевіряються у рантаймі. Подробиці в https://github.com/nim-lang/RFCs/issues/175
- Новий синтаксис для lvalue: var b {.byaddr.} = expr, що підключається через import std/decls
- Компілятор підтримує новий ключ - panics: on, який перетворює рантаймові помилки такі як IndexError або OverflowError на фатальні помилки, які не можуть бути спіймані через try. Це може покращити ефективність рантайму та розмір програми.
- JS-код, що генерується, використовує тільки пробіли замість мішанини з пробілів і табів.
- У компілятор додано підтримку .localPassc pragma, за допомогою якої можна обробити спеціальні опції C(++) бекенда для C(++) файлу, що генерується з поточного модуля Nim.
- Nimpretty тепер не приймає негативний аргумент для налаштування відступів, оскільки це ламало файли.
- Додані нові макроси (collect, dup, capture), що підключаються через import sugar.
Крім цього додано безліч змін до стандартної бібліотеки та безліч виправлень багів.
Джерело: linux.org.ru