跳到正文

AI工具Simon Willison19:38

你的可执行文件是一个 SQLite 数据库

Your executable is a SQLite database

可执行文件兼作数据库,省去解析开销,适合紧凑分发。

判断

做单文件分发的打包者要改的决定:把「运行时怎么读数据」从应用层解析挪到内核执行层——代价是安装时必须先往 binfmt_misc 注册,否则这个文件对内核只是一张普通数据库。

依据

Simon Willison 引述 Farid Zakaria 的 Linux 做法:把 SQLite 文件格式 68 字节处的 4 字节 application ID(应用标识,告诉 SQLite 这个文件归哪个程序)设成 SELF,即 Structured Executable & Linkable Format;再把 ELF(Linux 可执行文件格式)的各组成部分分别放进若干 SQLite 表,用给出的 schema 描述;由 self-exec 解释器(C 代码)取出并执行。另外用 binfmt_misc(内核里把特定二进制模式绑定到指定解释器的机制)注册一次,内核之后遇到该模式就直接执行。取舍很清楚:省掉运行时解析数据库的开销、拿到单文件紧凑分发,换来的是执行多依赖宿主内核的一次注册;没有 NixOS 时,Simon 给的路径是 printf 写入 /proc/sys/fs/binfmt_misc/register,也就是装机步骤由系统管理员而不是应用自己承担。

  1. SQLite 文件设 SELF
    写入表
  2. ELF 组件拆入表
    注册模式
  3. binfmt_misc 注册
    内核触发
  4. self-exec 提取执行
从 SQLite 文件到内核执行的四个环节

没写清 材料没给出这条路径与「解压后再执行」相比的体积或启动耗时数字,所以省下的开销具体是多少无法量化。

下一步 在一台未注册 binfmt_misc 的普通 Linux 上直接执行那个文件,记录内核返回的是 ENOEXEC 还是被送进 self-exec 解释器。

本期其他新闻

  1. 行业动态

    Anthropic 的最佳 AI 模型难以吸引用户,而更便宜的工具蓬勃发展

    Simon Willison

  2. 行业动态

    引用 Drew Breunig

    Simon Willison

  3. 精选深读

    通过 Kiro 中的 GPT-5.6 提升开发者的性价比

    OpenAI

  4. 精选深读

    Claude 如何为 AI 生成的文本添加水印

    Ahead of AI