ื”ืฆื™ื’ ืืช Pyston-lite, ืžื”ื“ืจ JIT ืขื‘ื•ืจ Python ืžืงื•ืจื™

ืžืคืชื—ื™ ืคืจื•ื™ืงื˜ Pyston, ื”ืžืฆื™ืข ื™ื™ืฉื•ื ื‘ืขืœ ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ืฉืœ ืฉืคืช Python ื‘ืืžืฆืขื•ืช ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืงื•ืžืคื™ืœืฆื™ื” JIT ืžื•ื“ืจื ื™ื•ืช, ื”ืฆื™ื’ื• ืืช ื”ืจื—ื‘ื” Pyston-lite ืขื ื™ื™ืฉื•ื ืฉืœ ืžื”ื“ืจ JIT ืขื‘ื•ืจ CPython. ื‘ืขื•ื“ ืฉ-Pyston ื”ื•ื ืขื ืฃ ืฉืœ ื‘ืกื™ืก ื”ืงื•ื“ ืฉืœ CPython ื•ืžืคื•ืชื— ื‘ื ืคืจื“, Pyston-lite ืžืชื•ื›ื ืŸ ื›ื”ืจื—ื‘ื” ืื•ื ื™ื‘ืจืกืœื™ืช ืฉื ื•ืขื“ื” ืœื”ืชื—ื‘ืจ ืœืžืคืจืฉืŸ ื”-Python ื”ืกื˜ื ื“ืจื˜ื™ (CPython).

Pyston-lite ืžืืคืฉืจ ืœืš ืœื”ืฉืชืžืฉ ื‘ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื”ื‘ืกื™ืกื™ื•ืช ืฉืœ Pyston ืžื‘ืœื™ ืœืฉื ื•ืช ืืช ื”ืžืชื•ืจื’ืžืŸ, ืขืœ ื™ื“ื™ ื”ืชืงื ืช ื”ืจื—ื‘ื” ื ื•ืกืคืช ื‘ืืžืฆืขื•ืช ืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช PIP ืื• Conda. Pyston-lite ื›ื‘ืจ ืžืชืืจื— ื‘ืžืื’ืจื™ PyPI ื•-Conda ื•ื›ื“ื™ ืœื”ืชืงื™ืŸ ืื•ืชื•, ืคืฉื•ื˜ ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื” "pip install pyston_lite_autoload" ืื• "conda install pyston_lite_autoload -c pyston". ืžื•ืฆืขื•ืช ืฉืชื™ ื—ื‘ื™ืœื•ืช: pyston_lite (ื™ืฉื™ืจื•ืช JIT) ื•-pyston_lite_autoload (ืžื‘ืฆืข ื”ื—ืœืคืช JIT ืื•ื˜ื•ืžื˜ื™ืช ื›ืืฉืจ ืชื”ืœื™ืš Python ืžืชื—ื™ืœ). ืืคืฉืจ ื’ื ืœืฉืœื•ื˜ ื‘ืื•ืคืŸ ืชื›ื ื•ืชื™ ืขืœ ื”ื›ืœืœืช JIT ืžื”ืืคืœื™ืงืฆื™ื” ืžื‘ืœื™ ืœื”ืชืงื™ืŸ ืืช ืžื•ื“ื•ืœ ื”ื˜ืขื™ื ื” ื”ืื•ื˜ื•ืžื˜ื™ืช, ื‘ืืžืฆืขื•ืช ื”ืคื•ื ืงืฆื™ื” pyston_lite.enable() .

ืœืžืจื•ืช ืฉ-Pyston-lite ืื™ื ื• ืžื›ืกื” ืืช ื›ืœ ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื”ื–ืžื™ื ื•ืช ื‘-Pyston, ื”ืฉื™ืžื•ืฉ ื‘ื• ื™ื›ื•ืœ ืœืฉืคืจ ืืช ื”ื‘ื™ืฆื•ืขื™ื ื‘ื›-10-25% ื‘ื”ืฉื•ื•ืื” ืœืคื™ื™ืชื•ืŸ 3.8 ื”ืจื’ื™ืœ. ื‘ืขืชื™ื“, ืžืชื•ื›ื ืŸ ืœื”ืขื‘ื™ืจ ืืช ืจื•ื‘ ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื”ืงื™ื™ืžื•ืช ื‘-Pyston ืœ-Pyston-lite, ื•ื›ืŸ ืœื”ืจื—ื™ื‘ ืืช ื”ื’ืจืกืื•ืช ื”ื ืชืžื›ื•ืช ืฉืœ CPython (ื”ืžื”ื“ื•ืจื” ื”ืจืืฉื•ื ื” ืชื•ืžื›ืช ืจืง ื‘-Python 3.8). ืชื•ื›ื ื™ื•ืช ื’ืœื•ื‘ืœื™ื•ืช ื ื•ืกืคื•ืช ื›ื•ืœืœื•ืช ืฉื™ืชื•ืฃ ืคืขื•ืœื” ืขื ืฆื•ื•ืช CPython ืœื™ื™ืฉื•ื ืžืžืฉืงื™ API ื—ื“ืฉื™ื ืขื‘ื•ืจ JIT, ื”ืžืืคืฉืจื™ื ืฉืœื™ื˜ื” ืžืœืื” ื™ื•ืชืจ ืขืœ ืขื‘ื•ื“ืช Python. ื”ื›ืœืœืช ื”ืฉื™ื ื•ื™ื™ื ื”ืžื•ืฆืขื™ื ื‘ืขื ืฃ Python 3.12 ื ื™ื“ื•ื ื”. ื‘ืื•ืคืŸ ืื™ื“ื™ืืœื™, ื ืฉืงืœืช ื”ืืคืฉืจื•ืช ืœื”ืขื‘ื™ืจ ืืช ื›ืœ ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืž-Pyston ืœืชื•ืš ื”ื”ืจื—ื‘ื”, ืžื” ืฉื™ืืคืฉืจ ืœื ื• ืœื”ื™ืžื ืข ืžืฉืžื™ืจื” ืขืœ ืžื–ืœื’ CPython ืžืฉืœื ื•.

