- Pyrefly von Meta ist ein in Rust entwickelter Open-Source-Python-Type-Checker sowie eine IDE-Erweiterung
- Er unterstützt ultraschnelle Analyseleistung und IDE-Integration und wurde entwickelt, um die Grenzen von Pyre zu überwinden
- Automatische Typinferenz, Unterstützung für große Codebasen und eine Open-Source-Philosophie gehören zu den Grundprinzipien
- Durch Zusammenarbeit und Beiträge aus der Python-Community soll das Typsystem im gesamten Ökosystem verbessert werden
- Derzeit ist eine Alpha-Version verfügbar, und um Feedback und Beiträge aus der Community wird aktiv gebeten
Einführung
- Pyrefly ist ein von Meta in Rust entwickelter Open-Source-statischer Type Checker für Python sowie ein IDE-Erweiterungsprojekt
- Es unterstützt die frühzeitige Erkennung von Fehlern, indem es die Konsistenz von Typen vor der Codeausführung überprüft
- Durch die Integration in die IDE und die Nutzung per CLI bietet es einen flexiblen Workflow
- Ziel ist es, durch die Zusammenarbeit mit der Open-Source-Community zur Weiterentwicklung des Python-Typsystems und verschiedener Bibliotheken beizutragen
Hintergrund der Entwicklung von Pyrefly
- 2017 entwickelte Meta für die umfangreiche Python-Codebasis von Instagram einen neuen Type Checker, aus dem später Pyre wurde
- Pyre orientierte sich an robusten Designs wie Hack und Flow und wurde aus Performance-Gründen in OCaml entwickelt
- Mit der Zeit stiegen die Anforderungen an die Weiterentwicklung des Typsystems und an die IDE-Anbindung, wodurch Grenzen sichtbar wurden
- Auch Community-Tools wie Pyright wurden verwendet, erfüllten jedoch Anforderungen wie die Navigation in großen Codebasen oder den Export von Typen nur eingeschränkt, weshalb die Entwicklung von Pyrefly begonnen wurde
Die wichtigsten Prinzipien von Pyrefly
-
1. Performance
- Entwickler benötigen direkt nach dem Schreiben von Code bei jedem Tastendruck eine schnelle Typprüfung
- Pyrefly ist als hochperformante Rust-Implementierung ausgelegt, die selbst extrem große Codebasen mit 1,8 Millionen Zeilen pro Sekunde prüfen kann
-
2. IDE-zentriertes Design
- Die Abstraktionsarchitektur wurde von Anfang an so entworfen, dass IDE und CLI dieselbe Sicht beibehalten können
- Bei Pyre wurde dies nachträglich ergänzt, bei Pyrefly wird Konsistenz bereits in der Entwurfsphase betont
-
3. Inferenz
- Auch in Python-Code ohne Annotationen oder explizit angegebene Typen wird automatische Typinferenz unterstützt
- Die IDE zeigt Typen von Rückgabewerten und lokalen Variablen an, und für besseres Coding können per Doppelklick inferierte Typen automatisch eingefügt werden
-
4. Open Source
- Pyrefly wird unter der MIT-Lizenz auf GitHub veröffentlicht, Community-PRs und Issue-Meldungen sind willkommen
- Es soll eng mit dem Python-Ökosystem und wichtigen Meta-Bibliotheken wie PyTorch verbunden sein und über einen Discord-Kanal einen aktiven Austausch fördern
Die Zukunft von Pyrefly
- Gemeinsam mit der Community arbeitet das Projekt daran, die Python-Sprache und die Developer Experience zu verbessern
- Seit den Anfängen von Pyre wurden Code-Offenlegung und Beiträge zu PEPs gepflegt; auch mit Pyrefly soll der Nutzen von Typen für verschiedene Entwickler, Bibliotheken und Einsteiger maximiert werden
- Auf Grundlage der Erfahrungen und Erfolge beim Einsatz von Typen in dynamischen Sprachen will Meta weitere Erkenntnisse teilen und die Typqualität im Ökosystem verbessern
- Pyrefly befindet sich derzeit zwar noch in der Alpha-Phase, wird aber mit dem Ziel eines offiziellen Launches in diesem Sommer kontinuierlich durch Bugfixes und neue Funktionen weiterentwickelt
- Feedback aus der Community ist sehr wichtig, und nach der Nutzung von Pyrefly wird ausdrücklich um Issue-Reports und Verbesserungsvorschläge gebeten
Hinweise zur Nutzung der Pyrefly-Alpha und zur Community
- Der Entwicklungsprozess von Pyrefly und technische Details wurden im Meta Tech Podcast sowie in Vorträgen auf der PyCon US vorgestellt
- Weitere Informationen werden über verschiedene Kanäle wie die Meta-Open-Source-Websites, YouTube, Facebook, Threads, X und LinkedIn bereitgestellt
1 Kommentare
Hacker-News-Kommentare
uvist so populär, dass ich ahne, dasstyin diesem Bereich gewinnen könnte. Im schlimmsten Fall könnte eine Situation wie bei Atom oder Flow entstehen, in der ein internes Team gegenüber externem Open Source zurückfällt und von oben die Stimmung aufkommt: „Brauchen wir dieses Team wirklich noch? Lasst es zu Open Source wechseln.“ Ich denke, das ist etwas, worauf das Management (Aaron Pollack?) achten sollte.mypyweiterhin existiert.Pyrightauf TypeScript basiert; dennoch die persönliche Erfahrung, dass er schneller alsmypyist.Pylint, der pro Codezeile einzelne Checks ausführe und deshalb mehr als 30 Sekunden benötige. Daraus folgt die Behauptung, dass es sich sehr wohl um einen performance-kritischen Bereich handelt.pyreflynicht nur anvscodegebunden ist, verbunden mit der Bitte, etwas mehr Rücksicht auf unterschiedliche Präferenzen verschiedener Menschen zu nehmen.pycharmsei ebenfalls nicht absolut besser. Man selbst finde die Remote-Entwicklung invscodepraktisch und würde umgekehrt auch nicht ins Internet schreiben wollen, dasspycharmschlecht sei.