30 Punkte von GN⁺ 2025-03-12 | 24 Kommentare | Auf WhatsApp teilen
  • Microsoft kündigt durch eine native Portierung des Compilers und der Tools eine 10-fache Leistungssteigerung von TypeScript an
  • Deutlich schnellere Startzeiten des Editors, 10-mal kürzere Build-Zeiten und stark reduzierter Speicherverbrauch
  • Bis Mitte 2025 soll eine Vorschauversion von tsc erscheinen, bis Ende 2025 sind vollständige Projekt-Builds und Sprachdienste geplant

Hintergrund der TypeScript-Leistungsverbesserung

  • Der zentrale Wert von TypeScript ist eine hervorragende Developer Experience
  • Je größer die Codebasis wird, desto höher ist der Nutzen von TypeScript, doch in großen Projekten treten Leistungsprobleme auf
    • Es kommt zu langen Lade- und Prüfzeiten
    • Es braucht ein Gleichgewicht zwischen schnellem Editor-Start und der Analyse der gesamten Codebasis
  • KI-basierte Funktionen benötigen schnelle und präzise semantische Informationen
  • Der Bedarf wächst, den Zustand einer Codebasis über Command-Line-Builds zu validieren

Plan für die native Portierung

  • Die Arbeit an der nativen Portierung des TypeScript-Compilers und der Tools hat begonnen
  • Ziele der Leistungsverbesserung:
    • Deutlich kürzere Startzeiten des Editors
    • Bis zu 10-mal kürzere Build-Zeiten
    • Geringerer Speicherverbrauch
  • Mitte 2025: Geplante Veröffentlichung einer Vorschauversion von tsc mit Type-Checking über die Kommandozeile
  • Ende 2025: Geplante Bereitstellung vollständiger Projekt-Builds und Sprachdienste

Code ausführen und testen

  • Im TypeScript-Go-Code-Repository kann der Code gebaut und ausgeführt werden
  • Das Repository enthält Anleitungen zum Bauen und Ausführen von tsc und dem Language Server
  • Für neue Funktionen sind regelmäßige Updates geplant

Wie viel schneller ist es geworden?

  • Beim Testen der Build-Zeiten aktueller TypeScript-Projekte in mehreren populären Codebasen zeigten sich folgende Leistungsverbesserungen:
    • Das Projekt VS Code mit rund 1,5 Millionen Codezeilen wurde von 77,8 Sekunden auf 7,5 Sekunden reduziert, also etwa 10,4-mal schneller
    • Das Projekt Playwright mit rund 350.000 Codezeilen verbesserte sich von 11,1 Sekunden auf 1,1 Sekunden, also etwa 10,1-mal
    • Das Projekt TypeORM mit rund 270.000 Codezeilen verbesserte sich von 17,5 Sekunden auf 1,3 Sekunden, also etwa 13,5-mal
    • Das Projekt date-fns mit rund 100.000 Codezeilen verbesserte sich von 6,5 Sekunden auf 0,7 Sekunden, also etwa 9,5-mal
    • Das Projekt tRPC mit rund 18.000 Codezeilen verbesserte sich von 5,5 Sekunden auf 0,6 Sekunden, also etwa 9,1-mal
    • Das Projekt rxjs mit rund 2.000 Codezeilen verbesserte sich von 1,1 Sekunden auf 0,1 Sekunden, also etwa 11-mal
  • Obwohl noch nicht alle Funktionen vollständig umgesetzt sind, wird in den meisten Codebasen eine Leistungssteigerung um mehr als das 10-Fache erwartet
  • Schnelles Type-Checking und einfache Code-Navigation werden möglich
  • Die Integration von KI-Tools und Unterstützung für fortgeschrittenes Refactoring werden möglich

Verbesserungen der Editor-Performance

  • Lade- und Reaktionsgeschwindigkeit des Editors werden verbessert
  • Ladezeit auf Basis der Codebasis von Visual Studio Code:
    • Aktuell: 9,6 Sekunden → native Version: 1,2 Sekunden (etwa 8-mal schneller)
  • Auch der Speicherverbrauch sinkt um etwa 50 %
  • Für Aufgaben des Sprachdienstes (Autovervollständigung, Quick Info, Gehe zu Definition usw.) werden Leistungsverbesserungen erwartet
  • Die Migration auf Basis des Language Server Protocol (LSP) ist im Gange

Versions-Roadmap

  • TypeScript 5.8 ist bereits veröffentlicht, TypeScript 5.9 erscheint in Kürze
  • Die JavaScript-basierte TypeScript-Codebasis wird in der Version 6.x weiterentwickelt
  • Sobald die native Codebasis stabil ist, soll sie als TypeScript 7.0 veröffentlicht werden
    • TypeScript 6 → JavaScript-basierte Version
    • TypeScript 7 → nativ basierte Version
  • Auch nach dem Release von TypeScript 7 sollen die Versionen 6.x noch eine Zeit lang weiter gepflegt werden

Nächste Schritte

  • Weitere Informationen zu Performance, Compiler-API, LSP usw. sollen noch veröffentlicht werden
  • Im GitHub-FAQ lassen sich häufig gestellte Fragen nachlesen
  • Am 13. März 2025 ist eine AMA in der TypeScript-Community auf Discord geplant (10:00 Uhr PDT | 17:00 Uhr UTC)

24 Kommentare

 
click 2025-05-25

Ich hatte den Eindruck, dass alle structural typing in den Raum werfen, ohne groß darüber nachzudenken.
Wenn man es in eine Sprache mit nominal typing wie C# oder Rust neu schreiben wollte, müsste man die grundlegende Struktur des Projekts viel zu stark verändern, also wäre das wohl nicht leicht gewesen.
Unter den Sprachen mit structural typing, die gegenüber der bestehenden JS-Basis eine höhere Performance liefern könnten, kämen wohl nur C++ oder Golang infrage, und wenn man auch die Produktivität berücksichtigt, gibt es keine echte Alternative.

 
kuthia 2025-03-13

Irgendwann habe ich angefangen, mich weniger mit TS zu beschäftigen, aber wenn ich solche Nachrichten sehe, werde ich doch wieder neugierig?

 
[Dieser Kommentar wurde ausgeblendet.]
 
pitou106 2025-03-14

Wenn man in ts, außer in wirklich unvermeidbaren Fällen, ständig any missbraucht, ist das letztlich kaum anders, als Vanilla zu verwenden.. ha

 
yshrust 2025-03-13

Die Debatte scheint ziemlich heiß zu sein – Anders Hejlsberg hat persönlich einen Kommentar hinterlassen.

https://github.com/microsoft/typescript-go/…

 
jjpark78 2025-03-13

Jemand, der sich wünscht, dass beim Kompilieren mit TypeScript das Ergebnis direkt als Binärdatei herauskommt

 
passerby 2025-03-13

Mit Frontend kenne ich mich nicht aus … ist das etwas anderes als swc?

 
caniel 2025-03-13

SWC konzentriert sich darauf, wie Babel kompatiblen JavaScript-Code zu erzeugen und sogar das Bundling zu übernehmen; hier liegt der Fokus dagegen darauf, TypeScript-Code in JavaScript umzuwandeln oder Fehler zu prüfen.

 
halfenif 2025-03-12

Wenn TypeScript-Code nicht mehr in TypeScript geschrieben wird, könnte das Team TypeScript selbst nicht mehr direkt verwenden, was sich langfristig auf die Developer Experience auswirken kann.

Man sagt ja, man isst sein eigenes Hundefutter – also nutzt selbst, was man gebaut hat. Aber bei einer Programmiersprache gibt mir das doch etwas zu denken.

 
dongjinahn 2025-03-14

Meiner persönlichen Meinung nach sind die Runtime-Umgebungen von JS, auf dem TS basiert, (z. B. SpiderMonkey, V8) größtenteils in C++ geschrieben, und es gibt keine in JS implementierte Runtime.
Wenn man sich außerdem anschaut, dass selbst beim JS->JS-Kompilieren mit reinem JS alles zu langsam ist und deshalb alle zu esbuild und Ähnlichem wechseln,
dann frage ich mich schon, ob man bei TS wirklich unbedingt auf Dogfooding bestehen muss.

 
wogns3623 2025-03-12

Ich mache mir Sorgen, dass die Wartung bestehender TypeScript-Codebases später vernachlässigt werden könnte.

 
tsboard 2025-03-12

Das sind erfreuliche Nachrichten! Erstaunlicherweise trifft die TypeScript-Sprache von MS, anders als erwartet, wirklich viele überraschende Entscheidungen (?). Aus Sicht von MS wirkt es auch sehr klug, dass es sich dabei fast um ihr erstes Open-Source-Projekt handelt und dass man sich – anders als bei Googles Dart, das JavaScript ersetzen wollte – dafür entschieden hat, JavaScript zu ergänzen. Und auch bei dieser nativen Portierungssprache ist es überraschend, dass man, obwohl es wohl viele eigene Sprachen im Unternehmen geben dürfte, sich für Googles Go entschieden hat.

 
galadbran 2025-03-12

Hm, es gibt doch auf der Deno-Seite bereits eine Rust-basierte Toolchain ... warum plötzlich Go?

 
asheswook 2025-03-12

Sie meinen vermutlich eine Runtime wie Node; hier geht es jedoch um den Compiler der TS-Sprache selbst.

 
galadbran 2025-03-13

