FFI 是那道永远在重写的缝
先把结构体贴上。 一个类型,一个值。就这么多。谁调谁负责把 C 那边的 int、double、char 塞进 val,谁负责管它的生命周期。 这不是哪个库的真代码,是我脑子里 FFI 该有的样子。现实不长这样。现实是一层类型描述、一层编解码、一层生命周期、一层错误转换,外面再套一层"让用户少写代码"的宏。

先把结构体贴上。 一个类型,一个值。就这么多。谁调谁负责把 C 那边的 int、double、char 塞进 val,谁负责管它的生命周期。 这不是哪个库的真代码,是我脑子里 FFI 该有的样子。现实不长这样。现实是一层类型描述、一层编解码、一层生命周期、一层错误转换,外面再套一层"让用户少写代码"的宏。

上个月刷到一篇《A Friendly Introduction to Racket》,8 月 11 号发的,geometridae 的 bearblog。转它的是个写后端的同行,平时连 Haskell 都不点开。他转的理由是开头那句——Eric S. Raymond,学 Lisp 会有深刻的启蒙体验。

Racket 9.3 出了,8 月 13 号的公告。我猜大部分人扫 release notes 会先看性能那条——racket/base 减少了内部模块的加载和实例化数量。那条确实值得看,启动路径上的东西,砍一个模块是一个模块。 但我来回读了三遍的,是这一行: 就一个命令行 flag。