
TypeScript 7.0 überarbeitet den Compiler in Go und sorgt so für bis zu 12-mal schnellere Builds
Die neueste TypeScript-Version von Microsoft enthält einen nativen, auf Go basierenden Compiler, der deutlich schnellere Builds und einen geringeren Speicherverbrauch verspricht.
Eine Übersetzung von 🇬🇧 Linuxiac.com
Microsoft hat die Veröffentlichung von TypeScript 7.0 angekündigt, eines der bedeutendsten Updates in der Geschichte der Sprache. Im Gegensatz zu vielen früheren Versionen steht diesmal nicht eine lange Liste neuer Syntaxfunktionen im Vordergrund. Stattdessen konzentriert sich TypeScript 7.0 auf Geschwindigkeit.
Die wichtigste Neuerung ist, dass die neue Version eine native Portierung des TypeScript-Compilers und der Tools enthält, die in Go geschrieben wurde. Laut Microsoft bietet die neue Implementierung die Leistung von nativem Code, Multithreading mit gemeinsam genutztem Speicher sowie eine Reihe von Optimierungen, die bei großen Projekten aus der Praxis in der Regel zu 8- bis 12-mal schnelleren vollständigen Builds führen.
Microsoft erklärt, dass TypeScript 7.0 so konzipiert wurde, dass die Kompatibilität mit dem bestehenden Compiler gewahrt bleibt, während die Implementierung auf nativen Code umgestellt wird. Die neue Go-basierte Portierung wurde so originalgetreu wie möglich an die ursprüngliche Codebasis angepasst, wobei Struktur und Logik, soweit praktikabel, beibehalten wurden, um konsistente Ergebnisse zwischen dem alten und dem neuen Compiler zu gewährleisten.
Die Leistungszahlen sind mehr als beeindruckend. In den Benchmarks von Microsoft sank die Kompilierungszeit für die VS Code-Codebasis von 125,7 Sekunden mit TypeScript 6.0 auf 10,6 Sekunden mit TypeScript 7.0 – eine Verbesserung um das 11,9-Fache. Bei Sentry sank die Zeit von 139,8 Sekunden auf 15,7 Sekunden, während Bluesky, Playwright und tldraw Beschleunigungen zwischen dem 7,7- und 8,9-Fachen verzeichneten.
Auch die Speichernutzung hat sich verbessert. In denselben Tests verbrauchte TypeScript 7.0 bei mehreren großen Projekten insgesamt weniger Speicher, wobei die Einsparungen zwischen 6 % und 26 % lagen.
Die Reaktionsgeschwindigkeit des Editors ist ein weiterer Bereich, in dem Verbesserungen erzielt wurden. Laut Microsoft dauerte es zuvor etwa 17,5 Sekunden, bis beim Öffnen einer Datei mit einem Fehler im VS Code-Quellcode der erste Fehler angezeigt wurde. Mit TypeScript 7.0 liegt diese Zeit nun unter 1,3 Sekunden, was die Geschwindigkeit um mehr als das 13-Fache erhöht.
Die neue Version führt außerdem Steuerungsmöglichkeiten für die Parallelisierung ein. TypeScript 7.0 kann viele Build-Schritte parallel ausführen, darunter das Parsen, die Typprüfung und die Generierung. Standardmäßig werden vier Worker für die Typprüfung verwendet, Entwickler können dies jedoch mit dem neuen Flag --checkers anpassen. Auf Systemen mit mehr CPU-Kernen kann eine Erhöhung der Anzahl der Checker zu einer höheren Leistung führen, in der Regel jedoch auf Kosten eines höheren Speicherverbrauchs.
Für Monorepos und Projekte, die Projektreferenzen verwenden, fügt TypeScript 7.0 das neue Flag --builders hinzu, mit dem mehrere Projektreferenz-Builder gleichzeitig ausgeführt werden können. Microsoft warnt jedoch davor, dass die Wechselwirkung zwischen --checkers und --builders sorgfältig gehandhabt werden sollte, da eine Erhöhung beider Werte die Anzahl der aktiven Typüberprüfungs-Worker vervielfachen kann.
Außerdem gibt es eine neue Option namens --singleThreaded, mit der die Parallelisierung vollständig deaktiviert werden kann. Dies kann beim Debuggen, beim Vergleich des Verhaltens verschiedener TypeScript-Versionen oder bei der Ausführung von Builds in eingeschränkten Umgebungen nützlich sein, in denen zusätzliche Worker-Prozesse unerwünscht sind.
Eine weitere wichtige Verbesserung ist der komplett überarbeitete --watch Modus. TypeScript 7.0 nutzt nun eine neue Basis für die Dateibewachung, die auf dem in Go portierten Watcher von Parcel basiert.
Außerdem gibt es einige Konfigurations- und Kompatibilitätsänderungen, auf die man achten sollte. TypeScript 7.0 übernimmt die neueren Standardwerte von TypeScript 6.0 und wandelt einige zuvor veraltete Optionen in schwerwiegende Fehler um. Insbesondere ist strict nun standardmäßig aktiviert, module ist standardmäßig auf esnext gesetzt und stableTypeOrdering ist standardmäßig aktiviert und kann nicht deaktiviert werden.
Neben Leistungs- und Konfigurationsänderungen bietet TypeScript 7.0 auch eine natürlichere Behandlung von Unicode-Codepunkten in Template-Literal-Typen. Bisher konnten bestimmte Unicode-Zeichen, die durch Surrogatpaare dargestellt wurden, auf eine Weise aufgeteilt werden, die zwar technisch mit der UTF-16-Indizierung von JavaScript übereinstimmte, aber in der Regel nicht den Absichten der Entwickler entsprach. TypeScript 7.0 behandelt diese Fälle nun bei der Typinferenz natürlicher.
Weitere Details finden Sie in der offiziellen Ankündigung auf den Microsoft Dev Blogs.
Bildnachweis: Microsoft
Spendieren Sie Bobby einen ☕ Ko-fi
s3n🧩net wünscht viel Vergnügen
















Comments