← Back to subscription

Language: English Russian Spanish

Проекты программирования и формальные методы

Независимый разработчик успешно портировал классический шутер от первого лица DOOM на собственную виртуальную машину WebAssembly, сочетая ретро‑инженерию игр с достижениями в области формальной верификации. Проект, представленный на этой неделе, демонстрирует, что настраиваемая, математически обоснованная среда выполнения может исполнять сложное, реальное приложение, сохраняя показатели производительности и гарантии безопасности.

Виртуальная машина реализует базовые возможности WebAssembly вместе с WASI для переносимых системных интерфейсов, позволяя DOOM загружать оригинальные ресурсы WAD, выводить графику и обрабатывать ввод и звук без платформо‑зависимого кода. Порт справился с давними особенностями кодовой базы — арифметикой с фиксированной запятой, таймингом на тиках, файловым вводом‑выводом и выравниванием памяти — в изолированной «песочнице», ограничивающей доступ игры только теми возможностями, которые выданы при запуске.

Чтобы обеспечить корректность, разработчик формально специфицировал и машинно проверил семантику инструкций и модель памяти, используемые интерпретатором, нацелившись на такие свойства, как безопасность работы с памятью и целостность потока управления. Среда выполнения была валидирована с помощью дифференциального тестирования по сравнению с признанными движками и фаззинга, основанного на свойствах, по путям исполнения ВМ для выявления граничных случаев. Ранние бенчмарки показывают конкурентоспособную производительность и детерминированное поведение на разных платформах, что позволяет предположить: формальные методы вовсе не обязательно влекут за собой высокие издержки времени выполнения.

Этот результат указывает на практический путь запуска унаследованного ПО в проверяемых песочницах, что имеет значение для образования, исследований и безопасного распространения классических игр. В дальнейших планах — расширить покрытие инструкций, усовершенствовать JIT‑компиляцию и опробовать дополнительные игры, позиционируя виртуальную машину одновременно как учебный инструмент по формальным методам и как испытательный полигон для исполнения WebAssembly следующего поколения.

Topic: Programming projects and formal methods • 2 sources • 2026-01-26

Sources

Porting DOOM to my WebAssembly VM (lobste.rs)
The Intent Envelope: Proofs for Completeness, Not Just Soundness (lobste.rs)