ื‘ื ื•ืกืฃ ืœืคื™ืกื˜ื•ืŸ-ืœื™ื™ื˜, ื”ืคืจื•ื™ืงื˜ ืฉื—ืจืจ ื’ื ืขื“ื›ื•ืŸ ืœื—ื‘ื™ืœืช Pyston 2.3.4 ื”ืžืœืื”, ื”ืžืฆื™ืขื” ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื—ื“ืฉื•ืช. ื‘ืžื‘ื—ืŸ pyperformance, ื’ืจืกื” 2.3.4 ืžื”ื™ืจื” ื™ื•ืชืจ ืžื’ืจืกื” 2.3.3 ื‘ื›-6%. ืจื•ื•ื— ื”ื‘ื™ืฆื•ืขื™ื ื”ื›ื•ืœืœ ื‘ื”ืฉื•ื•ืื” ืœ-CPython ืžื•ืขืจืš ื‘-66%.

ื‘ื ื•ืกืฃ, ื ื™ืชืŸ ืœืฆื™ื™ืŸ ืืช ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ืฉืคื•ืชื—ื• ื‘ืžืกื’ืจืช ืžื—ื–ื•ืจ ื”ืคื™ืชื•ื— ืฉืœ CPython 3.11 ื‘ืคืจื•ื™ืงื˜ ื”ืจืืฉื™, ืืฉืจ ื‘ื—ืœืง ืžื”ื‘ื“ื™ืงื•ืช ืืคืฉืจื• ืœื”ื’ื“ื™ืœ ืืช ื”ื‘ื™ืฆื•ืขื™ื ื‘-25%. ืœื“ื•ื’ืžื”, ื‘-CPython 3.11 ื”ื•ื’ื“ืœื” ื”ื™ืขื™ืœื•ืช ืฉืœ ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ ืฉืœ ืžืฆื‘ ื”-bytecode ืฉืœ ืžื•ื“ื•ืœื™ื ื‘ืกื™ืกื™ื™ื, ืžื” ืฉื™ืื™ืฅ ืืช ื”ืฉืงืช ื”ืกืงืจื™ืคื˜ื™ื ื‘-10-15%. ืฉื™ื—ื•ืช ื”ืคื•ื ืงืฆื™ื” ื”ื•ืืฆื• ืžืฉืžืขื•ืชื™ืช ื•ื ื•ืกืคื• ืžืชื•ืจื’ืžื ื™ื ืžื”ื™ืจื™ื ืžื™ื•ื—ื“ื™ื ืฉืœ ืคืขื•ืœื•ืช ืกื˜ื ื“ืจื˜ื™ื•ืช. ื›ืžื• ื›ืŸ, ืžืชื‘ืฆืขืช ืขื‘ื•ื“ื” ืœื”ืขื‘ืจืช ื›ืžื” ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ืฉื”ื•ื›ื ื• ืขืœ ื™ื“ื™ ื”ืคืจื•ื™ืงื˜ื™ื Cinder ื•-HotPy.

ื‘ื ื•ืกืฃ, ื‘ืžืกื’ืจืช ืคืจื•ื™ืงื˜ nogil, ืžืชื‘ืฆืขืช ืขื‘ื•ื“ื” ืขืœ ืžืฆื‘ ื ื™ืกื™ื•ื ื™ ืœื‘ื ื™ื™ืช CPython ืœืœื ืžื ืขื•ืœ ืžืชื•ืจื’ืžืŸ ื’ืœื•ื‘ืœื™ (GIL, Global Interpreter Lock), ืฉืื™ื ื• ืžืืคืฉืจ ื’ื™ืฉื” ืžืงื‘ื™ืœื” ืœืื•ื‘ื™ื™ืงื˜ื™ื ืžืฉื•ืชืคื™ื ืžืฉืจืฉื•ืจื™ื ืฉื•ื ื™ื, ืžื” ืฉืžื•ื ืข ื”ืงื‘ื™ืœื” ืฉืœ ืคืขื•ืœื•ืช ืขืœ ืจื™ื‘ื•ื™ -ืžืขืจื›ื•ืช ืœื™ื‘ื”. ื›ืคืชืจื•ืŸ ื ื•ืกืฃ ืœื‘ืขื™ื™ืช GIL, ืžืชืคืชื—ืช ื”ื™ื›ื•ืœืช ืœืงืฉื•ืจ GIL ื ืคืจื“ ืœื›ืœ ืžืชื•ืจื’ืžืŸ ื”ืคื•ืขืœ ื‘ืชื•ืš ืชื”ืœื™ืš (ื™ื›ื•ืœื™ื ืœืจื•ืฅ ืžืกืคืจ ืžืชื•ืจื’ืžื ื™ื ื‘ืชื”ืœื™ืš ืื—ื“, ืืš ื™ืขื™ืœื•ืช ื”ื‘ื™ืฆื•ืข ื”ืžืงื‘ื™ืœ ืฉืœื”ื ืชืœื•ื™ื” ื‘-GIL).

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”