Nim программалоо тилинин жаңы версиясы 0.20

болуп өттү системалык программалоо тили чыгаруу Nim 0.20.0. Бул тил статикалык терүүнү колдонот жана Pascal, C++, Python жана Lisp тилдерин эске алуу менен түзүлгөн. Nim булак коду C, C++ же JavaScript өкүлчүлүгүнө түзүлөт. Кийинчерээк, натыйжада C/C++ коду ар кандай жеткиликтүү компилятордун (clang, gcc, icc, Visual C++) жардамы менен аткарылуучу файлга түзүлөт, бул сизге Cге жакын көрсөткүчтөргө жетишүүгө мүмкүндүк берет, эгерде сиз иштетүүгө кеткен чыгымдарды эске албасаңыз. таштанды жыйноочу. Python сыяктуу, Nim блок бөлүүчү катары чегинүүнү колдонот. Метапрограммалоо куралдары жана доменге тиешелүү тилдерди (DSLs) түзүү үчүн мүмкүнчүлүктөр колдоого алынат. Долбоор коду берилген MIT лицензиясы боюнча.

Nim 0.20 релиз биринчи туруктуу 1.0 чыгаруу үчүн талапкер катары каралышы мүмкүн, ал тилдин абалын жасай турган биринчи туруктуу бутагын түзүү үчүн зарыл болгон бир нече өз ара аракеттенүү мүмкүнчүлүгүн бузуучу өзгөртүүлөрдү камтыган. 1.0 версиясы тилдин турукташтырылган бөлүгүндө артка шайкештикти сактоого кепилдик бере турган туруктуу, узак мөөнөттүү колдоо релиз катары бааланат. Өзүнчө, компилятордун эксперименталдык режими да болот, анда артка шайкештикти бузушу мүмкүн болгон жаңы функциялар иштелип чыгат.

Nim 0.20 сунушталган өзгөртүүлөр арасында:

  • "Эмес" азыр дайыма унардык оператор болуп саналат, б.а. "assert(not a)" сыяктуу сөз айкаштарына эми уруксат берилбейт жана "assert not a" гана уруксат берилет;
  • Компиляция стадиясында бүтүн жана реалдуу сандарды конвертациялоо үчүн катуу текшерүүлөр иштетилген, б.а. "const b = uint16(-1)" туюнтмасы эми катага алып келет, анткени -1 белгиси жок бүтүн сан түрүнө айландыруу мүмкүн эмес;
  • Туруктуулар жана цикл өзгөрмөлөрү үчүн кортеждерди таңгактан чыгаруу каралган.
    Мисалы, эми сиз 'const (d, e) = (7, "сегиз")" жана "f (x, y) үчүн" сыяктуу тапшырмаларды колдоно аласыз;

  • Хештердин жана таблицалардын демейки инициализациясы камсыздалган. Мисалы, "var s: HashSet[int]" жарыялагандан кийин, мурда катага алып келген "s.incl(5)" дароо аткара аласыз;
  • "Case" операторуна жана массив индексине байланыштуу көйгөйлөр боюнча жакшыртылган ката маалыматы чектен чыккан;
  • Итерация учурунда столдун узундугун өзгөртүүгө тыюу салынат.

Source: opennet.ru

Комментарий кошуу