Π—Π° Nim 3.0 сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π΅Π½ Π±Π΅ΠΊΠ΅Π½Π΄ Π½Π° Π±Π°Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° NIF

Π’ процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° вСрсия 3.0 Π½Π° програмния Π΅Π·ΠΈΠΊ Nim сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π½ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ NIF (Nim Intermediate Format). Π’ новия ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈ няколко тСхничСски Π·Π°Π΄Π°Ρ‡ΠΈ, срСд ΠΊΠΎΠΈΡ‚ΠΎ подобряванС Π½Π° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½Π°Ρ‚Π° компилация ΠΈ опростяванС Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅. Π”Π°Ρ‚Π°Ρ‚Π° Π½Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ Π½Π° Nim 3.0 всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°.

Π‘ΠΏΠΎΡ€Π΅Π΄ спСцификацията Π½Π° NIF, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° Π² рСпозитория Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, новият Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ позволява ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° абстрактно синтактично Π΄ΡŠΡ€Π²ΠΎ (AST), раздСляйки ΠΈΠΌΠ΅Ρ‚ΠΎ пространство Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ конструкции ΠΈ потрСбитСлски ΠΈΠΌΠ΅Π½Π°. Π’ΠΎΠ²Π° осигурява Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚ ΠΏΡ€ΠΈ добавянСто Π½Π° Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ Π΄ΡƒΠΌΠΈ ΠΈ улСснява интСграцията с инструмСнтитС Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Nim 3.0 Ρ‰Π΅ бъдС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° няколко Π΅Ρ‚Π°ΠΏΠ°:

  • Nifler β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° изходния ΠΊΠΎΠ΄ Π½Π° Nim Π² NIF, ΠΊΠ°Ρ‚ΠΎ сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.
  • Nimony β€” сСмантичСн Π°Π½Π°Π»ΠΈΠ·, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° макроси.
  • Hexer β€” оптимизация Π½Π° ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰Π° ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠ½Π³ Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° (ARC/ORC).
  • NIFC β€” Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° C/C++ с ΠΎΠ³Π»Π΅Π΄ Π½Π° особСноститС Π½Π° Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°.

ΠžΡΠ½ΠΎΠ²Π½ΠΈΡ‚Π΅ подобрСния Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚:

  • Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ускорява компилацията ΠΏΡ€ΠΈ частични ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°.
  • ΠžΡ‚ΠΊΠ°Π· ΠΎΡ‚ нСобходимостта ΠΎΡ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ обявяванС Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅.
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π·Π° Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° компилация.
  • ΠšΠΎΡ€Π΅ΠΊΡ†ΠΈΡ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ„Π°Π·ΠΈΡ‚Π΅ Π½Π° компилация, ΠΊΠ°Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π΅Π½ ΠΏΠΎΠ²ΠΈΠΊ Π½Π° дСструктори.

Π’ спСцификацията ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° сС ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π²Π°, Ρ‡Π΅ NIF Π·Π°ΠΏΠ°Π·Π²Π° информация Π·Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈΡ‚Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ΄Π° (Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ), ΠΊΠΎΠ΅Ρ‚ΠΎ улСснява отстраняванСто Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ интСграцията с IDE.

Π•Π·ΠΈΠΊΡŠΡ‚ Nim Π΅ насочСн към Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ Π² систСмното ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° статична типизация ΠΈ Π΅ създадСн с ΠΎΠ³Π»Π΅Π΄ Π½Π° Π΅Π·ΠΈΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ Python, Ada ΠΈ Modula. Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ Π½Π° Nim сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° във Π²ΠΈΠ΄ Π½Π° C, C++, Objective-C ΠΈΠ»ΠΈ JavaScript. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° получСният C/C++ ΠΊΠΎΠ΄ сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π² изпълнима ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π½Π°Π»ΠΈΡ‡Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ (clang, gcc, icc, Visual C++), ΠΊΠΎΠ΅Ρ‚ΠΎ позволява постиганС Π½Π° производитСлност, Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ C, Π°ΠΊΠΎ Π½Π΅ сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° garbage collector. Подобно Π½Π° Python, Π² Nim Π·Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΈ. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС инструмСнти Π·Π° ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° създаванС Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ (DSL). ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС прСдоставя ΠΏΠΎΠ΄ MIT Π»ΠΈΡ†Π΅Π½Π·.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster