Portar a desgraça para os tipos TypeScript levou 3,5 trilhões de linhas, 90 GB de RAM e um ano inteiro de trabalho

Doom foi portada para quase tudo, certo? Bem, até agora, o título do software de ID não havia sido recriado dentro do sistema de tipos do TypeScript, até agora.
O feito foi criado pelo engenheiro de software Dmitri Mitropoulos, fundador do Michigan Typescript e co-fundador da SquigGleConf. Ele lançou um vídeo mostrando os resultados de um esforço de um ano para que o jogo funcione dentro do sistema de tipos do TypeScript.
O TypeScript é um idioma criado no topo do JavaScript, que adiciona digitação estática para pegar muitos erros errantes antes das execuções, pense nisso como um corrimão que verifica se as funções e outras variáveis estão sendo usadas corretamente. Embora isso seja comumente usado em todos os tipos de desenvolvimento, é inédito executar um jogo no sistema de tipos do TypeScript.
A própria porta funciona dentro de três trilhões de linhas de tipos, totalizando um tamanho de gigantesca de 177 TB. Isso é executado através do rastreador de tipo do TypeScript, que leva 12 dias para compilar o primeiro quadro de Doom (0,00009645 fps). Isso significava que 20 milhões de instanciações do tipo estavam em execução a cada segundo para obter a saída.
Mitropoulos explicou no Michigan Typescript Discord Server que isso poderia ser melhorado para levar “1 a 12 horas”, desde que alguém trabalhe nele, com o desenvolvedor observando que ele tem notas para onde possíveis otimizações de desempenho poderiam ser feitas.
Isso foi feito executando o projeto dentro de um Tempo de execução do WASM personalizadoque é então processado através do TypeScript em um editor para exibir um quadro.
Mitropoulos explica que o projeto foi uma luta de um ano, devido a ter que escrever suas próprias ferramentas, incluindo 12.364 testes manuscritos, aprendizado de C, C ++, WebAssembly e outros idiomas.
“Desenvolvi o que acredito ser a maior base de código TypeScript de todos os tempos”, explicou o autor. Antes da otimização, ele calculou que o projeto poderia levar até 1,25 petabytes de dados, com o primeiro quadro compilando após três meses de instanciação contínua.
Todo tipo dentro do projeto tinha milhares de linhas de comprimento, e o projeto envolvia o desenvolvimento de uma máquina virtual dentro do sistema Types, completa com elementos como RAM e espaço em disco. “O computador é feito de tipos de texto digital que servem como implementações lógicas de todas as 116 instruções da WebAssembly, que a DOOM precisa ser executada”.
Mitropoulos explicou ainda que cada valor dentro do sistema TypeScript equivale a uma linha de pixels, totalizando 128.000 linhas de pixels no total, resultando em uma “resolução” de 320×200, exibida no ASCII.
Para fazer isso, o desenvolvedor precisava remover as limitações do próprio compilador do TypeScript, destacando o tamanho do projeto, com o tempo de execução do rastreador de tipo consumindo mais de 90 GB de RAM enquanto estava em execução.
Essa enorme sobrecarga significava que as ferramentas comuns no TypeScript não puderam ser usadas, o que significava que a tarefa hercúlea de codificar todos os elementos de Doom nos tipos. Isso exigia o aprendizado para desenvolver elementos como um cache L1 CPU, dentro dos tipos de texto do tipo de design. Devido ao TypeScript que requer iteração em uma única sequência do lado esquerdo, os algoritmos binários tiveram que ser inseridos ao contrário.
“Ah, e a IA não pode ajudar” Mitropoulos acrescentou, descrevendo que o trabalho era tão baixo que a IA não poderia ajudar em nenhuma das tarefas. Que pena, Grok 3.
Mitropoulos disse que assumiu o desafio depois de concluir “todos os outros” tipos de desafios e queria entender por que Doom não seria capaz de executar dentro dos tipos. No entanto, ele conseguiu encontrar soluções alternativas “ridículas” para fazer tudo funcionar, apesar de sua própria descrença no projeto.
Mitropoulos está preparando dois vídeos separados, entrando em detalhes sobre por que ele criou o projeto, além de outro vídeo com uma quebra técnica do feito. Mas, por enquanto, o projeto Gargantuan está concluído e a Doom foi portada com sucesso para mais uma plataforma.