Ah, nachdem ich den Artikel etwas weiter gelesen habe, glaube ich, dass ich wegen der Aussagen darüber, dass der Editor schneller wird und so, verwirrt war.

  • tsc ist 10-mal schneller geworden. Das heißt, die Transpilierungszeit von ts nach js wurde stark verkürzt.
  • Beim Laden großer Projekte, die mit ts entwickelt wurden, wie etwa VSCode, ist es deutlich schneller. Das bedeutet, dass die Logik schneller geworden ist, die Funktionen von tsc wie die Syntaxprüfung von ts mitnutzt.
  • Das bedeutet nicht, dass VSCode selbst schneller läuft.
    Darum ging es also.
 
illiil1lii 2025-03-12

Ich habe schon erlebt, dass generische Typen mit rekursivem Aufbau so langsam wurden, dass ich zu einer Ausweichlösung greifen musste. Wenn es wirklich 10-mal schneller ist, hoffe ich, dass sich auch solche Bereiche verbessern.

 
tujuc 2025-03-12

Der Diskussionsthread darüber, warum Go, ist interessant.

https://github.com/microsoft/typescript-go/discussions/411

Es gibt auch vieles, worüber man nachdenken muss...

 
tsboard 2025-03-12

Ja, ich kann aber irgendwie auch die Gefühle der .NET-Entwickler verstehen ...

 
riki3 2025-03-12

Die .NET- und Rust-Entwickler sind ziemlich wütend geworden.

 
bungker 2025-03-12

Ich kann .NET nachvollziehen, aber ich denke, dass Rust eher auf derselben Ebene wie Go steht. Wahrscheinlich haben auch bereits bestehende Go-Projekte und -Bibliotheken rund um JS diese Entscheidung beeinflusst.

 
aa1567 2025-03-12

Die Entwicklung der Sprache C# ist zwar nicht zum Stillstand gekommen, aber allzu oft hat man das Gefühl, dass Frameworks auf Basis von C# vernachlässigt werden.

 
clastneo 2025-03-12

Schreibt in Go~

 
caniel 2025-03-12

Darauf freue ich mich sehr.

 
GN⁺ 2025-03-12
Hacker-News-Kommentare
  • Daniel Rosenwasser aus dem TypeScript-Team kündigt die Veröffentlichung an und ist zusammen mit Teamleiter Ryan Cavanaugh bereit, Fragen zu beantworten
    • Im Discord-AMA gibt es weitere Informationen
  • Schnelle Entwicklungstools sind großartig, und es ist erfreulich, dass sich das TypeScript-Team immer intensiv Gedanken über die Developer Experience macht
    • Wenn TypeScript-Code nicht mehr in TypeScript geschrieben wird, könnte das langfristig Auswirkungen auf die Developer Experience haben, weil das Team TypeScript dann nicht mehr direkt selbst verwendet
    • Es wird auf den gescheiterten Fall verwiesen, dass Flow in OCaml geschrieben wurde, und nach den Gedanken des Teams dazu gefragt
  • Es werden zwei frühere Projekte erwähnt, die ein schnelles tsc in Rust versucht haben
    • stc: eingestellt
    • ezno: in aktiver Entwicklung und nicht mit dem Ziel einer 1:1-Entsprechung zu tsc
  • Ein Projekt beginnt oft mit einer flexiblen Skriptsprache, aber am Ende setzt sich häufig eine nativere Ausdrucksform durch
    • Möglicherweise ist es besser, von Anfang an mit einer Low-Level-Ausdrucksform zu starten
    • Das führt dazu, die grundlegende Annahme zu überdenken, eine JS-Runtime auf dem Server zu verwenden
    • Die Vorteile von Skriptsprachen werden immer geringer
  • Ich dachte kurz, es sei ein Aprilscherz
  • Die Wahl von Go ist gut
    • Beeindruckend, dass Go statt Rust gewählt wurde
    • Schade, dass nicht AOT-kompiliertes .NET gewählt wurde
  • Es ist wichtig, die neue Codebasis so kompatibel wie möglich mit der bestehenden zu halten
    • Die Syntax von Go ähnelt der TypeScript-Codebasis, was das Portieren erleichtert
  • Überraschung über die syntaktische Ähnlichkeit von Golang und TypeScript
    • Es wird die Erfahrung geteilt, dass Sum Types in Golang schwer zu verwenden waren
  • Es wird ein Podcast vorgestellt, in dem Daniel und Anders ausführlich über den nativen Port diskutieren
  • Beim Refactoring großer TypeScript-Dateien treten Performance-Probleme auf
    • Die Umstellung der Codebasis auf TypeScript hat dem Team sehr geholfen, aber Performance-Probleme bestehen weiterhin
  • Jemand hat früher PHP verwendet und vor vier Jahren begonnen, TypeScript zu nutzen
    • Das Typsystem von TypeScript ist nützlich, und die Kompilierung ist schnell
    • Kein Fan von Microsoft, aber TypeScript wird für eine gut gemachte Sprache gehalten