Выпуск языка программирования Nim 2.2.8

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Ρ€Π΅Π»ΠΈΠ· языка систСмного программирования Nim 2.2.8. Nim – статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык программирования с синтаксисом, Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹ΠΌ Python, ΠΈ возмоТностями мСтапрограммирования Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Lisp. Π―Π·Ρ‹ΠΊ компилируСтся Π² C, C++ ΠΈ JavaScript, обСспСчивая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ C ΠΏΡ€ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ высокоуровнСвых языков. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° поставляСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT.

ВозмоТности Nim Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ систСму макросов, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° AST Π²ΠΎ врСмя компиляции, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ программирования с ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Π°ΠΌΠΈ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ (multiple dispatch), Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… стратСгий (ARC/ORC, refc, ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°-ΠΈ-ΠΏΠΎΠ΄ΠΌΠ΅Ρ‚Π°Π½ΠΈΠ΅), Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ async/await для асинхронного программирования ΠΈ FFI для простой ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с C/C++/JavaScript. Nim позиционируСтся ΠΊΠ°ΠΊ систСмный язык, подходящий для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‚ встраиваСмых систСм Π΄ΠΎ Π²Π΅Π±-сСрвСров, с Π°ΠΊΡ†Π΅Π½Ρ‚ΠΎΠΌ Π½Π° ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ памяти ΠΈ удобство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Выпуск 2.2.8 состоялся спустя Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ мСсяца послС вСрсии 2.2.6 ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ 89 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² с исправлСниями ошибок ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌΠΈ. Π“Π»Π°Π²Π½Ρ‹ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Ρ€Π΅Π»ΠΈΠ·Π° Π½Π°Π·Π²Π°Π½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ стандартного Π°Π»Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€Π° памяти ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ использовании многопоточности. По словам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Β«-d:useMallocΒ» для ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ просят ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь.

Π‘Ρ€Π΅Π΄ΠΈ исправлСнных ошибок:

  • SIGBUS ΠΏΡ€ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ константной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈΠ·-Π·Π° ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ уничтоТСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²;
  • SIGSEGV с Π·Π°ΠΌΡ‹ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ;
  • нСкоррСктная гСнСрация C-ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ .global Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°;
  • ошибка Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ finally Π² Π·Π°ΠΌΡ‹ΠΊΠ°ΡŽΡ‰Π΅ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ try..except;
  • Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ name mangling Π² стилС C++ ΠΏΡ€ΠΈ использовании β€”debuginfo;
  • мСдлСнная Ρ€Π°Π±ΠΎΡ‚Π° setLen ΠΏΡ€ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ·-Π·Π° излишнСй зачистки памяти;
  • отсутствиС setLenUninit для Ρ€Π΅ΠΆΠΈΠΌΠ° Β«β€”mm:refcΒ»;
  • зависаниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ term rewriting Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…;
  • SIGSEGV ΠΏΡ€ΠΈ использовании distinct-Ρ‚ΠΈΠΏΠΎΠ² с Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² heap-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ refc;
  • Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ доступ ΠΊ m_type Π² Ρ…ΡƒΠΊΠ°Ρ… для ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… distinct-Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠ΄ ARC/ORC/ATOMICARC;
  • сбой компилятора ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° с Β«itemsΒ» ΠΈΠ· ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Π°;
  • рСкурсивныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ segfault компилятора;
  • нСкоррСктная гСнСрация HTTPS-запросов Ρ‡Π΅Ρ€Π΅Π· HTTP-прокси Π² httpclient;
  • Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ shl;
  • усСчСниС Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… цСлочислСнных Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² Π±Π΅Π· прСдупрСТдСния;
  • сбои компилятора ΠΏΡ€ΠΈ рядС Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… инстанциаций;
  • Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ β€”styleCheck:warn.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