Fetching latest headlines…
Introducing Rubyduino, a Ruby to Arduino UNO compiler based on Matz's Spinel!
NORTH AMERICA
πŸ‡ΊπŸ‡Έ United Statesβ€’May 8, 2026

Introducing Rubyduino, a Ruby to Arduino UNO compiler based on Matz's Spinel!

0 views0 likes0 comments
Originally published byDev.to

Rubyduino compiles Ruby sketches for Arduino boards and uploads the generated firmware.

Under the hood it uses Spinel, a Matz's Ruby AOT compiler, vendored at a pinned revision.

How it works?

Rubyduino adds a small Arduino runtime on top of that C code. Functions like digital_write, delay_ms, analog_read, serial_print, and pulse_in are mapped to small AVR C functions that talk directly to the Arduino UNO hardware registers.

After that, the normal AVR toolchain takes over:

  1. Ruby sketch
  2. Spinel turns it into C
  3. Rubyduino adds the Arduino UNO runtime
  4. avr-gcc compiles it into firmware
  5. avrdude uploads it to the board

So the Arduino is not interpreting Ruby. It is running compiled AVR machine code that started life as Ruby.

It doesn't use Firmata or RAD... this is something new!

Tutorial:

gem install rubyduino

touch blink.rb

# blink.rb
pin_mode(ArduinoUNO::LED_BUILTIN, ArduinoUNO::OUTPUT)

loop do
  digital_write(ArduinoUNO::LED_BUILTIN, ArduinoUNO::HIGH)
  delay_ms(100)
  digital_write(ArduinoUNO::LED_BUILTIN, ArduinoUNO::LOW)
  delay_ms(100)
end

rubyduino blink.rb

Result:

Arduino is blinking

Comments (0)

Sign in to join the discussion

Be the first to comment!