Spiele und Programmiersprachen: Doom läuft im Typesystem von Typescript

Dem Programmierer Dimitri Mitropoulos ( Github(öffnet im neuen Fenster) ) ist es gelungen, das Computerspiel Doom komplett innerhalb des Typsystems von Typescript(öffnet im neuen Fenster) zum Laufen zu bekommen. Dafür brauchte er rund ein Jahr Entwicklungszeit, um die benötigten Komponenten zu programmieren, zu testen und an die Bedürfnisse anzupassen. Um Doom auszuführen, wird ein kompletter Computer mit Typescript Types simuliert.
Um Doom allein mit Typen zu realisieren, forderte Mitropoulos den Typescript-Compiler bis an seine Grenzen. Rekursionstiefe- und Uniongrenzen mussten aufgehoben, der Speicherlimitschutz modifiziert werden. Um die interne Logik des Spiels abzubilden, entstand ein vollwertiger Webassembly-Interpreter in Typen, komplett mit RAM-Verwaltung, Aufrufstack und sämtlichen Instruktionssätzen. Selbst Mini-Fehler, wie etwa ein falsch geschriebener Import, stellte riesige Risiken dar, denn Stacktraces wurden gigantisch, zumindest wenn der Compiler nicht stattdessen sofort abstürzte.
Eine Machbarkeitsstudie zum Erkenntnisgewinn
Beeindruckend ist, dass alle nötigen Programmteile ausgeführt werden, inklusive Tastatureingaben und Bildausgabe mit einer Auflösung von 320 x 200 Pixeln. Das allerdings nicht besonders schnell: Um den ersten Frame zu rendern, war der Computer zwölf Tage beschäftigt und musste 177 TByte an Typescript-Typen verarbeiten.
Eigentlich ist der Erfolg ein Unfall, denn Mitropoulos dachte, dass es gar nicht möglich sei, und wollte daher nur herausfinden, an was das Vorhaben wirklich scheitern würde. Jedoch fand er bei jedem Problem dennoch einen Weg, bis plötzlich keine Probleme mehr übrig waren. Über die Arbeit im letzten Jahr soll es auf dem Youtube-Kanal Michigan Typescript(öffnet im neuen Fenster) einen Livestream mit Mitropoulos geben, in dem die Details der Entwicklung näher beleuchtet werden.

Zudem möchte er beleuchten, was die Arbeit brachte und warum so ein Projekt nicht sinnlos ist. Denn die Arbeit ist zwar beeindruckend, das Ergebnis selbst lässt sich aber nicht weiter nutzen. "Ich habe viel mehr bei der Arbeit an diesem Projekt gelernt als in den vergangenen zehn Jahren professioneller Programmierarbeit" , so Mitropoulos im Youtube-Video zur Vorstellung des Projekts.



