Régulièrement cité parmi les langages les plus populaires, Python est aussi un écosystème riche et vivant pour améliorer ses performances. C’est le cas de CPython, une implémentation de référence de Python et plusieurs sociétés travaillent pour améliorer ses performances. Récemment, Instagram a annoncé l’ouverture de sa solution Cinder pour dynamiser la version 3.8 de CPython.
Mis à la disposition de la communauté, il est accessible comme projet Facebook Incubator sur GitHub. Pour Instagram, l’objectif de la publication du code source est d’élaborer un CPython unifié et plus rapide. Dans ce cadre, le réseau social veut fédérer les contributions et éviter la duplication des travaux. Par ailleurs, il a déclaré qu'il n'y avait « aucune capacité » à soutenir Cinder en tant que projet open source, ni aucun désir qu'il devienne une alternative à CPython. Les développeurs de Cinder ont déclaré que l'objectif est de s'assurer que Cinder est suffisamment stable et rapide pour leur charge de travail de production, mais ils ne donnent aucune garantie quant à sa stabilité, son exactitude ou ses performances pour toute autre charge de travail
Plusieurs optimisations prévues
Cinder présente plusieurs optimisations de performance, dont la mise en cache inline du bytecode, l’évaluation rapide des co-routines, un compilateur JIT méthode par méthode, et un compilateur expérimental se servant des annotations de type pour émettre un bytecode spécialisé par type. A noter que l'implémentation de la mise en cache en ligne de Cinder observe les cas optimisables dans l'exécution des opcodes Python génériques et remplace dynamiquement ces opcodes par des versions spécialisées.
Pour l'évaluation de coroutines, si un appel à une fonction asynchrone est immédiatement attendu, la plateforme exécute la fonction appelée jusqu'à son premier « await ». Si la fonction appelée atteint « return » sans avoir besoin d'attendre, Cinder renverra cette valeur directement sans créer un objet coroutine ou différer à la boucle d'événement. Cela permet d'optimiser le processeur dans une charge de travail asynchrone lourde. Cinder est construit et testé sur Linux x64. D'autres plateformes, telles que MacOS, ne fonctionneront probablement pas, ont déclaré les développeurs.