MRuby Devkit 一个简单的脚手架,帮助你像 Go 一样把 Ruby 编译成可执行二进制
内容提要
MRuby Devkit是一个开箱即用的脚手架,可以将Ruby代码打包成二进制可执行文件,方便开发类似于Golang的二进制可执行文件。它基于MRuby,具有高效、精简、适用于嵌入式和跨平台的特点。开发者可以编写程序、运行程序、编译程序,并借助Github Action进行交叉编译。MRuby Devkit还提供了一些内置的Rake命令,方便开发者使用。
延伸解读
MRuby 与 CRuby 的关键差异
MRuby 并非 CRuby 的简单子集,其标准库更精简,且内核采用可跨平台的 C 语言实现,内存高效,适合嵌入式或无文件系统的硬件。这意味着开发者不能直接套用 CRuby 的库和习惯,需要关注官方文档,并理解 mgem 的裁剪与配置方式。
项目结构与多文件组织
入口文件 src/main.rb 不可修改,多文件需放在 src/lib/ 下,并通过 01xxx、02xxx 等命名控制拼接顺序。所有文件最终合并为一个上下文送入编译,因此无需 require 语句。这种约定简化了构建,但也要求开发者注意文件间的依赖顺序。
交叉编译与平台支持
借助 GitHub Action 可免费构建 Windows、macOS AMD64/ARM64、Ubuntu AMD64 等平台的可执行文件。若需 Linux aarch64,则要自建 Runner 并修改对应工作流文件。这降低了多平台发布门槛,但自定义平台仍需额外配置。
当前限制与待办事项
项目 TODO 显示交叉编译多文件、多文件 run 命令、build 命令自动初始化等功能尚未完成。此外,部分第三方 mgem 如 mgem-curses 存在 BUG 无法正确构建。使用前需确认所需功能是否已支持,避免踩坑。
Q&A
MRuby Devkit 是什么?
MRuby Devkit 是一个开箱即用的脚手架,可以将 Ruby 代码打包成二进制可执行文件。
如何使用 MRuby Devkit 进行交叉编译?
可以使用 Github Action 进行交叉编译,支持多种平台,如 Windows、MacOS 和 Ubuntu。
MRuby 和 CRuby 有什么区别?
MRuby 更加精简高效,适用于嵌入式和跨平台,而 CRuby 标准库较为完整。
MRuby Devkit 的开发流程是怎样的?
开发流程包括编写程序、运行程序、编译程序和交叉编译。
MRuby Devkit 中的程序入口文件是什么?
程序入口文件是 src/main.rb,不可修改。
如何查看 MRuby Devkit 中可用的 Rake 命令?
可以使用命令 rake -T 来查看可用的 Rake 命令。