Π€Π΅Ρ˜ΡΠ±ΡƒΠΊ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Cinder, Π²ΠΈΠ»ΡƒΡˆΠΊΠ° Π½Π° CPython ΡˆΡ‚ΠΎ ја користи Instagram

Π€Π΅Ρ˜ΡΠ±ΡƒΠΊ Π³ΠΎ објави ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π·Π° 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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€