Сегодня были объявлены победители ежегодного конкурса IOCCC (видео), и среди них обнаружился интересный проект.
- Программа на Си размером 366 байт исходного кода (prog.c) запускает виртуальную машину.
- Машина состоит из 32-битного процессора архитектуры SUBLEQ+, полутора гигабайт памяти, графического адаптера 800x512, клавиатуры, часов реального времени, с многозадачностью и прочими ништяками.
- Для этой машины имеется компилятор Clang (и прочий LLVM).
- На этой машине запускается Линукс.
- Под Линуксом запускается Doom.
- Из приложений также имеются веб сервер, текстовый браузер и прочее.
Автор разработал архитектуру, реализованную в этой виртуальной машине, и набор инструментов в рамках готовящейся к запуску инициативы Eternal Software Initiative, основанной на открытом исходном коде.
Учитывая, что большая часть современной культуры — искусство, наука, история, работа и развлечения — представлена или доступна через программное обеспечение, как нам сохранить это программное обеспечение в пригодном для использования виде, чтобы историки через 1000 лет смогли оглянуться на сегодняшний день и понять, что значило быть человеком в XXI веке? Культуры прошлого можно реконструировать из «самосохраняющихся» физических артефактов, таких как предметы и книги, но программное обеспечение по своей природе эфемерно. Без активных усилий по его сохранению в пригодном для использования виде, современная культура будет в значительной степени «забыта» для будущих поколений.
Задача: сохранения только программного обеспечения недостаточно. Для того чтобы оно было работоспособным, необходимо сохранить в пригодном для использования виде не только само программное обеспечение, но и всю экосистему (операционные системы, библиотеки, компиляторы, фреймворки) вплоть до аппаратного обеспечения. Однако эта экосистема невероятно сложна: большая её часть является собственностью компаний и неполно документирована, а её восстановление в будущем может оказаться очень сложным или даже невозможным, например, в случае краха и возрождения цивилизации, когда полная информация о современных вычислительных архитектурах вряд ли сохранится.
Цель Инициативы «Вечное программное обеспечение» — предложить решение этой проблемы. Мы определяем новую вычислительную архитектуру, настолько простую, что шаги по созданию виртуальной машины можно записать на салфетке, вместе с набором инструментов для компиляции любого современного программного обеспечения (включая операционную систему, фреймворки, библиотеки и т. д.) в единую самодостаточную «капсулу» чисел. Эти числа могут храниться в физической форме на прочном носителе (например, вытравленном на титановом цилиндре), который сохранится на протяжении тысячелетий без деградации. Демонстрации Mandelbrot, Pong и ядро Linux с приложениями, представленные в рамках этой заявки на IOCCC, являются примерами таких капсул.
Через 1000 лет антрополог, обнаруживший инструкцию на «салфетке» и капсулу, сможет воссоздать виртуальную машину менее чем за час (без необходимости знания современных вычислительных архитектур или языков программирования) и, следовательно, оживить содержимое капсулы в полностью функциональном виде. Таким образом, Инициатива «Вечное программное обеспечение» стремится сохранить современное программное обеспечение, чтобы наша цифровая культура могла быть воссоздана и пережита заново в далеком будущем.
