- ty, ein in Rust geschriebener ultraschneller Python-Type-Checker und Language Server, wurde als Beta-Version veröffentlicht
- Er wurde als Alternative zu mypy, Pyright und Pylance entwickelt und bietet eine 10- bis 60-fach höhere Leistung
- Durch eine inkrementelle Architektur werden bei Code-Änderungen nur die erforderlichen Teile neu berechnet, um die Reaktionsgeschwindigkeit in Echtzeit zu maximieren
- Mit Fokus auf Genauigkeit und Benutzerfreundlichkeit unterstützt ty moderne Features des Type-Systems wie Intersection Types, fortgeschrittenes Type Narrowing und Reachability Analysis
- Astral plant, ty gemeinsam mit Ruff und uv zu einem zentralen Entwicklungswerkzeug des Python-Ökosystems auszubauen
Überblick über ty
- ty ist ein von Astral entwickelter Python-Type-Checker und Language Server, implementiert in Rust
- Er wurde als deutlich schnellere Alternative zu mypy, Pyright und Pylance konzipiert
- Er wird bereits in Astrals internen Projekten umfassend eingesetzt und wird in der Beta-Phase auch externen Nutzern empfohlen
- Astral ist ein Team, das hochperformante Entwicklungswerkzeuge für das Python-Ökosystem entwickelt, und ist bekannt für uv (Paketmanager) und Ruff (Linter und Formatter)
Leistung und Architektur
- ty wurde mit einer Language-Server-zentrierten Struktur entworfen und verwendet einen inkrementellen Verarbeitungsansatz, bei dem bei Dateiänderungen nur notwendige Berechnungen erneut ausgeführt werden
- Dadurch sind Echtzeit-Updates im Editor sehr schnell
- Selbst bei Ausführung ohne Cache ist ty 10- bis 60-mal schneller als mypy und Pyright
- Beispiel: Bei der Änderung zentraler Dateien im PyTorch-Repository beträgt die Zeit zur Neuberechnung der Diagnosen 4,7 ms und ist damit 80-mal schneller als Pyright (386 ms) und 500-mal schneller als Pyrefly (2,38 Sekunden)
- Auch in großen Projekten beträgt der Leistungsunterschied bei inkrementellen Updates oft ein Vielfaches von mehreren Dutzend
Type-System und Genauigkeit
- ty unterstützt Intersection Types, fortgeschrittenes Type Narrowing und typbasierte Reachability Analysis
- Damit liefert es präzises Type-Feedback und reduziert unnötige False Positives
- Das Ziel ist nicht nur mehr Geschwindigkeit, sondern der Aufbau eines Type-Checkers, der sowohl Genauigkeit als auch User Experience verbessert
Diagnosesystem
- ty enthält ein fortschrittliches Diagnosesystem, das von den Fehlermeldungssystemen des Rust-Compilers inspiriert ist
- In einer einzelnen Diagnosemeldung wird der Kontext aus mehreren Dateien gemeinsam dargestellt, sodass Ursache und Lösungsweg eines Problems klarer werden
- Beispiel: Bei einer falschen Zuweisung eines Dictionary-Schlüssels werden sowohl die Stelle des Type-Mismatchs als auch der Deklarationsort angezeigt
- Die Diagnoseausgabe ist die zentrale Schnittstelle von ty und wurde so gestaltet, dass sie für Menschen und KI gleichermaßen leicht verständlich ist
Language-Server-Funktionen
- ty kann in allen Editoren verwendet werden, die LSP (Language Server Protocol) unterstützen, etwa VS Code und Cursor
- Es unterstützt moderne Language-Server-Funktionen wie Go to Definition, Rename Symbol, Autovervollständigung, Auto-Import, semantisches Syntax-Highlighting und Inlay Hints
- Die Installation ist über eine VS-Code-Erweiterung möglich; die CLI kann mit dem Befehl
uv tool install ty@latest installiert werden
Ausblick
- Kurzfristige Ziele nach der Beta sind mehr Stabilität und Bugfixes, die Vervollständigung der Python-Type-Spezifikation sowie Unterstützung für Pydantic und Django
- Langfristig soll ty zur Engine für semantische Funktionen in Astrals Toolchain ausgebaut werden
- Geplant sind Features wie Entfernung toten Codes, Erkennung ungenutzter Abhängigkeiten, Reachability Analysis für Sicherheitslücken (CVEs) und typbewusstes Linting
- Astral will ty kontinuierlich verbessern, mit dem Ziel, Python zum produktivsten Programmierökosystem zu machen
Danksagung
- An der Entwicklung von ty waren Dutzende Open-Source-Mitwirkende beteiligt; das Projekt wird unter der MIT-Lizenz veröffentlicht
- Mehrere Personen und Teams aus den Communities rund um Salsa, Elixir und Python Typing lieferten technische Zusammenarbeit und Inspiration
- Das Kernteam von Astral entwickelte ty auf Grundlage eines tiefen Verständnisses von Typentheorie, der Semantik der Python-Runtime und Nutzungsmustern im Ökosystem
Noch keine Kommentare.