드미트리 미트로풀로스(Dmitri Mitropoulos)는 고전 게임 둠(Doom)을 타입스크립트의 타입 시스템으로 성공적으로 포팅했습니다. 이 작업은 놀라운 3.5조 줄의 타입과 총 프로젝트 크기 177TB를 포함했습니다. 이 프로젝트는 완료하는 데 1년이 걸렸으며, 타입 추적기를 실행하는 데 90GB의 RAM이 필요했습니다. 타입 추적기는 게임을 초당 0.0000009645 프레임이라는 믿을 수 없을 정도로 느린 속도로 컴파일하며, 첫 번째 프레임을 컴파일하는 데 12일이 소요되었습니다. 미트로풀로스는 추가 최적화를 통해 이 시간을 1시간에서 12시간으로 줄일 수 있을 것이라고 언급했습니다.
이 프로젝트는 커스텀 웹어셈블리(WebAssembly) 런타임을 생성하고 타입 시스템 내에서 가상 머신을 개발하는 것을 포함했습니다. 여기에는 RAM과 디스크 공간을 시뮬레이션하는 작업도 포함되었습니다. 프로젝트의 각 타입은 수천 줄에 달했으며, 총 출력 해상도는 320x200으로 ASCII로 표시되었고, 128,000 줄의 픽셀이 포함되었습니다. 미트로풀로스는 12,364개의 수작업 테스트를 포함한 자신의 도구를 작성해야 했으며, 이를 위해 C와 C++를 포함한 여러 프로그래밍 언어를 배웠습니다.
최적화 이전에 이 프로젝트는 최대 1.25 페타바이트의 데이터가 필요할 것으로 추정되었으며, 초기 프레임을 컴파일하는 데는 3개월의 지속적인 타입 인스턴스화가 필요했습니다. 프로젝트의 복잡성으로 인해 타입스크립트 컴파일러의 제한을 제거해야 했으며, 막대한 오버헤드로 인해 일반 도구를 사용할 수 없었습니다. 미트로풀로스는 작업의 저수준 특성 때문에 AI가 이 과정에 도움을 줄 수 없었다고 강조했습니다. 그는 타입 내에서 둠을 실행할 수 있는 가능성에 대한 호기심으로 다른 타입스크립트 프로젝트를 완료한 후 이 도전을 시작했습니다.
미트로풀로스는 프로젝트의 기술적 문제와 구현된 솔루션을 자세히 설명하는 두 개의 비디오를 공개할 계획입니다. 이 기념비적인 성과는 타입스크립트가 비전통적인 응용 프로그램에서 잠재력을 보여주는 사례로, 내재된 한계와 도전 과제가 있음에도 불구하고 이루어진 것입니다.
* 이 글은
tomshardware.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.