Rust 中的嵌入方案

主要观点:Rust 作为编译型语言,动态修改程序行为有挑战,文中将名为Stak Scheme的小 Scheme 解释器嵌入 Rust 中,可在不停止进程的情况下动态改变程序行为。
关键信息:

  • Scheme是函数式编程语言和 Lisp 方言,R7RS-small 标准是其最新规范。
  • Stak Scheme是兼容R7RS-small 标准的 Scheme 实现,具有可嵌入 Rust 程序、内存占用小、基于能力的安全等特点。
  • 示例中在 Rust 中编写 HTTP 服务器程序并嵌入 Scheme 脚本,包括初始化 crate、添加依赖、准备 HTTP 服务器、添加构建脚本、创建 HTTP 请求处理程序和热模块重载等步骤。
  • 热模块重载功能可使修改后的 Scheme 脚本动态改变 Rust 程序行为,无需重启服务器。
    重要细节:
  • 初始化 crate 用cargo init http-servercd http-server命令。
  • 添加依赖用cargo add stakcargo add --build stak-buildcargo install stak-compile命令。
  • 准备 HTTP 服务器用cargo add --features rt-multi-thread tokiocargo add axum命令,添加代码到src/main.rs
  • 添加构建脚本到build.rs文件,用stak-build库编译 Scheme 文件。
  • src/handler.scm文件中编写 HTTP 请求处理程序脚本,在src/main.rs中引用并执行。
  • Cargo.toml文件中为stak crate 启用hot-reload功能,可实现热模块重载。
阅读 6
0 条评论