HeadlinesBriefing favicon HeadlinesBriefing.com

Запрашиваемые исполняемые файлы: программы SQLite

Hacker News •
×

Мне приятно удивило, что моя статья 'Ваш исполняемый файл — это база данных SQLite' нашла широкий отклик. SELF — это формат, где программы являются базами данных SQLite. Используя binfmt_misc для запуска пользовательского интерпретатора, отображающего строки в таблице segments для перехода к точке входа, бинарные инструменты сворачиваются в SQL.

Неожиданный инсайт: если исполняемый файл — это база данных, доступная для записи во время выполнения, запущенная программа может хранить своё состояние транзакционно в том же файле. self-httpd демонстрирует это — однозаховый веб-сервер, содержащий программу, веб-сайт, маршруты и логи посетителей. Все обновления состояния происходят в том же файле SQLite, что и сама программа.

В то время как redbean использует самораспаковывающиеся ZIP-архивы с хуками Lua, SELF использует строки базы данных как обработчики. Вместо скриптов Lua обработчики — это операторы SQL INSERT в таблицу handlers. Ключевое отличие: redbean предоставляет скриптовые хуки, SELF предоставляет запрашиваемые исполняемые файлы, где можно делать SELECT из запущенной программы.

Процесс обращается к себе через argv[0], содержащий путь к исполняемому файлу. Интерпретатор освобождает своё SQLite-соединение перед переходом к точке входа, позволяя программе открыть свой собственный файловый дескриптор.

Ключевые сущности: Люди: Justine Tunney