HeadlinesBriefing favicon HeadlinesBriefing.com

真正可查询的可执行文件:SQLite 数据库程序

Hacker News •
×

我很高兴地看到我的文章《你的可执行文件是一个 SQLite 数据库》引起了广泛共鸣。SELF 是一种程序即 SQLite 数据库的格式。利用 binfmt_misc 触发自定义解释器,将 segments 表中的行映射到入口点跳转,二进制工具链崩溃为 SQL。

令人惊讶的洞察是:如果可执行文件是一个运行时可写的数据库,运行中的程序可以在同一个文件中事务性地存储其状态。self-httpd 演示了这一点——一个包含程序、网站、路由和访问者日志的单文件 Web 服务器。所有状态更新都发生在与程序本身相同的 SQLite 文件中。

虽然 redbean 使用带有 Lua 钩子的自解压 ZIP 归档,但 SELF 使用数据库行作为处理器。处理器不是 Lua 脚本,而是向 handlers 表插入的 SQL INSERT 语句。关键区别在于:redbean 提供脚本钩子,而 SELF 提供可查询的可执行文件,你可以从运行中的程序中 SELECT。

进程通过 argv[0] 包含的可执行文件路径访问自身。解释器在跳转到入口点前释放其 SQLite 连接,允许程序打开自己的文件句柄。

关键实体:人物:Justine Tunney