Facebook ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π·Π° Project Cinder, ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π½Π° CPython 3.8.5, ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Python. Cinder ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π½Π° Facebook Π·Π° Π·Π°Ρ ΡΠ°Π½Π²Π°Π½Π΅ Π½Π° Instagram ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°.
ΠΠΎΠ΄ΡΡ Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½, Π·Π° Π΄Π° ΠΎΠ±ΡΡΠ΄ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠ΅Π½Π°ΡΡΠ½Π΅ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΠΌ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°ΠΌΠΊΠ° Π½Π° CPython ΠΈ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΡΡΠ°ΡΡΠ²Π°ΡΠΈ Π² ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° CPython. Facebook Π½Π΅ Π²ΡΠ·Π½Π°ΠΌΠ΅ΡΡΠ²Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Cinder ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ΄ΡΡ ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ Π²ΡΠ² Π²ΠΈΠ΄Π°, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°, Π±Π΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ²Π°Π½Π΅ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. Π’Π΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π½Π΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π΄Π° ΠΏΠΎΠΏΡΠ»ΡΡΠΈΠ·ΠΈΡΠ°Ρ Cinder ΠΊΠ°ΡΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° CPython - ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ΅Π» Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΡΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΡΠ°ΠΌΠΈΡ CPython.
ΠΠΎΠ΄ΡΡ Π½Π° Cinder Π΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π°Π½ ΠΊΠ°ΡΠΎ Π΄ΠΎΡΡΠ° Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΠΈ ΡΠ΅ΡΡΠ²Π°Π½ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ, Π½ΠΎ Π°ΠΊΠΎ Π±ΡΠ΄Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΈ ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΡΠ°ΠΌΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Facebook Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Facebook Π½Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ²Π½ΠΎ ΡΡΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° ΠΈ Π΅ Π³ΠΎΡΠΎΠ² Π΄Π° ΠΎΠ±ΡΡΠ΄ΠΈ ΠΈΠ΄Π΅ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Cinder ΠΎΡΠ΅ ΠΏΠΎ-Π±ΡΡΠ· ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π° ΡΡΠΊΠΎΡΠΈ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΊΡΠΌ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° CPython.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ Π² Cinder:
- ΠΠ³ΡΠ°Π΄Π΅Π½ΠΎ ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°ΠΉΡ ΠΊΠΎΠ΄ (βΠ·Π°ΡΠ΅Π½ΡΠ΅Π½ Π±Π°ΠΉΡ ΠΊΠΎΠ΄β). Π‘ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π΅ Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠΈΠΏΠΈΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½, ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈ ΡΠ°ΠΊΡΠ² ΠΊΠΎΠ΄ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ ΠΏΠΎ-Π±ΡΡΠ·ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΠΏΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΌΡΠ½Π° Π½Π° ΡΠ΅ΡΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ).
- ΠΠ΅ΡΡΡΠΏΠ΅Π»ΠΈΠ²Π° ΡΡΡΡΡΠΈΠ½Π½Π° ΠΎΡΠ΅Π½ΠΊΠ°. ΠΠ° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ (await Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π΄ΠΎΡΡΠΈΠ³Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π° Π²ΡΡΡΠ°Π½Π΅ ΠΏΠΎ-ΡΠ°Π½ΠΎ), ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΡΠ°ΠΊΠΈΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ Π·Π°ΠΌΠ΅ΡΡΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ, Π±Π΅Π· Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΡΡΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π° ΡΠΈΠΊΡΠ» Π½Π° ΡΡΠ±ΠΈΡΠΈΡ. ΠΡΠ² Facebook ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ ΡΠΈΠ»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° async/await, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ ΠΎΡ ΠΎΠΊΠΎΠ»ΠΎ 5%.
- Π‘Π΅Π»Π΅ΠΊΡΠΈΠ²Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (method-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.
- Π‘ΡΡΠΎΠ³ ΡΠ΅ΠΆΠΈΠΌ Π·Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π²ΠΊΠ»ΡΡΠ²Π° ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°: Π’ΠΈΠΏ StrictModule. Π‘ΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ, ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΠΎΠ΄ΡΠ» Π½ΡΠΌΠ° Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π²ΡΡΡ Ρ ΠΊΠΎΠ΄Π° ΠΈΠ·Π²ΡΠ½ ΡΠΎΠ·ΠΈ ΠΌΠΎΠ΄ΡΠ». ΠΠ°ΡΠ΅ΠΆΠ΄Π°Ρ ΠΌΠΎΠ΄ΡΠ», ΠΊΠΎΠΉΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ, ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ ΡΠ° Π² ΡΡΡΠΎΠ³ ΡΠ΅ΠΆΠΈΠΌ (ΠΊΠΎΠ΄ΡΡ ΡΠΊΠ°Π·Π²Π° βimport __strict__β), ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π·Π° Π»ΠΈΠΏΡΠ° Π½Π° ΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ Ρ Π΄ΡΡΠ³ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π° ΡΡΡΠΎΠ³ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π² sys.modules ΠΊΠ°ΡΠΎ ΠΎΠ±Π΅ΠΊΡ StrictModule.
- Π‘ΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Python Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π½Π° Π±Π°ΠΉΡ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΠΏ, Π·Π° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ Π·Π° ΡΠΈΠΏΠ° Π±Π°ΠΉΡ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ°. Π Π½ΡΠΊΠΎΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΡΠ° ΠΎΡ ΡΡΠ°ΡΠΈΡΠ΅Π½ Python ΠΈ JIT Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π΄ΠΎ 7 ΠΏΡΡΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ CPython. Π ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ Π±Π»ΠΈΠ·ΠΊΠΈ Π΄ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈΡΠ΅ MyPyC ΠΈ Cython.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru