ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½ΠΈ са ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ Π½Π° Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π½Π° компилятора Nimony Π·Π° Π±ΡŠΠ΄Π΅Ρ‰Π΅Ρ‚ΠΎ Nim 3.0

Π’ процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° програмния Π΅Π·ΠΈΠΊ Nim 3.0 сС Ρ€Π°Π·Π²ΠΈΠ²Π°Π²Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Nimony, Ρ‡ΠΈΠΉΡ‚ΠΎ основСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅Π½ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΅ постиганСто Π½Π° прСдсказуСмост Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π² Π½Π°ΠΉ-лошия случай (Worst Case Execution Time, WCET). Π’ΠΎΠ²Π° изискванС ΠΏΡ€ΠΎΠΈΠ·Ρ‚ΠΈΡ‡Π° ΠΎΡ‚ ориСнтацията към систСми с ТСстки Ρ€Π΅Π°Π»Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ограничСния, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΎ. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° Nimony ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ сборници Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ с трасировка, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚ нСпрСдсказуСми забавяния.

Π—Π° постиганС Π½Π° прСдсказуСмост, ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ (Ρ†Π΅Π»ΠΈ числа, символи) Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ сС отразяват Π½Π° машинни Π΄ΡƒΠΌΠΈ ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ (структури, ΠΎΠ±Π΅ΠΊΡ‚ΠΈ) сС Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Ρ‚ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° косвСна адрСсация, Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ‰ΠΈ сС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² стСка ΠΈΠ»ΠΈ Π²ΡŠΡ‚Ρ€Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΈ структури Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ осигурява ΠΏΠΎ-ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ изходния ΠΊΠΎΠ΄ ΠΈ гСнСрирания машинСн ΠΊΠΎΠ΄.

Π’ областта Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° (MM), Nimony сС отклонява ΠΎΡ‚ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ ΠΎΠΏΡ†ΠΈΠΈ, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² Nim 2.0, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΉΠΊΠΈ Π΅Π΄ΠΈΠ½Π΅Π½ стандартизиран Ρ€Π΅ΠΆΠΈΠΌ: "mm:atomicArc". Π’ΠΎΠ·ΠΈ Ρ€Π΅ΠΆΠΈΠΌ сС основава Π½Π° Π±Ρ€ΠΎΠ΅Π½Π΅ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, допълнСни със сСмантика Π½Π° прСмСстванС (move semantics) ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° дСструктори ΠΏΡ€ΠΈ ΡƒΠ½ΠΈΡ‰ΠΎΠΆΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ сблиТава ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° с ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈΡ‚Π΅, ΠΏΡ€ΠΈΠ΅Ρ‚ΠΈ Π² Rust ΠΈ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ C++.

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΎΡ‚ΠΎ нововъвСдСниС Π΅ явно Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ сС считат Π·Π° Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ (.acyclic), ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π½ΠΎΠ²ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π—Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ, СкзСмпляритС ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Ρ‚ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° явна анотация с ΠΏΡ€Π°Π³ΠΌΠ° .cyclic. ΠžΡ‚Π±Π΅Π»ΡΠ·Π²Π° сС, Ρ‡Π΅ сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° Π½ΠΎΠ² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ, Π½ΠΎ готовността ΠΌΡƒ Π·Π° индустриална ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° към ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½Π°. ΠŸΡ€Π΅Π΄ΠΈΠΌΡΡ‚Π²ΠΎΡ‚ΠΎ Π½Π° MM Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° дСструктори Π΅ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° композируСмост: ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° рСсурси, ΠΊΠΎΠΈΡ‚ΠΎ изискват освобоТдаванС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ дСскриптори, ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ сокСти, ΠΊΠ°Π½Π°Π»ΠΈ), сС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° СстСствСно Ρ‡Ρ€Π΅Π· дСструкторитС Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡŠΡ‚ към ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² Nimony ΠΏΡ€Π΅Ρ‚ΡŠΡ€ΠΏΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ. ΠΠ²Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° Nim изразява нСдоволство ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ тяхното Π΅ΠΌΡƒΠ»ΠΈΡ€Π°Π½Π΅ Ρ‡Ρ€Π΅Π· Π°Π»Π³Π΅Π±Ρ€ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ (sum types). ВмСсто Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° концСпцията Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² самия ΠΎΠ±Π΅ΠΊΡ‚ с Π΄Π°Π½Π½ΠΈ. ΠšΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ сС Π΄Π°Π²Π°Ρ‚: прСдставянС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² Π²Ρ…ΠΎΠ΄Π½ΠΎ-ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Ρ‡Ρ€Π΅Π· спСциално ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° NaN Π·Π° числа с ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая ΠΈΠ»ΠΈ low(int) Π·Π° Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΈ Ρ†Π΅Π»ΠΈ стойности. Π’ случаитС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΎΠ±Π΅ΠΊΡ‚ΡŠΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° инкапсулира ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π°, сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎ-Π»ΠΎΠΊΠ°Π»Π½Π° (thread-local) ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π·Π° сигнализиранС.

