Microsoft heeft TypeScript 7.0 uitgebracht. Het is de eerste stabiele release die is gebouwd op een op Go gebaseerde compiler. De herschrijving zorgt voor een versnelling van 8x tot 12x bij volledige builds. Het betekent ook gelijk het einde van de tien jaar durende geschiedenis waarin de taal in zichzelf werd geschreven.
Het belangrijkste kenmerk is snelheid. Volgens Daniel Rosenwasser, Principal Product Manager bij Microsoft, “biedt TypeScript 7 de snelheid van native code, multithreading met gedeeld geheugen en een aantal nieuwe optimalisaties die doorgaans een versnelling van 8x tot 12x opleveren bij volledige builds.” De voordelen zijn merkbaar tijdens de ontwikkeling, niet tijdens de implementatie, merkt DevClass op.
Dat betekent dat bestanden sneller worden geopend, er sneller in de code kan worden gezocht en de automatische aanvulling in de editor vlotter verloopt. In veel gevallen was de geïmporteerde TypeScript Language Server de boosdoener achter trage editors, niet de editor zelf.
Deze stap werd eerder dit jaar al aangekondigd. Microsoft kondigde TypeScript 6.0 aan als de laatste op JavaScript gebaseerde release en positioneerde deze als een overgangsfase voordat de Go-port het in versie 7.0 zou overnemen.
Waarom de cijfers ertoe doen
In benchmarks van Microsoft daalde de compilatietijd van VS Code (2,3 miljoen regels) van 125 seconden onder TypeScript 6 naar 10,6 seconden, een sprong van 11,9x. Sentry verwerkte 1,9 miljoen regels in 15,7 seconden, terwijl Playwright voor 528.000 regels 1,47 seconden nodig had. Onafhankelijke rapporten schatten de verbetering op ongeveer een orde van grootte, waarbij het geheugengebruik ruwweg gehalveerd is.
Bij Slack konden ontwikkelaars voorheen geen volledige typecontrole lokaal uitvoeren en lieten ze deze taak over aan de CI-server. Met TypeScript 7 wordt die controle weer op de computer van de ontwikkelaar uitgevoerd.
Waarom Go, en niet C# of Rust
Voor een Microsoft-team is Go een verrassende keuze ten opzichte van het eigen C# of het steeds populairder wordende Rust. Hoofdarchitect Anders Hejlsberg legde uit dat Go “de taal op het laagste niveau is die we kunnen gebruiken en die ons volledige ondersteuning voor native code op alle platforms biedt”, en sterk is op het gebied van concurrency.
Teamleider Ryan Cavanaugh voegde structurele redenen toe: de syntaxis van Go lijkt op die van JavaScript, wat het onderhoud van beide codebases vergemakkelijkt, en dankzij het geheugenmodel kan het team de garbage collector tijdens het compileren grotendeels omzeilen. Go, dat in 2009 in open-source werd uitgebracht, vormt al lang de ruggengraat van cloud-native software en wordt gewaardeerd om zijn stabiliteit in grootschalige projecten. De native compiler biedt concurrency-vlaggen zoals --checkers en --builders om parallelle typecontrole af te stemmen.