Er is een alpha-release van de Python-programmeertaal 3.13.0a6 beschikbaar, die opvalt door de opname in de 3.13-branch, op basis waarvan de herfststabiele release van Python 3.14 wordt gevormd, een experimentele implementatie van een JIT-compiler die het mogelijk maakt een aanzienlijke prestatieverbetering. Om JIT in CPython in te schakelen, is een build-optie “—enable-experimental-jit” toegevoegd. JIT vereist dat LLVM wordt geïnstalleerd als een extra afhankelijkheid.
Het proces van het vertalen van machinecode naar JIT is gebouwd met behulp van de “Copy-and-Patch” -architectuur, waarbij een objectbestand in ELF-formaat wordt samengesteld met behulp van LLVM, met gegevens over bytecode-instructies en informatie over de noodzakelijke gegevensvervanging. JIT vervangt de bytecode-instructies die tijdens de programma-interpretatie worden gegenereerd door hun representaties in machinecode, en vervangt tegelijkertijd de gegevens die nodig zijn voor berekeningen (JIT kopieert kant-en-klare sjablonen van reeds gecompileerde functies en vervangt de noodzakelijke waarden, zoals argumenten en constanten, daarin).
Het voorgestelde JIT valt op door de zeer hoge snelheid waarmee code wordt gegenereerd, het onderhoudsgemak en de volledige integratie met de tolk. Vergeleken met compileren met WebAssembly (Liftoff) genereert de nieuwe JIT code vijf keer sneller, en de resulterende code wordt 5% sneller uitgevoerd. Vergeleken met traditionele JIT-tooling biedt LLVM's toegevoegde JIT aan CPython 50x snellere codegeneratie en 100% snellere resulterende code.
Bron: opennet.ru