ВсС ΠΏΠ°ΠΊ, традиционният ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π° Nim остава, Π½ΠΎ с Π΅Π΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅: всяка ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, която ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, сСга трябва Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° бъдС Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½Π° сpragma {.raises.}. Π’ΠΎΠ²Π° изискванС Π΅ насочСно към явното ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈ Π½Π΅Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΠΈ Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅.

ΠšΠ°Ρ‚ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° ΠΈΠ»ΠΈ допълнСниС сС въвСТда Π½ΠΎΠ² ΠΈΠ·Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‚ΠΈΠΏ ErrorCode. Π’ΠΎΠ·ΠΈ Ρ‚ΠΈΠΏ Π΅ типобСзопасСн ΠΈ изисква ΠΈΠ·Ρ‡Π΅Ρ€ΠΏΠ°Ρ‚Π΅Π»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° всички възмоТни Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π° case Π·Π° enum). ErrorCode Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ с прСдвидимостта Π·Π° отразяванС Π½Π° стандартни ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ систСми ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ, ΠΊΠ°Ρ‚ΠΎ POSIX errno, ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π½Π° Windows API ΠΈ статуси HTTP. Π¦Π΅Π»Ρ‚Π° Π΅ Π΄Π° сС ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π΄Π° сС осигури Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° пряка транслация Π½Π° систСмни Π³Ρ€Π΅ΡˆΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π΄ΠΈΡΠΊΡŠΡ‚ Π΅ пълСн") Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° статус (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, HTTP 507) Π±Π΅Π· Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ прСобразувания. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ErrorCode ΡΡŠΡ‰ΠΎ позволява ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ разпространСниС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π±Π΅Π· задСлянС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ситуации с нСдостиг Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ (OOM).

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ситуации с ΠΈΠ·Ρ‡Π΅Ρ€ΠΏΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° (Out of Memory, OOM) Π² Nimony Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° с ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ разпространСната ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π½Π° Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ прСкратяванС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° ("die on OOM"). ВмСсто Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ, позволяващ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎ задСлянС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΡ‚ заявката, ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ прСизмСняСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ oomHandler. Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡΡ‚Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ записва Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Π°Ρ‚Π° заявка Π² ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΠΈ позволява Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ. Π‘ΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° нСдостиг Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π·Π° тСкущия ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Ρ‡Ρ€Π΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° threadOutOfMem().

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° прСдостави собствСна рСализация Π½Π° oomHandler, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅ ΠΈΠ»ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ прСкратяванС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π°ΠΊΠΎ Ρ‚Π°ΠΊΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΎ. Π’Π°ΠΆΠ΅Π½ аспСкт Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° конструиранС Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ (ref object), ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠ°Ρ‚ с нСуспСх ΠΏΠΎΡ€Π°Π΄ΠΈ OOM. Π’ Nimony Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ€Π΅Π· new ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΈ конструктори) ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС nil, Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π°Π²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΎΠ·ΠΈ случай ΠΏΠΎ аналогия с Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ (Option), ΠΊΠΎΠ΅Ρ‚ΠΎ прСдотвратява Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π΅Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π». Π’ контСкста Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ, Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½ΠΈ {.raises.}, Π²ΡŠΡ€Π½Π°Ρ‚Π°Ρ‚Π° стойност nil ΠΌΠΎΠΆΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π² ErrorCode.OutOfMemError.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π½Π° ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ (generics) Π² Nimony Π΅ ΡƒΡΡŠΠ²ΡŠΡ€ΡˆΠ΅Π½ΡΡ‚Π²Π°Π½ Π² сравнСниС с Nim 2.0. ΠžΡΠ½ΠΎΠ²Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ Π΅, Ρ‡Π΅ ΠΏΡŠΠ»Π½Π°Ρ‚Π° Ρ‚ΠΈΠΏΠΎΠ²Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° обобщСния ΠΊΠΎΠ΄ сСга сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π° Π½Π΅ само ΠΏΡ€ΠΈ инстанциранСто ΠΌΡƒ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅. ΠžΡ‡Π°ΠΊΠ²Π° сС Ρ‚ΠΎΠ²Π° Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π½Π° ΠΏΠΎ-Ρ€Π°Π½Π΅Π½ Π΅Ρ‚Π°ΠΏ ΠΎΡ‚ компилацията, Π΄Π° прСдостави ΠΏΠΎ-ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° ΠΎΡ‚ страна Π½Π° срСдствата Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (IDE), ΠΏΠΎ-спСциално Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ допълванС Π½Π° ΠΊΠΎΠ΄Π°.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈΡ‚Π΅ (concepts), ΠΊΠΎΠΈΡ‚ΠΎ Π²Π΅Ρ‡Π΅ ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π°Ρ‚ Π² Nim, Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚ своята роля ΠΊΠ°Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° статично описаниС Π½Π° изискванията към Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅. Π’Π΅ позволяват Ρ„ΠΎΡ€ΠΌΠ°Π»Π½ΠΎ Π΄Π° сС ΡƒΡ‚ΠΎΡ‡Π½ΠΈ Π½Π° ΠΊΠ°ΠΊΠ²ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ свойства трябва Π΄Π° отговаря Ρ‚ΠΈΠΏΡŠΡ‚, Π·Π° Π΄Π° бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Ρ‚ΠΎΠ·ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ контСкст.

