Выпуск Nuitka 4.0, компилятора для языка Python. ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ развития JIT Π² CPython

Ang usa ka pagpagawas sa Nuitka 4.0 nga proyekto anaa, nga naghimo sa usa ka compiler alang sa paghubad sa mga script sa Python ngadto sa usa ka representasyon sa C, nga mahimo unya nga i-compile ngadto sa usa ka executable file gamit ang libpython alang sa maximum compatibility sa CPython (gamit ang lumad nga CPython nga mga himan alang sa pagmaniobra sa mga butang). Naghatag bug-os nga pagkaangay sa karon nga pagpagawas sa Python 2.6, 2.7, 3.4 - 3.13. Kung itandi sa CPython, ang gihugpong nga mga script nagpakita sa usa ka 335% nga pag-uswag sa pasundayag sa mga pagsulay sa pystone. Ang code sa proyekto giapod-apod ubos sa lisensya sa Apache.

Sa bag-ong bersyon:

  • ВнСсСны измСнСния для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ совмСстимости с Python 3.12, 3.13 ΠΈ 3.14, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ синтаксиса аннотирования Ρ‚ΠΈΠΏΠΎΠ² для ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… классов ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования компилятора Zig (zig cc) Π² качСствС бэкСнда Π‘ΠΈ-компилятора Π² Nuitka.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° LTO-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ использовании компилятора Clang.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ Β«@nuitka_ignoreΒ» для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ компиляции Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ: Β«β€”projectΒ» для сборки с использованиСм настроСк ΠΈΠ· Ρ„Π°ΠΉΠ»Π° pyproject.toml, Β«β€”devel-profile-compilationΒ» для профилирования Π½Π° этапС сборки, Β«β€”debug-self-forkingΒ» для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ„ΠΎΡ€ΠΊ-Π±ΠΎΠΌΠ±, Β«β€”include-windows-runtime-dllsΒ» для ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ C runtime DLL Π² Windows, Β«β€”qt-debug-pluginsΒ» для диагностики Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Qt-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… вСрсий ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² oracledb, win32ctypes, dask, dataparser, puremagic, pygments.lexers, tomli, av, sentry_sdk, jedi, parso, line_profiler ΠΈ pandas.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ ΠΎ прогрСссС развития JIT-компилятора Π² CPython. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ поставили ΠΏΠ΅Ρ€Π΅Π΄ собой Ρ†Π΅Π»ΡŒ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JIT ΠΊ выпуску CPython 3.15 Π½Π° 5%, Π° ΠΊ выпуску 3.16 ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° 10% ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования JIT Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Free-threading (Π±Π΅Π· глобальной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ). Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии использованиС JIT Π² Π°Π»ΡŒΡ„Π°-сборках CPython 3.15 ΡƒΠΆΠ΅ дСмонстрируСт Π² срСднСм ускорСниС Π½Π° 11-12% Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ macOS AArch64 ΠΈ Π½Π° 5-6% Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ x86_64 Linux ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со стандартным ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ΠŸΡ€ΠΈ этом Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… тСстах ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ JIT ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚ ускорСния Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 100%, Π΄ΠΎ замСдлСния Π½Π° 20%.

 Выпуск Nuitka 4.0, компилятора для языка Python. ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ развития JIT Π² CPython


Source: opennet.ru

Idugang sa usa ka comment