URL: https://linuxfr.org/users/serge_ss_paille/journaux/pythran-0-9-12-heskenn Title: pythran 0.9.12 - heskenn Authors: serge_sans_paille Date: 2021年07月14日T09:14:53+02:00 License: CC By-SA Tags: pythran et scipy Score: 23 Demat' iNal, je ne suis plus aussi diligent dans mes annonces de sortie de Pythran, mais j'ai quelques anecdotes à raconter pour la version 0.9.12 sortie hier, donc je me lance. Petit rappel : Pythran est un compilateur pour noyaux de calcul scientifique écrit en Python. Il transforme ces derniers en code natif ne faisant appel à l'interpréteur qu'aux frontières avec le code interprété (pour la conversion entre objets Python et objet natifs), et peut générer du code vectoriel et/ou multi-threadé (via des directives OpenMP). Un code Pythran typique ressemble à ceci : ```python import numpy as np #pythran export _sum_abs_axis0(float[:,:]) def _sum_abs_axis0(X): block_size = 2**20 r = None for j in range(0, X.shape[0], block_size): y = np.sum(np.abs(X[j:j+block_size]), axis=0) if r is None: r = y else: r += y return r ``` La dernière release de Scipy utilise Pythran pour compiler quelques uns de ces noyaux de calcul. C'est un gros "utilisateur" de Pythran et ça apporte son lot de défi technique. Par exemple Pythran dépend de networkx (lib de graphe) qui dépend depuis peu de Scipy. Hop une dépendance circulaire que l'on a cassée en extrayant le (très petit) sous ensemble de networkx dont nous avions besoin dans un module embarqué dans pythran. Autre plaisir : Scipy est utilisé sous AIX, et nous n'avions jamais eu le plaisir de nous attaquer à cette plateforme dans Pythran. Fort heureusement les parties spécifiques à l'architecture matérielle sont relégée au compilateur final par Pythran, donc ce port s'est effectué sans douleur. Sous Windows, le choix a été fait de ne reposer que sur `clang-cl` pour l'étape de compilation finale, MSVC et le C++ moderne, ça reste une source de déception sans fin pour moi, j'ai remonté plusieurs bugs puis juste abandonné l'idée... Depuis que Pythran est dans Fedora, nous suivons avec plus de zèle les dernières versions de Python, qui apportent parfois des changements dans l'AST et par conséquence dans Pythran. Fort heureusement, deux petits paquest, `gast` et `beniget`, abstraient la majorité des changements, ils ont subit une mise à jour dernièrement et Pythran en tire parti. Voilà un bien joli *défilé* de nouvelles, les plus curieux s'empresseront de décorticer le [changelog](https://pythran.readthedocs.io/en/latest/Changelog.html)