Nimony сС стрСми към унификация Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° асинхронно ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΏΠΎΠ΄ Π΅Π΄ΠΈΠ½Π½Π° конструкция spawn. Π Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π°Π»ΠΈ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°, стартирана Ρ‡Ρ€Π΅Π· spawn, Ρ‰Π΅ сС изпълнява Π² ΡΡŠΡ‰ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊ (асинхронно) ΠΈΠ»ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚ ΠΏΡƒΠ» (ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎ), сС Π²Π·Π΅ΠΌΠ° ΠΎΡ‚ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΠ° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ΠΎΠ²Π° поставя ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ изисквания Π·Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅, ΠΏΡ€Π΅Π΄Π°Π²Π°Π½ΠΈ Π½Π° spawn: Ρ‚Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ бСзопасни Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° рСализация Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° Π½Π° конкурСнция Ρ‰Π΅ бъдС основана Π½Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΡ (continuations), Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ‰Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π² стил Π½Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΡ (Continuation-Passing Style, CPS). ЗабСлязва сС, Ρ‡Π΅ самата конструкция spawn Π½Π΅ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΊΠ°Ρ‚ΠΎ Π²Π³Ρ€Π°Π΄Π΅Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π½Π° Π΅Π·ΠΈΠΊΠ°, Π° ΠΊΠ°Ρ‚ΠΎ плъгин Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°.

ΠŸΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΌΡŠΡ‚ сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎ-проста Π·Π°Π΄Π°Ρ‡Π° Π² сравнСниС с конкурСнтността. Π—Π° написванСто Π½Π° чисто ΠΏΠ°Ρ€Π°Π»Π΅Π»Π΅Π½ ΠΊΠΎΠ΄, насочСн към изчислСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° масиви ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ), Nimony ΠΏΡ€Π΅Π΄Π»Π°Π³Π° спСциални конструкции, ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Ρ†ΠΈΠΊΠ»ΠΈ for, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Π½ΠΈ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«||Β». Π’ΠΎΠ²Π° позволява Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π±Π΅Π· нСобходимост ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° (flow vars), ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π·Π° Π·Π°Π΄Π°Ρ‡ΠΈ Π² Π½Π°ΡƒΡ‡Π½ΠΈ изчислСния ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π·Π° GPU.

БистСмата Π·Π° ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Nim, извСстна със своитС макроси, Π² Nimony Π΅Π²ΠΎΠ»ΡŽΠΈΡ€Π° към плъгини Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° (compiler plugins). ΠŸΠ»ΡŠΠ³ΠΈΠ½ΠΈΡ‚Π΅ прСдставляват ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π² Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ инструкции ΠΈ сС изпълнява Π½Π° ΠΏΠΎ-късни Π΅Ρ‚Π°ΠΏΠΈ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°, слСд Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅. Π’ΠΎΠ²Π° прСдоставя Π½Π° ΠΏΠ»ΡŠΠ³ΠΈΠ½ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ цялата информация Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ ΠΈ сСмантиката Π½Π° анализирания ΠΊΠΎΠ΄.

ΠžΠ±Π΅Ρ‰Π°Π²Π°Ρ‚ сС ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ ΠΈ ΠΏΠΎ-ΡƒΠ΄ΠΎΠ±Π½ΠΈ API Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° плъгини. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ NIF (Nim Intermediate Format) ΡΡŠΡ‰ΠΎ трябва Π΄Π° улСсни Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ трансформации Π½Π° ΠΊΠΎΠ΄Π°. ΠŸΠ»ΡŠΠ³ΠΈΠ½ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ допринася Π·Π° повишаванС Π½Π° производитСлността Π½Π° компилацията.

Π’ΠΈΠ΄ΠΎΠ²Π΅ плъгини:

  • Плъгини Π·Π° шаблони (Template Plugins): ΠŸΡ€ΠΈΠ²ΡŠΡ€Π·Π²Π°Ρ‚ сС към ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ шаблони ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ ΠΊΠΎΠ΄, ΡΠ²ΡŠΡ€Π·Π°Π½ с Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ повиквания.
  • ΠœΠΎΠ΄ΡƒΠ»Π½ΠΈ плъгини (Module Plugins): ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ AST (Abstract Syntax Tree) Π½Π° цСлия ΠΌΠΎΠ΄ΡƒΠ» ΠΈ трябва Π΄Π° Π²ΡŠΡ€Π½Π°Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ΠΎ Π΄ΡŠΡ€Π²ΠΎ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡΡ‚Π° spawn Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Ρ‡Ρ€Π΅Π· ΠΌΠΎΠ΄ΡƒΠ»Π΅Π½ плъгин.
  • Плъгини Π·Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ: Подобни са Π½Π° ΠΏΠ»ΡŠΠ³ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° шаблони, Π½ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ към ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ.
  • Плъгини Π·Π° Π½ΠΎΠΌΠΈΠ½Π°Π»Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅: ΠœΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ, замСняйки ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° β€žΠΌΠ°ΠΊΡ€ΠΎΡΠΈ Π·Π° прСписванС Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈβ€œ (term rewriting macros) ΠΎΡ‚ Nim. Π’ΠΎΠ²Π° позволява Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΏΡ€ΠΈ изпълнСниС Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π—Π° докумСнтацията Π½Π° Nimony Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ сайт, напълно Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ ΠΎΡ‚ ИИ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π° Π½Π° Nim Π·Π° достовСрност.

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

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