本文详细介绍了如何在Rust中构建动态链接、基于FFI的插件系统。作者首先讨论了Arroyo(一个实时SQL引擎)如何使用户定义函数(UDF)成为可能。作者介绍了各种方法,包括嵌入脚本语言、RPC调用、编译为Wasm和共享库,最终选择了共享库并解释了原因。文章深入研究了使用C ABI、设计数据类型、导出函数、处理恐慌以及编译和调用FFI函数的实现细节。作者提供了一个使用dlopen2库的示例插件和主机代码,展示了该方法的实用性。