Le compilateur Nuitka Python-to-C prépare de gros gains de performances

Nuitka, un compilateur qui transforme Python en C pour des gains de performances et un runtime plus portable, a atteint sa version 0.6 - un jalon qui jette les bases de futurs gains de performances. Comme l'a dit Kay Hayen, développeur de Nuitka, «des améliorations de performances sont probables dans chaque version à venir.»

Nuitka 0.6 applique des optimisations aux booltypes de Python ( true/false), de sorte que le code qui les utilise peut être réduit au code C le plus efficace possible. Les booloptimisations viennent en prélude à des optimisations similaires pour d'autres types de variables.

Nuitka, comme Cython, compile un programme Python vers C et lie l'exécutable résultant au runtime Python pour une compatibilité maximale. Les versions 2.6, 2.7 et 3.3 à 3.7 de Python sont toutes prises en charge, y compris les constructions comme async.

Les programmes Python compilés avec Nuitka peuvent bénéficier d'importantes améliorations de performances. Hayen affirme qu'une version compilée par Nuitka du benchmark Pystone tourne environ 312% plus rapidement qu'une implémentation CPython conventionnelle.

Mais Hayen prévient que les améliorations de performances les plus significatives attendent l'arrivée de l'inférence de type dans Nuitka, permettant la traduction complète de certains types d'objets Python en versions C natives.

Le dynamisme de Python rend de nombreux types d'optimisations intrinsèquement difficiles. De nombreuses optimisations Cython nécessitent beaucoup de conseils et une syntaxe d'annotation spécialisée pour obtenir les meilleurs résultats. Le projet Nuitka vise à fournir les mêmes types d'optimisations sans que le développeur n'ait à annoter le code.

Un autre accélérateur Python couramment utilisé, PyPy, fonctionne en compilant juste à temps le code Python en assemblage. Mais PyPy fonctionne mieux pour l'optimisation sur place; il n'est pas adapté à la compilation d'une application Python déployée de manière autonome. Nuitka génère des exécutables autonomes. L'un de ses cas d'utilisation potentiels est l'empaquetage d'une application Python pour une distribution tierce.

D'autres améliorations de Nuitka 0.6 incluent la prise en charge sur Windows des compilateurs Clang, Microsoft Visual C ++ et Cygwin, la mise en cache des fichiers objets pour une recompilation plus rapide (encore une fois, sous Windows) et le formatage automatique du code C généré  clang-formatpour plus de lisibilité.