Fedora continua imperterrita a far parlare di sé, tra proposte impensabili e proposte realizzate, oggi si passa al lato ottimizzazione: sembra infatti che gli sviluppatori si siano resi conto che Python, usato com’è stato usato fin’ora, avrebbe reso di meno di quanto realmente possibile.
Questo, perché sembra fin’ora Python sia stato compilato con la flag -fno-semantic-interposition (che sembra averlo limitato in performance). La documentazione di GCC in merito infatti dice:
“Alcuni formati di oggetti, come ELF, consentono l’interposizione di simboli da parte del linker dinamico. Ciò significa che per i simboli esportati dal DSO, il compilatore non può eseguire la propagazione interprocedurale, l’integrazione e altre ottimizzazioni in previsione che la funzione o la variabile in questione possano cambiare. Sebbene questa funzionalità sia utile, ad esempio, per riscrivere le funzioni di allocazione della memoria mediante un’implementazione di debug, è costosa in termini di qualità del codice. Con -fno-semantic-interposition il compilatore presuppone che se si verifica l’interposizione per funzioni, la funzione di sovrascrittura avrà esattamente la stessa semantica (e gli effetti collaterali). Allo stesso modo se si verifica l’interposizione per le variabili, il costruttore della variabile sarà lo stesso. Il flag non ha alcun effetto per le funzioni esplicitamente dichiarate in linea (dove non è mai consentito all’interposizione per cambiare la semantica) e per simboli esplicitamente dichiarati deboli “.
Di conseguenza, se non si usa la flag citata prima, le performance di Python dovrebbero aumentare del 27%.