ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Codon, компилятор для языка Python

Π‘Ρ‚Π°Ρ€Ρ‚Π°ΠΏ Exaloop ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Codon, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ компилятор для языка Python, способный Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ чистый ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π½Π΅ привязанный ΠΊ Python runtime. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ развиваСтся Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ Python-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ языка Seq ΠΈ позиционируСтся ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ развития. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ прСдлагаСтся собствСнный runtime для исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π½Π° языкС Python. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты компилятора, runtime ΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ написаны с использованиСм языков C++ (с ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΈΠ· LLVM) ΠΈ Python, ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSL (Business Source License).

ЛицСнзия BSL Π±Ρ‹Π»Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° соосноватСлями MySQL Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ Open Core. Π‘ΡƒΡ‚ΡŒ BSL Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ доступСн для внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ бСсплатно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ соблюдСнии Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… условий, для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… трСбуСтся ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ коммСрчСской Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Π΅ условия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π‘odon ΠΏΡ€Π΅Π΄ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠΎΠ΄Π° Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ Apache 2.0 Ρ‡Π΅Ρ€Π΅Π· 3 Π³ΠΎΠ΄Π° (1 ноября 2025 Π³ΠΎΠ΄Π°). Π”ΠΎ этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ лицСнзия Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, распространСниС ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, ΠΏΡ€ΠΈ условии использования Π½Π΅ Π² коммСрчСских цСлях.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² прСподносится ΠΊΠ°ΠΊ близкая ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ, написанным Π½Π° языкС Π‘ΠΈ. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с использованиСм CPython прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ компиляции с использованиСм Codon оцСниваСтся Π² 10-100 Ρ€Π°Π· для ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. ΠŸΡ€ΠΈ этом Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Python Π² Codon Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ примСнСния многопоточности, которая позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π΅Ρ‰Ρ‘ большСго увСличСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Codon Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для использования скомпилированного прСдставлСния Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….

Codon построСн с использованиСм ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² компиляторС ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ синтаксиса. НапримСр, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ развиваСтся нСсколько ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для использования Π² Π±ΠΈΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΈ финансовой ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Для управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сборщик мусора Boehm.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ΠΎΠΌ поддСрТиваСтся большая Ρ‡Π°ΡΡ‚ΡŒ синтаксиса Python, Π½ΠΎ компиляция Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ряд ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΌΠ΅ΡˆΠ°ΡŽΡ‰ΠΈΡ… использованию Codon Π² качСствС ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ‹ CPython. НапримСр, Π² Codon для Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 64-разрядный Ρ‚ΠΈΠΏ int, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² CPython Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Ρ… чисСл Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°. Для достиТСния совмСстимости с Codon Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Π±Π°Π· ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ нСсовмСстимости Π²Ρ‹Π·Π²Π°Π½Ρ‹ отсутствиСм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для Codon ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Python-ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ использования Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… динамичСских возмоТностСй языка. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ нСсовмСстимости компилятор Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ диагностичСскоС сообщСниС с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Codon, компилятор для языка Python


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