Реліз Nim 1.2.0

Вийшла нова версія системної мови програмування 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

Додати коментар або відгук