Pyston-lite, рд╕реНрдЯреЙрдХ Python рд╕рд╛рдареА JIT рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рд╛рджрд░ рдХреЗрд▓реЗ

рдЖрдзреБрдирд┐рдХ JIT рд╕рдВрдХрд▓рди рддрдВрддреНрд░рдЬреНрдЮрд╛рди рд╡рд╛рдкрд░реВрди рдкрд╛рдпрдерди рднрд╛рд╖реЗрдЪреА рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдкреНрд░рджрд╛рди рдХрд░рдгрд╛рд░реНтАНрдпрд╛ Pyston рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдиреА CPython рд╕рд╛рдареА JIT рдХрдВрдкрд╛рдЗрд▓рд░рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣ Pyston-lite рд╡рд┐рд╕реНрддрд╛рд░ рд╕рд╛рджрд░ рдХреЗрд▓рд╛. Pyston CPython codebase рдЪреА рдПрдХ рд╢рд╛рдЦрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реА рдЖрд╣реЗ, Pyston-lite рд╣реЗ рдорд╛рдирдХ Python рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ (CPython) рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдореНрд╣рдгреВрди рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗ рдЖрд╣реЗ.

Pyston-lite рддреБрдореНрд╣рд╛рд▓рд╛ PIP рдХрд┐рдВрд╡рд╛ Conda рдкреЕрдХреЗрдЬ рдореЕрдиреЗрдЬрд░ рд╡рд╛рдкрд░реВрди рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╕реНрддрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрди рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рди рдмрджрд▓рддрд╛ рдореВрд▓рднреВрдд Pyston рддрдВрддреНрд░рдЬреНрдЮрд╛рди рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. PyPI рдЖрдгрд┐ Conda repositories рдордзреНрдпреЗ Pyston-lite рдЖрдзреАрдкрд╛рд╕реВрди рд╣реЛрд╕реНрдЯ рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдлрдХреНрдд тАЬpip install pyston_lite_autoloadтАЭ рдХрд┐рдВрд╡рд╛ тАЬconda install pyston_lite_autoload -c pystonтАЭ рд╣реА рдЖрдЬреНрдЮрд╛ рдЪрд╛рд▓рд╡рд╛. рджреЛрди рдкреЕрдХреЗрдЬреЗрд╕ рдСрдлрд░ рдХреЗрд▓реА рдЬрд╛рддрд╛рдд: pyston_lite (рдереЗрдЯ JIT) рдЖрдгрд┐ pyston_lite_autoload (рдЬреЗрд╡реНрд╣рд╛ Python рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд░реВ рд╣реЛрддреЗ рддреЗрдВрд╡реНрд╣рд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд JIT рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░рддреЗ). pyston_lite.enable() рдлрдВрдХреНрд╢рди рд╡рд╛рдкрд░реВрди рдСрдЯреЛрд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдЗрдиреНрд╕реНрдЯреЙрд▓ рди рдХрд░рддрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдордзреВрди JIT рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдореЕрдЯрд┐рдХрд░рд┐рддреНрдпрд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рд╢рдХреНрдп рдЖрд╣реЗ.

Pyston-lite рдордзреНрдпреЗ Pyston рдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рд╕рд░реНрд╡ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдирд╕рд▓реЗ рддрд░реА, рддреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдирд┐рдпрдорд┐рдд Python 10 рдЪреНрдпрд╛ рддреБрд▓рдиреЗрдд рдЕрдВрджрд╛рдЬреЗ 25-3.8% рдиреЗ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░реВ рд╢рдХрддреЛ. рднрд╡рд┐рд╖реНрдпрд╛рдд, Pyston рдордзреНрдпреЗ рдЙрдкрд╕реНрдерд┐рдд рдЕрд╕рд▓реЗрд▓реА рдмрд╣реБрддрд╛рдВрд╢ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди Pyston-lite рд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрд╣реЗ, рддрд╕реЗрдЪ CPython рдЪреНрдпрд╛ рд╕рдорд░реНрдерд┐рдд рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрд╣реЗ (рдкрд╣рд┐рд▓реЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗрд╡рд│ Python 3.8 рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ). рдЕрдзрд┐рдХ рдЬрд╛рдЧрддрд┐рдХ рдпреЛрдЬрдирд╛рдВрдордзреНрдпреЗ JIT рд╕рд╛рдареА рдирд╡реАрди API рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА CPython рдЯреАрдорд╕реЛрдмрдд рд╕рд╣рдпреЛрдЧ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ Python рдЪреНрдпрд╛ рдХрд╛рдорд╛рд╡рд░ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдорд┐рд│реВ рд╢рдХрддреЗ. Python 3.12 рд╢рд╛рдЦреЗрддреАрд▓ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдмрджрд▓рд╛рдВрдЪреНрдпрд╛ рд╕рдорд╛рд╡реЗрд╢рд╛рд╡рд░ рдЪрд░реНрдЪрд╛ рдХреЗрд▓реА рдЬрд╛рдд рдЖрд╣реЗ. рддрджреНрд╡рддрдЪ, Pyston рдордзреВрди рд╕рд░реНрд╡ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдордзреНрдпреЗ рд╣рд▓рд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рд╢рдХреНрдпрддреЗрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪрд╛ рд╕реНрд╡рддрдГрдЪрд╛ CPython рдлреЛрд░реНрдХ рд░рд╛рдЦрдгреЗ рдЯрд╛рд│рддрд╛ рдпреЗрдИрд▓.

