Een ontwikkelaar heeft het voor elkaar gekregen om DOOM te laten draaien in TypeScript-types. Het doel van het project was om te demonstreren waarom DOOM niet in TypeScript-types kan draaien, maar tot verbazing van de ontwikkelaar zelf blijkt dit wel mogelijk.
De ontwikkelaar, Dimitri Mitropoulos van Michigan TypeScript, heeft zijn project op GitHub gedeeld. Daar legt hij uit dat het gaat om een WebAssembly-runtime die puur in TypeScript-types geïmplementeerd is. "Het idee is dat je C-code (of gewoon WebAssembly) in een TypeScript-type kunt omzetten (zonder JavaScript-runtimecode) die de instructies compileert en een resultaat teruggeeft."
Dat resultaat is een TypeScript-object waar iedere waarde bestaat uit een regel pixels. In totaal worden er 128.000 pixels gegenereerd, voor een 320x200 Ascii-frame. Ook is het mogelijk om input vanuit een toetsenbord te verwerken, zodat het spel daadwerkelijk gespeeld kan worden. Om het spel te draaien, was wel flinke rekenkracht nodig: 177 terabytes aan TypeScript-types moeten twaalf dagen lang continu door TypeScript-compiler draaien om de game te kunnen booten en het eerste frame te zien. Dat is al een extreme optimalisatie, zegt Mitropoulos. In eerste instantie ging het om 1,25 petabytes aan types die drie maanden moesten draaien.
Geïnteresseerden kunnen het eindresultaat zelf draaien. Mitropoulos benadrukt op GitHub echter dat hij helemaal geen interesse heeft om verder te werken aan dit project. "Het draait DOOM, dat is genoeg", aldus de ontwikkelaar. "Als je naar de commitgeschiedenis kijkt, zie je dat ik helemaal gestopt ben zodra ik de missie voltooide."
Wel gaat hij de komende tijd op YouTube nog dieper in op de technische details van het project. Er komt namelijk nog een technische deep dive, net als een video waarin Mitropoulos uitlegt waarom hij dit project is gestart. Wanneer de video's verschijnen, is niet bekendgemaakt.