ВСрсия Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Nim 1.4.0

ИзлСзС Π½ΠΎΠ²Π° вСрсия Π½Π° систСмния Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Nim, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ сСптСмври отбСлязва Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΎΡ‚ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅Ρ‚ΠΎ си. ΠΏΡŠΡ€Π²Π° стабилна вСрсия. Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Python, Π° производитСлността Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ C++. Π‘ΠΏΠΎΡ€Π΅Π΄ ЧСсто Π·Π°Π΄Π°Π²Π°Π½ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ Π΅Π·ΠΈΠΊΡŠΡ‚ Π·Π°Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ (ΠΏΠΎ Ρ€Π΅Π΄Π° Π½Π° тСТСстта Π½Π° приноса): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Π Π°Π±ΠΎΡ‚ΠΈ навсякъдС Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π² C/C++/Objective-C/JS. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° макроси, ООП, Π³Π΅Π½Π΅Ρ€ΠΈΡ‡Π½ΠΈ лСкарства, ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, подмяна Π½Π° Π³ΠΎΡ€Π΅Ρ‰ ΠΊΠΎΠ΄ ΠΈ ΠΎΡ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ. Π›ΠΈΡ†Π΅Π½Π· - MIT.

Най-Π·Π½Π°Ρ‡ΠΈΠΌΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • Има Π½ΠΎΠ² ORC ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π° ΠΎΡ‚ΠΏΠ°Π΄ΡŠΡ†ΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ARC Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ°, Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΊΡ€ΡŠΠ³ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ ΠΏΠΎ спСциалСн Π½Π°Ρ‡ΠΈΠ½. Активирано с опцията --gc:orc. ΠžΡ‚Π½ΠΎΡΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΠΊΠΈΡ‚Π΅ ARC/ORC ΠΈΠΌΠ° страхотна статия.

  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° стриктни Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° промСнливост Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π°. Активира сС Ρ‡Ρ€Π΅Π· ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚Π° {.experimental: "strictFuncs".} ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π· ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚Π΅Π»Ρ --experimental:strictFuncs.

  • ΠšΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° from Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡ€Π°Π³ΠΌΠ° .noalias. Π’ΠΎΠΉ сС ΡΡŠΠΏΠΎΡΡ‚Π°Π²Ρ с ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° C restrict, Π·Π° Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ СфСктивността, която Ρ‚Π°Π·ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π° Π΄ΡƒΠΌΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° осигури.

  • ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ прСдупрСТдСния Π²Π΅Ρ‡Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π°Ρ‚ΠΈ Π² Π³Ρ€Π΅ΡˆΠΊΠΈ Ρ‡Ρ€Π΅Π· --warningAsError[X]:on|off.

  • Нова ΠΊΠΎΠΌΠ°Π½Π΄Π°: nim r main.nim [args...], която ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° ΠΈ изпълнява main.nim ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π° --usenimcache, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² $nimcache/main$exeExt, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΡŠΡ‰Π°Ρ‚Π° Π»ΠΎΠ³ΠΈΠΊΠ° ΠΊΠ°Ρ‚ΠΎ nim c - r Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ изходният ΠΊΠΎΠ΄ Π½Π΅ Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

nim r compiler/nim.nim --help # ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ Π·Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚
echo 'import os; Π΅Ρ…ΠΎ getCurrentCompilerExe()' | nim r - # Ρ‚ΠΎΠ²Π° ΡΡŠΡ‰ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ
nim r compiler/nim.nim --fullhelp # Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅
nim r --nimcache:/tmp main # Π΄Π²ΠΎΠΈΡ‡Π΅Π½ Ρ„Π°ΠΉΠ», записан Π² /tmp/main

  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² ΡΡŠΠ²Π΅Ρ‚ --hint:msgOrigin, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ къдС ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π» ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ°/ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. Π’ΠΎΠ²Π° ΠΏΠΎΠΌΠ°Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅ Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΎΡ‚ΠΊΡŠΠ΄Π΅ ΠΈΠ΄Π²Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ.

  • Π”ΠΎΠ±Π°Π²Π΅Π½ Ρ„Π»Π°Π³ --backend:js|c|cpp|objc (ΠΈΠ»ΠΈ -b:js ΠΈ Ρ‚.Π½.) Π·Π° промяна Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π°.

  • Π”ΠΎΠ±Π°Π²Π΅Π½ Ρ„Π»Π°Π³ --usenimcache Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π²ΠΎΠΈΡ‡Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ към nimcache.

  • ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • ΠŸΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° nimsuggest Π²Π΅Ρ‡Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π° Π½Π΅ само ΠΏΡ€Π΅Π΄Π½Π°Ρ‚Π° дСкларация, Π½ΠΎ ΠΈ мСстополоТСниСто Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ бъдС поискана Π΄Π΅Ρ„.

ОсвСн Ρ‚ΠΎΠ²Π° бяха Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ към стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru