Programmering

Microsoft Pyjion øger Python-hastigheden

Et nyt open source Microsoft-projekt, Pyjion, forbedrer Python-sprogets hastighed ved at udvide dets aktietolker med en JIT, der stammer fra Microsofts CoreCLR-projekt.

Pythons standardudgave runtime, CPython, fortolker kun bytekoden til Python-apps og accelererer ikke ved at kompilere koden på nogen måde. En almindelig metode til at fremskynde Python er at erstatte CPython helt. PyPy, en populær CPython-erstatning, anvender en JIT-compiler til at fremskynde Python-applikationer.

PyPy giver en kraftig hastighedsforøgelse til mange applikationer, men ikke alle, og det leverer undertiden endda dårligere ydelse end CPython. Det har heller ikke den bedste understøttelse af CPython-udvidelsesmoduler, som er meget udbredt i Python-applikationer som videnskabelig computing; nogle af de mest ivrige Python-brugere kan således slet ikke udnytte PyPy.

Pyjion tager en anden tilgang. Det tilføjer en JIT API til CPython, så flere JIT'er kan sættes direkte i CPython. Da CPython stadig er i brug, kører apps som normalt, inklusive dem, der er afhængige af udvidelsesmoduler.

Også Pyjion målretter mod Python 3, hvor andre Python-accelerationsprojekter stort set har favoriseret Python 2. PyPy understøtter Python 3, men kun Python 3.2, så mange sprogkonstruktioner tilføjet siden da (såsomasynkroniser / afventer) fungerer ikke.

Microsoft hævder, at Pyjions tilgang er mere fleksibel, da JIT-komponenten behandles som en stikbar ressource. Valget af en JIT baseret på CoreCLR er ikke beregnet til at være den eneste mulighed, men det tjener snarere som et proof-of-concept. Ifølge dokumentationen på GitHub håber Microsoft, at dette "vil føre til en spredning af JIT-driftstider for Python, så folk kan vælge en JIT, der bedst passer til deres arbejdsbyrde."

Microsoft bidrager til eksisterende open source-projekter via for det meste indirekte støtte til sin egen indsats. Dens bidrag til Linux-kernen handlede for eksempel hovedsageligt om at gøre Linux til en førsteklasses borger i Azure. Men dets sprogarbejde har været lidt mere åbent, og hvis Pyjion finder trækkraft, vil det være et af de største bidrag, som Microsoft har ydet til økosystemet på et sprog, som det tidligere ikke havde nogen direkte hånd i.