A famosa linguagem de programação Python e o Fedora parecem ter sido feitos um para o outro. Pelo menos em relação aos scripts. Assim, eles podem estar notavelmente mais rápidos após o lançamento do Fedora 32 em abril. De acordo com os primeiros testes, o Python pode executar até 27% mais rápido no Fedora 32 com otimização.
Originalmente para o Fedora 32, os desenvolvedores procuravam vincular estaticamente o Python para obter melhor desempenho. No entanto, devido ao feedback, eles reduziram esse resultado. Então, foram muitas otimizações do Python no Fedora 32. Isto levou à criação do Python com o -fno-semantic-interposition compiler flag.
Python pode executar até 27% mais rápido no Fedora 32 com otimização
De acordo com a documentação do GCC no sinalizador de interposição semântica
Alguns formatos de objeto, como ELF, permitem a interposição de símbolos pelo vinculador dinâmico. Isso significa que, para os símbolos exportados do DSO, o compilador não pode executar propagação interprocedural, inlining e outras otimizações antecipando que a função ou variável em questão possa ser alterada.
Embora esse recurso seja útil, por exemplo, para reescrever funções de alocação de memória por uma implementação de depuração, é caro em termos de qualidade do código. Com a interposição -fno-semântica, o compilador assume que, se ocorrer interposição para funções, a função de substituição terá exatamente a mesma semântica (e efeitos colaterais). Da mesma forma, se ocorrer interposição para variáveis, o construtor da variável será o mesmo.
Interposição semântica
Os desenvolvedores do Fedora descobriram que construir o Python com interposição -fno-semântica pode obter até 27% mais desempenho, dependendo da atividade executada. Exemplos de teste como nbody, scimark, django, ray-tracing e muitos outros geraram melhorias de desempenho na faixa de 20 a 27% com muito mais performance na faixa de 5 a 20%, conforme medido pelo PyPerformance.
A única desvantagem dessa alteração de nenhuma interposição semântica é que LD_PRELOAD não pode ser usado com Python para substituir símbolos.
Mais detalhes sobre essa mudança concluída no Fedora Wiki.