mRuby MRuby Devkit 一个简单的脚手架,帮助你像 Go 一样把 Ruby 编译成可执行二进制文件

Mark24 · 2024年06月27日 · 最后由 yzhahn 回复于 2024年10月23日 · 571 次阅读

项目地址: https://github.com/Mark24Code/mruby-devkit

MRuby Devkit 是一个开箱即用的脚手架。基于 MRuby 将你的 Ruby 代码打包成 二进制可执行文件。

方便开发类似于 Golang 的二进制可执行文件。

—— 灵感来自于 Golang 可以编译为二进制可执行文件的迷人特性。

接受简单的约定,专注于编写 Ruby 代码。轻松地 build 成二进制可执行文件。

使用设计

0. 编写程序

src 下编写 ruby 程序

1. 运行程序

模仿 golang 的 go run

rake run

2. 编译当前程序(默认使用当前计算机平台)

模仿 golang 的 go build

rake build

3.交叉编译的包

借助 Github Action 编译不同平台的可执行二进制文件。

  • 可以 fork 仓库在 Github Action 运行结果下可以看到构建产物。

更多请查看 https://github.com/Mark24Code/mruby-devkit

后续:

v1.1.0

  • 添加 Ruby 转 WebAssembly

好文,之前有寻找过将 rails 应用编译为二进制的方式,看到了 mruby,但是至今没找到合适的方法能直接将 cruby 开发的 rails 项目转换为 mruby 的,除此之外这个 mruby 还想不到什么应用场景,不过很值得一学

LongLonghaoran 回复

MRuby 和 CRuby 完全不同。所以不能直接 把 Rails 转过去。

MRuby 相当于完全重新实现的 Ruby 解释器。更偏向于 C 的特点。由于没有完全的对齐 gem、bundle 等生态,所以 MRuby 的程序得单独开发。

跳出 Web,MRuby 就有使用场景了。

因为 MRuby 重新实现了 Ruby:

  • 采用完全兼容的 C 实现,兼容性很好;可以在单片机、switch、游戏机里、ESP32、没有文件系统的硬件上
  • 并且利用内存精简高效
  • 解释器功能可以裁剪,按需编译;可以控制体积

使用的场景:

  • 可以工作在 个人电脑、服务器上
  • 可以用作嵌入游戏,类似 Lua。MRuby 支持游戏平台
  • 可以用作嵌入式,单片机,路由器。官方现在支持了 时髦的 ESP32
  • 由于可以独立打包成二进制,就像 Go 可以开发管理服务器系统的脚本。
  • Dragon Ruby 用 MRuby 开发游戏引擎
  • MRuby 是纯 C 程序,理论上可以转换为 web assembly 跑在浏览器上(我不确定。Dragon Ruby 可以让 Ruby 写的游戏跑在浏览器里)

是的,dragon ruby 这样的都还好理解,但是其他的场景我没看到使用 mruby 的动机。。

Mark24 Ruby 打包技术之旅 提及了此话题。 06月29日 21:42

上面不确定,能否转 WebAssembly。现在确认了。 @LongLonghaoran

V1.1.0 添加 转 WebAssembly

确实可以,使用 EMSDK 就行了,浅试了一下

能打包成 Android 下的可执行文件吗,adb push 到 android 机上,./文件名 执行

需要 登录 后方可回复, 如果你还没有账号请 注册新账号