Facebook lance Pyre, un vérificateur de type statique pour Python

Cet outil va-t-il révolutionner le développement avec Python ?

Placé sous une licence libre proche de la licence BSD, Python est un langage de programmation objet, multiparadigme et multiplateforme. Il favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d’un typage dynamique fort, d’une gestion automatique de la mémoire par ramasse-miettes et d’un système de gestion d’exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl. Il fonctionne sur la plupart des plateformes informatiques et est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser.

Selon un classement de la popularité des langages de programmation, Python est le deuxième langage le plus utilisé des développeurs après JavaScript et le langage de programmation le plus populaire de mai 2018. Plusieurs outils d’aide au développement en Python ont été développés. Parmi eux, Pyre qui est un vérificateur de type statique. Son but est de vous permettre d’écrire un Python idiomatique et lisible sans vous encombrer. Il est conçu pour aider à améliorer la qualité et la vitesse de développement dans les grandes bases de code Python en signalant interactivement les erreurs de type dans votre éditeur favori. Il vérifie les annotations de type progressif qui font déjà partie du langage de programmation Python.

Pyre est conçu pour être hautement parallèle, optimisant les réponses quasi instantanées afin que vous obteniez une rétroaction immédiate, même dans une grande base de code. De par leur conception, les annotations de type ne sont pas obligatoires partout. Si vous n’êtes pas totalement attaché au typage statique, ou si vous avez une base de code existante que vous avez l’intention de convertir progressivement au fil du temps, vous pouvez toujours obtenir des résultats utiles.

Python est beaucoup utilisé dans le monde et aussi par les plus grandes start-up comme Facebook et Instagram. Il est apprécié pour son expressivité, sa flexibilité et sa productivité. Cependant, certains de ces avantages se sont estompés au fil du temps. Car, l’absence de garanties statiques peut rendre plus difficile la modification en toute sécurité d’une base de code existante. Cela rend le code plus sujet aux erreurs et ralentit le développement par rapport au code typé statiquement. Il est difficile de créer des outils de haute qualité comme la recherche de code, la saisie semi-automatique, la navigation et le réusinage du code (le refactoring). Les développeurs Python devront donc faire face à un défi majeur à cause du manque d’outils comme ceux-ci et cela est particulièrement préjudiciable lorsque vous travaillez dans une grande base de code.

C’est pour résoudre ces problèmes que Facebook a développé Pyre pour être à la fois un vérificateur de type conforme à la norme PEP 484 (support d’annotation de type pour Python) et une plateforme idéale pour la création d’outils d’analyse statique plus approfondis. Le vérificateur de type Pyre est conçu avec une performance interactive. Le but est de fournir toutes les erreurs de type pertinentes dès que possible. Pour ce faire, il fonctionne comme un serveur qui met continuellement à jour sa compréhension de votre code en mémoire. Il utilise Watchman (un service de surveillance de fichiers) pour repérer les modifications apportées à votre code.

Pyre maintient une représentation graphique de dépendance de votre code. Lorsque votre code change, Pyre ne réanalysera que le code qui a changé et ses dépendances directes, mettant à jour le graphe de dépendance en cours de route. Les résultats sont disponibles depuis la ligne de commande, sous forme de JSON structuré, ou via l’intégration avec VSCode et Nuclide. Au-delà de la vérification de type, Pyre prend en charge un certain nombre de fonctionnalités, telles que le recontrôle automatique des fichiers édités via le Language Server Protocol (LSP).

En interne, l’architecture de haut niveau de Pyre est similaire à celle de Hack, le vérificateur de type Facebook pour PHP. Comme le vérificateur de type Hack, Pyre est implémenté dans OCaml et utilise une architecture de données à mémoire partagée sans verrou pour réaliser le parallélisme. Pyre est compatible avec Python 3 et supporte actuellement la majorité des fonctionnalités définies dans PEP 484. Pyre est envisagé pour être compatible avec mypy qui est l’implémentation de référence de facto pour la vérification de type Python, même si des différences mineures de mise en œuvre sont possibles. Il prendra en charge la vérification de type Python à mesure que le langage évolue.

Dans la même rubrique

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 22 |

Actu en image