3.500 milliarder kodelinjer – nå kjører Doom som TypeScript-typer!

Noen utviklere har mer tid til overs enn andre. Dmitri Mitropoulus har klart å få Doom til å kjøre inne i TypeScripts typesystem.

Det har gått sport i å få Doom til å kjøre på alt mulig rart – men prosjektet til utvikleren Dmitri Mitropoulos i Michigan TypeScript må være det sprøeste og mest ambisiøse vi har sett så langt:

Mitropoulos har nemlig klart å få Doom til å kjøre inne i TypeScripts typesystem!

Hele prosjektet tok Mitropoulos rundt ett år å fullføre, og i videoen nederst i saken kan du se han oppsummere hvordan han fikk det til.

– Det var så mye vanskeligere enn jeg hadde trodd, siden det ikke finnes noe som dette. Så jeg måtte skrive mine egne verktøy, 12.364 tester og lære flere nye programmeringsspråk for å klore meg frem til målstreken, sier Mitropoulos i videoen.

3.500 milliarder kodelinjer

For å kunne kjøre Doom bygget Mitropoulos en full virtuell maskin for WebAssembly, skrevet utelukkende ved hjelp av TypeScript-typer. Kildekoden til alt sammen ligger på GitHub.

– Den grunnleggende idéen er at du kan gjøre om C-kode (eller ren WebAssembly) til TypeScript-typer, som vil kompilere instruksjonene og returnere et resultat, forklarer Mitropoulos.

TypeScript-typer fungerer som logiske implementasjoner for hver av de 116 Webassembly-instruksjonene Doom trenger for å kjøre.

Den endelige outputen er et TypeScript-objekt der hver verdi er en linje med piksler – 128.000 piksler totalt og 320 x 200 piksler per bilderute. 📸: Michigan TypeScript / YouTube
Den endelige outputen er et TypeScript-objekt der hver verdi er en linje med piksler – 128.000 piksler totalt og 320 x 200 piksler per bilderute. 📸: Michigan TypeScript / YouTube Vis mer

Totalt er hele prosjektet på 3.500 milliarder kodelinjer, som ifølge Mitropoulos gjør det til den største TypeScript-kodebasen noensinne. Hver TypeScript-type er på flere hundre tusen kodelinjer.

Mitropoulos anslo opprinnelig at datamaskinen hans måtte tygge gjennom 1,25 petabyte med Typescript-typer i mer enn tre måneder for å få opp første Doom-bilde – men han klarte å optimalisere nok til at han kom ned i 177 terabyte (TB) på 12 dager.

Hvorvidt dette faktisk er spillbart, er heller tvilsomt. Du kan lese svarene hans på mange slike spørsmål i en Reddit-tråd – mannen bak er brukeren "dimitropoulos".

Trodde ikke det var mulig

Mitropoulos sier i videoen at han var overbevist om at det ville være umulig å kjøre Doom i TypeScripts typesystem – men hver gang han støtte på en hindring, klarte han å finne en måte å jobbe seg rundt på.

Og til slutt fikk han altså Doom til å kjøre i TypeScripts typesystem.

– Jeg lærte mye mer av dette prosjektet enn jeg lært de siste 10 årene som profesjonell utvikler.

Her kan du se en video der Dmitri Mitropoulos forklarer hvordan han har fått til alt sammen:

💡 Ny karriere? Bli kjent med våre partnere

Finn ut mer