Π’ Python встроСн JIT-компилятор

ДоступСн Π°Π»ΡŒΡ„Π° выпуск языка программирования Python 3.13.0a6, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»Π΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π² состав Π²Π΅Ρ‚ΠΊΠΈ 3.13, Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ формируСтся осСнний ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· Python 3.14, ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ JIT-компилятора, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ сущСствСнного ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ JIT Π² CPython Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° сборочная опция «—enable-experimental-jit». Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ JIT трСбуСтся установка LLVM Π² качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ зависимости.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ трансляции машинного ΠΊΠΎΠ΄Π° Π² JIT построСн c использованиСм Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ «Copy-and-Patch», ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ LLVM собираСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ELF, содСрТащий Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± инструкциях Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π·Π°ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. JIT замСняСт сгСнСрированныС Π² Ρ…ΠΎΠ΄Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ инструкции Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° Π½Π° ΠΈΡ… прСдставлСния Π² машинном ΠΊΠΎΠ΄Π΅, ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ подставляя Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для вычислСний Π΄Π°Π½Π½Ρ‹Π΅ (JIT ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΡƒΠΆΠ΅ скомпилированных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ подставляСт Π² Π½ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ значСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ константы).

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ JIT ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»Π΅Π½ ΠΎΡ‡Π΅Π½ΡŒ высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, простотой сопровоТдСния ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с компиляциСй Π² WebAssembly (Liftoff) Π½ΠΎΠ²Ρ‹ΠΉ JIT Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Π² 5 Ρ€Π°Π· быстрСС, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° 50% быстрСС. ΠŸΡ€ΠΈ сравнСнии с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ JIT-инструмСнтариСм LLVM Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π² CPython JIT обСспСчиваСт Π² 100 Ρ€Π°Π· Π±ΠΎΠ»Π΅Π΅ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΈ Π½Π° 15% Π±ΠΎΠ»Π΅Π΅ быстрый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