Pyston-lite рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдкреНрд░рдХрд▓реНрдкрд╛рдиреЗ рдкреВрд░реНрдг рд╡рд╛рдв рдЭрд╛рд▓реЗрд▓реНрдпрд╛ Pyston 2.3.4 рдкреЕрдХреЗрдЬрдЪреЗ рдЕрдкрдбреЗрдЯ рджреЗрдЦреАрд▓ рдЬрд╛рд░реА рдХреЗрд▓реЗ, рдЬреЗ рдирд╡реАрди рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдСрдлрд░ рдХрд░рддреЗ. рдкрд╛рдИрдкрд░рдлреЙрд░реНрдордиреНрд╕ рдЪрд╛рдЪрдгреАрдордзреНрдпреЗ, рдЖрд╡реГрддреНрддреА 2.3.4 рд░рд┐рд▓реАрдЭ 2.3.3 рдкреЗрдХреНрд╖рд╛ рд╕реБрдорд╛рд░реЗ 6% рд╡реЗрдЧрд╡рд╛рди рдЖрд╣реЗ. CPython рдЪреНрдпрд╛ рддреБрд▓рдиреЗрдд рдПрдХреВрдг рдХрд╛рдордЧрд┐рд░реА рд╡рд╛рдвреАрдЪрд╛ рдЕрдВрджрд╛рдЬ 66% рдЖрд╣реЗ.

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЖрдореНрд╣реА рдореБрдЦреНрдп рдкреНрд░рдХрд▓реНрдкрд╛рддреАрд▓ CPython 3.11 рд╡рд┐рдХрд╛рд╕ рдЪрдХреНрд░рд╛рдордзреНрдпреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдиреНрд╕ рд▓рдХреНрд╖рд╛рдд рдШреЗрдК рд╢рдХрддреЛ, рдЬреНрдпрд╛рдиреЗ рдХрд╛рд╣реА рдЪрд╛рдЪрдгреНрдпрд╛рдВрдордзреНрдпреЗ 25% рдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рдгреЗ рд╢рдХреНрдп рдХреЗрд▓реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, CPython 3.11 рдордзреНрдпреЗ рдореВрд▓рднреВрдд рдореЙрдбреНрдпреВрд▓реНрд╕рдЪреА рдмрд╛рдпрдХреЛрдб рд╕реНрдерд┐рддреА рдХреЕрд╢ рдХрд░рдгреНрдпрд╛рдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рдгреНрдпрд╛рдд рдЖрд▓реА рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рдЪреНрдпрд╛ рд▓рд╛рдБрдЪрдЪреА рдЧрддреА 10-15% рд╡рд╛рдвреЗрд▓. рдлрдВрдХреНрд╢рди рдХреЙрд▓ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╡реЗрдЧрд╡рд╛рди рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рдорд╛рдирдХ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреЗ рд╡рд┐рд╢реЗрд╖ рдЬрд▓рдж рджреБрднрд╛рд╖реА рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд. Cinder рдЖрдгрд┐ HotPy рдкреНрд░рдХрд▓реНрдкрд╛рдВрджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ рдХрд╛рд╣реА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдкреЛрд░реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рдорд╣реА рд╕реБрд░реВ рдЖрд╣реЗ.

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдиреЛрдЧрд┐рд▓ рдкреНрд░рдХрд▓реНрдкрд╛рдд, рдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рд▓реЙрдХ (GIL, рдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдкреНрд░реАрдЯрд░ рд▓реЙрдХ) рд╢рд┐рд╡рд╛рдп CPython рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдореЛрдбрд╡рд░ рдХрд╛рдо рд╕реБрд░реВ рдЖрд╣реЗ, рдЬреЗ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдереНрд░реЗрдбреНрд╕рдордзреВрди рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡рд╕реНрддреВрдВрдирд╛ рд╕рдорд╛рдВрддрд░ рдкреНрд░рд╡реЗрд╢рд╛рд╕ рдкрд░рд╡рд╛рдирдЧреА рджреЗрдд тАЛтАЛтАЛтАЛрдирд╛рд╣реА, рдЬреЗ рдорд▓реНрдЯреАрд╡рд░ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреЗ рд╕рдорд╛рдВрддрд░реАрдХрд░рдг рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ. - рдХреЛрд░ рд╕рд┐рд╕реНрдЯрдо. GIL рд╕рдорд╕реНрдпреЗрд╡рд░ рдЖрдгрдЦреА рдПрдХ рдЙрдкрд╛рдп рдореНрд╣рдгреВрди, рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рдЪрд╛рд▓рдгрд╛рд░реНтАНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рджреБрднрд╛рд╖реНрдпрд╛рд▓рд╛ рд╕реНрд╡рддрдВрддреНрд░ GIL рдмрд╛рдВрдзрдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реА рдЬрд╛рдд рдЖрд╣реЗ (рдЕрдиреЗрдХ рджреБрднрд╛рд╖реА рдПрдХрд╛рдЪ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рдЪрд╛рд▓реВ рд╢рдХрддрд╛рдд, рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдорд╛рдВрддрд░ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ GIL рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ).

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