Π€Π΅ΡΡΠ±ΡΠΊ Π³ΠΎ ΠΎΠ±ΡΠ°Π²ΠΈ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π·Π° Project Cinder, Π²ΠΈΠ»ΡΡΠΊΠ° Π½Π° CPython 3.8.5, Π³Π»Π°Π²Π½Π°ΡΠ° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Python. Cinder ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π½Π° Facebook Π·Π° Π½Π°ΠΏΠΎΡΡΠ²Π°ΡΠ΅ Π½Π° Instagram ΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅.
ΠΠΎΠ΄ΠΎΡ Π΅ ΠΎΠ±ΡΠ°Π²Π΅Π½ Π·Π° Π΄Π° ΡΠ΅ Π΄ΠΈΡΠΊΡΡΠΈΡΠ° Π·Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΎ Π³Π»Π°Π²Π½Π°ΡΠ° ΡΠ°ΠΌΠΊΠ° Π½Π° CPython ΠΈ Π΄Π° ΠΈΠΌ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° CPython. Facebook Π½Π΅ΠΌΠ° Π½Π°ΠΌΠ΅ΡΠ° Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄Π΄ΡΠΆΠΈ Cinder Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ΄ΠΎΡ Π΅ ΠΏΡΠ΅ΡΡΡΠ°Π²Π΅Π½ Π²ΠΎ ΡΠΎΡΠΌΠ° Π²ΠΎ ΠΊΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ°ΡΠ°, Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ΡΠ»Π°ΡΠ΅ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°. Π’ΠΈΠ΅, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, Π½Π΅ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°Π°Ρ Π΄Π° Π³ΠΎ ΠΏΡΠΎΠΌΠΎΠ²ΠΈΡΠ°Π°Ρ Cinder ΠΊΠ°ΠΊΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° CPython - Π³Π»Π°Π²Π½Π°ΡΠ° ΡΠ΅Π» Π½Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ Π΅ ΠΆΠ΅Π»Π±Π°ΡΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΡΠ°ΠΌΠΈΠΎΡ CPython.
Π‘ΠΈΠ½Π΄Π΅Ρ ΠΊΠΎΠ΄ΠΎΡ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ°Π½ ΠΊΠ°ΠΊΠΎ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠΈΠ³ΡΡΠ΅Π½ ΠΈ ΡΠ΅ΡΡΠΈΡΠ°Π½ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ, Π½ΠΎ Π°ΠΊΠΎ ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ΅ ΠΌΠΎΡΠ° ΡΠ°ΠΌΠΈ Π΄Π° Π³ΠΈ ΡΠ΅ΡΠΈΡΠ΅, Π±ΠΈΠ΄Π΅ΡΡΠΈ Facebook Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ° Π΄Π΅ΠΊΠ° ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈ Π½Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΠ΅ ΠΏΠΎΠ²Π»Π΅ΡΠ΅ Π±Π°ΡΠ°ΡΠ°. ΠΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Facebook Π½Π΅ ΡΠ° ΠΈΡΠΊΠ»ΡΡΡΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ²Π½Π°ΡΠ° ΡΠΎΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎ Π·Π°Π΅Π΄Π½ΠΈΡΠ°ΡΠ° ΠΈ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ Π΄Π° ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ° Π·Π° ΠΈΠ΄Π΅ΠΈ ΠΊΠ°ΠΊΠΎ Cinder Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΡΡΠ΅ ΠΏΠΎΠ±ΡΠ· ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ Π·Π°Π±ΡΠ·Π° ΡΡΠ°Π½ΡΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ Π³Π»Π°Π²Π½ΠΈΠΎΡ Π΄Π΅Π» Π½Π° CPython.
ΠΠ»Π°Π²Π½ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ Π²ΠΎ Cinder:
- ΠΠ³ΡΠ°Π΄Π΅Π½ΠΎ ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° Π±Π°ΡΡΠ΅ΠΊΠΎΠ΄ (βΠ±Π°ΡΡΠΎΠΊΠΎΠ΄ Π²ΠΎ ΡΠ΅Π½ΠΊΠ°β). Π‘ΡΡΡΠΈΠ½Π°ΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠΈΠΏΠΈΡΠ΅Π½ ΠΎΠΏΡΠΈΡΠΊΠΈ ΠΊΠΎΠ΄ ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ° ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ Π΄Π° ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈ ΡΠ°ΠΊΠΎΠ² ΠΎΠΏΡΠΈΡΠΊΠΈ ΠΊΠΎΠ΄ ΡΠΎ ΠΏΠΎΠ±ΡΠ·ΠΈ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΠΏΡΠΈΠΈ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΌΠ΅Π½Π° Π½Π° ΡΠ΅ΡΡΠΎ Π½Π°ΡΠ΅ΠΊΡΠ²Π°Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ).
- ΠΠ΅ΡΡΡΠΏΠ»ΠΈΠ²Π° ΠΊΠΎΡΡΡΠΈΠ½ΡΠΊΠ° Π΅Π²Π°Π»ΡΠ°ΡΠΈΡΠ°. ΠΠ° ΠΏΠΎΠ²ΠΈΡΠΈ Π·Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π°Π°Ρ Π²Π΅Π΄Π½Π°Ρ (ΡΠ΅ΠΊΠ°ΡΠ΅ΡΠΎ Π½Π΅ ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ ΡΠ΅ΠΊΠ°ΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° ΡΠ° Π΄ΠΎΡΡΠΈΠ³Π½ΡΠ²Π° ΠΈΠ·ΡΠ°Π²Π°ΡΠ° Π·Π° Π²ΡΠ°ΡΠ°ΡΠ΅ ΠΏΠΎΡΠ°Π½ΠΎ), ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΠΎΠ΄ ΡΠ°ΠΊΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΠ²Π° Π±Π΅Π· Π΄Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ ΠΊΠΎΡΡΡΠΈΠ½Π° ΠΈΠ»ΠΈ Π΄Π° Π²ΠΊΠ»ΡΡΡΠ²Π° ΡΠΈΠΊΠ»ΡΡ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ. ΠΠΎ ΠΊΠΎΠ΄ΠΎΡ Π½Π° Facebook ΡΡΠΎ ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΡΠΈ async/wait, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ Π·Π°Π±ΡΠ·ΡΠ²Π°ΡΠ΅ ΠΎΠ΄ ΠΎΠΊΠΎΠ»Ρ 5%.
- Π‘Π΅Π»Π΅ΠΊΡΠΈΠ²Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ° Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (metod-at-a-time). ΠΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΎ ΠΏΡΠ΅ΠΊΡ ΠΎΠΏΡΠΈΡΠ°ΡΠ° β-X jitβ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° PYTHONJIT=1 ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΎ Π·Π°Π±ΡΠ·Π°ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠ³Ρ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π° ΠΈΠ·Π²Π΅Π΄Π±Π° Π·Π° 1.5-4 ΠΏΠ°ΡΠΈ. ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ°ΡΠ° Π½Π° JIT Π΅ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½Π° ΡΠ°ΠΌΠΎ Π·Π° ΡΠ΅ΡΡΠΎ ΠΈΠ·Π²ΡΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ Π΅ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΠ»ΠΈΠ²ΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΠ΅ΡΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΈΠΈΡΡΠΎ ΡΡΠΎΡΠΎΡΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° Π³ΠΎ Π·Π°Π±Π°Π²Π°Ρ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°.
ΠΡΠ΅ΠΊΡ ΠΎΠΏΡΠΈΡΠ°ΡΠ° β-X jit-list-file=/path/to/jitlist.txtβ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΠΎΠΏΠΊΡΡΠΆΡΠ²Π°ΡΠ΅ΡΠΎ βPYTHONJITLISTFILE=/path/to/jitlist.txtβ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠΎ Π»ΠΈΡΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΊΠΎΠΈ JIT ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ (ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΏΠ°ΡΠ΅ΠΊΠ°ΡΠ° .to.module:funcname ΠΈΠ»ΠΈ path.to.module:ClassName.method_name). Π‘ΠΏΠΈΡΠΎΠΊΠΎΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΊΠΎΠΈ ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ JIT ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°ΡΠ΅ΡΠΎ. ΠΠΎ ΠΈΠ΄Π½ΠΈΠ½Π°, ΡΠ΅ ΠΎΡΠ΅ΠΊΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ° JIT Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π²Π½Π°ΡΡΠ΅ΡΠ½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΡΡΠ΅ΠΊΠ²Π΅Π½ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ²ΠΈΡΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ Π·Π΅ΠΌΠ°ΡΡΠΈ Π³ΠΈ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° Instagram, ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ°ΡΠ° JIT Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½Π° ΠΈ Π·Π° Facebook Π²ΠΎ ΠΏΠΎΡΠ΅ΡΠ½Π°ΡΠ° ΡΠ°Π·Π°.
JIT ΠΏΡΠ²ΠΎ Π³ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ° Python Π±Π°ΡΡΠΎΠΊ Π²ΠΎ ΡΡΠ΅Π΄Π½ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ (HIR), ΡΡΠΎ Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π±Π»ΠΈΡΠΊΡ Π΄ΠΎ Python Π±Π°ΡΡΠ΅ΠΊΠΎΠ΄ΠΎΡ, Π½ΠΎ Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠΈ Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΎΠ½Π°Π° Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° ΠΎΡΠ°ΠΊ, Π° ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΊΠΎΡΠΈΡΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΠΏΠΎΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π΄Π΅ΡΠ°Π»ΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΊΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ (ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ Π±ΡΠΎΠ΅ΡΠ΅ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ) . ΠΠΎΡΠΎΠ°, HIR ΡΠ΅ ΠΏΡΠ΅ΡΠ²ΠΎΡΠ° Π²ΠΎ ΡΠΎΡΠΌΠ° SSA (ΡΡΠ°ΡΠΈΡΠΊΠ° Π΅Π΄ΠΈΠ½Π΅ΡΠ½Π° Π·Π°Π΄Π°ΡΠ°) ΠΈ ΠΏΠΎΠΌΠΈΠ½ΡΠ²Π° Π½ΠΈΠ· ΡΠ΅ΠΊΠΎΡΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ° ΠΊΠΎΠΈ Π³ΠΈ Π·Π΅ΠΌΠ°Π°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄ Π±ΡΠΎΠ΅ΡΠ΅ΡΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π·Π° ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°. ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΡΠ΅Π΄Π½ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ (LIR), Π±Π»ΠΈΡΠΊΡ Π΄ΠΎ Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΡΠΊΠΈ ΡΠ°Π·ΠΈΠΊ. ΠΠΎ Π΄ΡΡΠ³Π° ΡΠ°Π·Π° Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° LIR, ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π°Ρ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° asmjit.
- Π‘ΡΡΠΎΠ³ ΡΠ΅ΠΆΠΈΠΌ Π·Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ° Π²ΠΊΠ»ΡΡΡΠ²Π° ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ: Type StrictModule. Π‘ΡΠ°ΡΠΈΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ²ΡΠ΄ΠΈ Π΄Π΅ΠΊΠ° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΎΡ Π½Π΅ΠΌΠ° Π²Π»ΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ· ΠΊΠΎΠ΄ΠΎΡ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΡΠΎΡ ΠΌΠΎΠ΄ΡΠ». ΠΠ°ΡΠΎΠ²Π°ΡΡΠ²Π°Ρ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΠΎΡ ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° Π΄Π΅ΠΊΠ° ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ ΡΠ΅ Π²ΠΎ ΡΡΡΠΎΠ³ ΡΠ΅ΠΆΠΈΠΌ (ΡΠΈΡΡΠ°ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° βΡΠ²ΠΎΠ· __strict__β), ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π·Π° ΠΎΡΡΡΡΡΠ²ΠΎ Π½Π° ΠΏΡΠ΅ΡΠ΅ΡΠΈ ΡΠΎ Π΄ΡΡΠ³ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ Π²ΡΠΈΡΡΠ²Π° ΡΡΡΠΎΠ³ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π²ΠΎ sys.modules ΠΊΠ°ΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ StrictModule.
- Static Python Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ Π½Π° Π±Π°ΡΡΠ΅ΠΊΠΎΠ΄ ΠΊΠΎΡ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ Π·Π° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π±Π°ΡΡΠ΅ΠΊΠΎΠ΄ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΡΠΈΠΏΠΎΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΠ±ΡΠ·ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ°ΡΠ° JIT. ΠΠΎ Π½Π΅ΠΊΠΎΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ, ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠ°ΡΠ° Π½Π° Static Python ΠΈ JIT ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ° Π²ΠΎ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π΄ΠΎ 7 ΠΏΠ°ΡΠΈ Π²ΠΎ ΡΠΏΠΎΡΠ΅Π΄Π±Π° ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΠΎΡ CPython. ΠΠΎ ΠΌΠ½ΠΎΠ³Ρ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΡΠ΅ ΠΏΡΠΎΡΠ΅Π½ΡΠ²Π° Π΄Π΅ΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ Π±Π»ΠΈΡΠΊΡ Π΄ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΈΡΠ΅ MyPyC ΠΈ Cython.
ΠΠ·Π²ΠΎΡ: opennet.ru