Doom, культовая игра от id Software, известна своими многочисленными портами на самые разные платформы. Однако до недавнего времени её запуск внутри системы типов TypeScript казался невозможным. Теперь этот рубеж преодолён благодаря усилиям Дмитрия Митропулоса, инженера-программиста и основателя Michigan TypeScript.
Митропулос представил результат своей годовой работы в видео, демонстрирующего, как Doom запускается внутри системы типов TypeScript. Для этого ему потребовалось использовать 3,5 триллиона строк типов, что заняло колоссальные 177 ТБ данных. Компиляция первого кадра игры заняла 12 дней, обеспечив рекордно низкую производительность в 0,0000009645 кадров в секунду. В процессе каждую секунду выполнялось 20 миллионов инстанцирований типов.
TypeScript, язык программирования, построенный на базе JavaScript, обычно используется для добавления статической типизации, чтобы предотвратить ошибки на этапе разработки. Однако запуск игры внутри его системы типов — это беспрецедентный шаг, требующий огромных вычислительных мощностей.
Проект работал внутри специальной среды выполнения WASM, которая затем обрабатывалась через TypeScript в редакторе для отображения кадра. Митропулос признался, что работа над проектом стала настоящим испытанием: ему пришлось создавать собственные инструменты, писать более 12 тысяч тестов и осваивать языки C, C++ и WebAssembly.
По словам разработчика, время компиляции можно сократить до 1–12 часов при условии дальнейшей оптимизации. Он уже подготовил заметки о возможных улучшениях производительности. Тем не менее, текущий результат — это впечатляющее достижение, в очередной раз демонстрирующее границы технического творчества.
Ещё по теме: