Mruby: Ruby for Embedded Systems

github.com

50 points by nateb2022 5 days ago


riffraff - 4 minutes ago

IIRC MRuby is also used as the implementation for the DragonRuby game engine[0]

[0] https://dragonruby.org/

quapster - 19 minutes ago

The interesting thing about mruby isn't "Ruby for embedded" as a tagline, it's that it flips the normal embedded tradeoff on its head: you get a dynamic language and a spec, and you treat C as the extension mechanism instead of the other way around.

Most embedded stacks still look like "C all the way down, sprinkle some Lua if you need a scriptable layer". mruby is basically that pattern, but with a much richer standard library, more human-friendly syntax, and a community that thinks in objects instead of state machines. That changes who can work on firmware: you stop needing every feature to be written by the person who understands the MCU reference manual.

Also, the "compile to bytecode, optionally emit C" story matters a lot more in this domain than people realize. In constrained systems, dependency chains kill projects: one more libc quirk, one more weird build flag, one more cross-compiler bug. Having Ruby code become opaque bytecode baked into your image, with a small, well-audited VM around it, is exactly the sort of boundary firmware teams like.

If you squint, mruby is a quiet argument against the idea that embedded has to stay in 1998 forever. Same hardware constraints, but instead of inventing yet another bespoke DSL for each product line, you standardize on a mainstream language and let the VM carry the complexity.

pansa2 - 4 hours ago

Mruby isn’t aimed at embedded systems, it’s “lightweight Ruby” intended to be embedded within a lower-level application. The language it’s most similar to is Lua.

My gut feeling comparing the two is that mRuby is a better (or at least less “quirky”) language, but Lua has a better (more robust) implementation. I don’t know how the two compare in terms of performance or “lightweight-ness”.

Lua definitely seems to be more widely-used, at least outside Japan.

nateb2022 - 5 days ago

Also worth a mention: mruby/c (https://github.com/mrubyc/mrubyc), which is an even smaller ruby for single-chip microprocessors

- 2 hours ago
[deleted]
sethammons - 3 hours ago

/me tips fedora: "m'ruby"

I'm sorry, first thing that came to mind.

Broussebar - 4 hours ago

The best use case for Mruby I saw is this talk: "Developing your Dreamcast games with mruby"[0] by Yuji Yokoo

[0]: https://m.youtube.com/watch?v=ni-1x5Esa_o

grimgrin - 4 hours ago

also possibly interesting to some is the cosmopolitan libc inclusion:

https://github.com/mruby/mruby/pull/6681

sillyboi - 4 hours ago

Let's call it Murby :)