Microsoft Pyjion увеличава скоростта на Python

Нов проект с отворен код на Microsoft, Pyjion, подобрява скоростта на езика Python, като увеличава своя интерпретатор на запаси с JIT, получен от проекта CoreCLR на Microsoft.

Стандартното издание на Python, CPython, интерпретира само байт кода на приложенията на Python и не ускорява, като компилира кода по никакъв начин. Един често срещан метод за ускоряване на Python е да замени изцяло CPython. PyPy, популярен заместител на CPython, използва JIT компилатор за ускоряване на приложенията на Python.

PyPy осигурява силен ускорител на скоростта на много приложения, но не на всички, а понякога дори осигурява по-лоша производителност от CPython. Освен това няма най-добрата поддръжка за модули за разширение CPython, които се използват широко в приложения на Python като научни изчисления; по този начин някои от най-запалените потребители на Python изобщо не могат да използват PyPy.

Pyjion използва различен подход. Той добавя JIT API към CPython, така че множество JIT могат да бъдат включени директно в CPython. Тъй като CPython все още се използва, приложенията се изпълняват както обикновено, включително тези, които разчитат на модули за разширение.

Също така, Pyjion е насочен към Python 3, където други проекти за ускоряване на Python до голяма степен са облагодетелствали Python 2. PyPy поддържа Python 3, но само Python 3.2, толкова много езикови конструкции, добавени оттогава (като  async/await) няма да работят.

Microsoft твърди, че подходът на Pyjion е по-гъвкав, тъй като компонентът JIT се третира като ресурс, който може да се включи. Изборът на JIT, базиран на CoreCLR, не е предназначен да бъде единствената опция, а по-скоро служи като доказателство за концепцията. Според документацията на GitHub, Microsoft се надява, че това „ще доведе до разпространение на JIT времена за изпълнение на Python, позволявайки на хората да изберат JIT, който най-добре отговаря на работното им натоварване“.

Microsoft допринася за съществуващи проекти с отворен код чрез предимно непряка подкрепа на собствените си усилия. Приносът му към ядрото на Linux, например, беше главно за превръщането на Linux в първокласен гражданин в Azure. Но езиковата му работа е малко по-отворена и ако Pyjion намери сцепление, това ще бъде един от най-големите приноси на Microsoft за екосистемата на език, в който преди това не е имал пряка ръка.