Новая версія мовы праграмавання Nim 0.20

Адбыўся рэліз мовы сістэмнага праграмавання Nim 0.20.0. Мова выкарыстоўвае статычную тыпізацыю і створана з аглядкай на Pascal, C++, Python і Lisp. Зыходны код на мове Nim кампілюецца ў прадстаўленне на C, C ++ або JavaScript. У далейшым атрыманы C/C++ код кампілюецца ў выкананы файл пры дапамозе любога даступнага кампілятара (clang, gcc, icc, Visual C++), што дазваляе дамагчыся прадукцыйнасці блізкай да Сі, калі не ўлічваць выдаткі на выкананне зборшчыка смецця. Па аналогіі з Python у Nim у якасці падзельнікаў блокаў ужываюцца водступы. Падтрымліваюцца сродкі метапраграмавання і магчымасці для стварэння прадметна-арыентаваных моў (DSL). Код праекту пастаўляецца пад ліцэнзіяй MIT.

Выпуск 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

Дадаць каментар