Home Mondo Mercati Politica Clima Abbonati Ora
Deep Tech

Python 3.15: L'attivazione del JIT Nativo

Il nuovo compilatore Just-In-Time sperimentale promette incrementi di velocità fino al 20%. Un'analisi tecnica su come attivarlo, verificarlo e misurare l'impatto reale sul codice.

VS
Vittoria Sforza Global Markets Lead
24 Dic 2025 6 Min Read
Python Code
FIG 1.0 — Il JIT nativo è disponibile nelle build sperimentali di Python 3.15.

La compilazione "Just-in-Time" (JIT) è stata a lungo la chiave di volta per accelerare i linguaggi interpretati. Fino a poco tempo fa, in Python, questo significava affidarsi a librerie di terze parti come Numba o interpreti alternativi come PyPy. Con Python 3.15, ancora in fase Alpha ma già testabile, il team di sviluppo core ha integrato un JIT nativo che inizia a mostrare i muscoli.

I risultati preliminari indicano che il JIT nativo può accelerare l'esecuzione del codice fino al 20% o più, sebbene i guadagni dipendano drasticamente dal tipo di operazione. Mentre alcuni programmi mostrano miglioramenti drammatici, altri rimangono invariati. È il segnale che il lavoro di ottimizzazione sta iniziando a pagare dividendi.

Stato: Sperimentale

Il JIT è disabilitato di default. Per attivarlo è necessario impostare la variabile d'ambiente PYTHON_JIT=1. È sconsigliato abilitarlo globalmente nel proprio ambiente utente; meglio utilizzarlo in sessioni specifiche o script di shell dedicati.

Verifica dell'attivazione

Dalla versione 3.13 in poi, il modulo sys include il namespace sys._jit per l'introspezione. Ecco le tre utility fondamentali per verificare lo stato del compilatore:

Il Benchmark: Il caso Mandelbrot

Poiché non esiste ancora una strumentazione utente per tracciare il JIT, l'unico metodo di validazione è il benchmarking comparativo. Il seguente script per il calcolo del frattale di Mandelbrot mostra guadagni consistenti.

from time import perf_counter
import sys

print("JIT enabled:", sys._jit.is_enabled())

WIDTH, HEIGHT = 80, 40
X_MIN, X_MAX = -2.0, 1.0
Y_MIN, Y_MAX = -1.0, 1.0
ITERS = 500

YM = (Y_MAX - Y_MIN)
XM = (X_MAX - X_MIN)

def iter(c):
    z = 0j
    for _ in range(ITERS):
        if abs(z) > 2.0:
            return False
        z = z ** 2 + c
    return True

def generate():
    start = perf_counter()
    output = []
    for y in range(HEIGHT):
        cy = Y_MIN + (y / HEIGHT) * YM
        for x in range(WIDTH):
            cx = X_MIN + (x / WIDTH) * XM
            c = complex(cx, cy)
            output.append("#" if iter(c) else ".")
        output.append("\n")
    print("Time:", perf_counter()-start)
    return output

print("".join(generate()))

Eseguendo questo codice con il JIT abilitato, si nota un miglioramento delle prestazioni stabile attorno al 20%. Aumentare la variabile ITERS costringe il programma a un carico di lavoro maggiore, rendendo il divario ancora più evidente.

3.15 Versione Python (Alpha)
+20% Speedup Medio (Task intensivi)
Native Integrazione Core

I limiti attuali: Il caso Fibonacci

Non tutto il codice beneficia immediatamente del JIT. Un esempio negativo è l'implementazione ricorsiva della sequenza di Fibonacci. Nella versione 3.15a3, non si registrano miglioramenti percepibili rispetto all'esecuzione standard.

def fib(n):
    if n <= 1:
        return n
    return fib(n-1) + fib(n-2)

Sorprendentemente, anche una versione non ricorsiva dello stesso algoritmo non mostra benefici significativi. Questo evidenzia l'attuale opacità del comportamento del compilatore: capire perché certi pattern di codice vengono ottimizzati e altri no richiede ancora un approccio empirico.

"Ciò che è performante oggi potrebbe non esserlo domani. Ogni revisione Alpha può cambiare radicalmente il comportamento del JIT."

L'approccio migliore per gli sviluppatori oggi è quello della sperimentazione cauta. Così come per le build "no-GIL", il JIT nativo rappresenta il futuro delle prestazioni di Python, ma non è ancora pronto per la produzione critica. Tuttavia, per chi cerca di estrarre performance in ambiti computazionali specifici senza dipendenze esterne, il segnale è chiaro: il native JIT è finalmente arrivato.