Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
P

picoruby

> 编程语言
Open source

PicoRuby is the smallest Ruby implementation for one-chip microcontrollers

1.1K stars0 likes1 views
WebsiteGitHub

About

PicoRuby is the smallest Ruby implementation for one-chip microcontrollers

PicoRuby

PicoRuby is an alternative mruby implementation which is:

  • Small foot print (depending on build config)
    • RAM: 512 KB or less (PicoRuby with networking)
    • RAM: 128 KB or less (FemtoRuby)
  • Portable
    • Depends on only standard C library such as glibc, Newlib or Newlib-nano, and emcc
  • Reference microcontroller boards
    • Raspberry Pi Pico 2 W - Arm Cortex-M33, 520 KB RAM, 4 MB Flash with CYW43 network module
    • Raspberry Pi Pico - Arm Cortex-M0+, 264 KB RAM, 2 MB Flash

FemtoRuby?

From version 4.x, we call the artifacts below:

  • PicoRuby (used to be MicroRuby) ... mruby VM version
  • FemtoRuby (used to be PicoRuby) ... mruby/c VM version

mruby VM version is mainly being developed.

API documentation with some demo videos

https://picoruby.org/

Depends on

  • PicoRuby compiler (picoruby/mruby-compiler2) as mruby-compiler
  • Estalloc (picoruby/estalloc)
  • Littlefs (littlefs-project/littlefs)
  • mruby (mruby/mruby)
  • mruby/c (mrubyc/mrubyc)

Used by

  • R2P2: PicoRuby shell system for Raspberry Pi Pico
  • R2P2-ESP32: ESP32 port
  • PicoRuby.wasm: PicoRuby WASI runtime for WebAssembly
  • PRK Firmware: Keyboard firmware for Raspberry Pi Pico

Testing

For detailed information on testing PicoRuby, refer to the Testing Guide.

Build

  • Prerequisites
    • C toolchain
    • git
    • ruby (should be CRuby 3.4+)
bash
git clone --recurse-submodules https://github.com/picoruby/picoruby
cd picoruby/
git submodule update --init --recursive # If you forgot --recurse-submodules when git clone
rake                    # same for `rake picoruby:prod`
rake picoruby:debug     # for debug build

bin/picoruby -e 'puts "Hello World!"'
  • Building on a mac
    • openssl is not linked in homebrew to avoid mixing with system ssl
    • extend the C/LD flags to point to the right locations:
bash
rake LDFLAGS=-L$(brew --prefix openssl@3)/lib CFLAGS=-I$(brew --prefix openssl@3)/include

FemtoRuby (mruby/c VM version)

bash
rake femtoruby:prod
# or
rake femtoruby:debug

Cross compilation

See an example: build_config/r2p2-picoruby-pico2.rb

Binaries

rake command will make three kinds of executable binary

  • bin/mrbc
    • bin/mrbc path/to/source.rb makes path/to/source.mrb that is VM code runs on an mruby-compatible virtual machine
  • bin/picoruby
    • bin/picoruby source.rb executes Ruby just like normal ruby command
    • bin/picoruby -e "puts 'Hello1'" also works
  • bin/r2p2
    • POSIX version of R2P2 (See mrbgems/picoruby-r2p2 for the Raspi Pico edition)

Acknowledgement

Part of this project was coded by Monstarlab with the support of the Ruby Association Grant Program 2020 and 2021.

See also picoruby/picoruby/wiki.

Stargazers over time

License

Copyright © 2020- HASUMI Hitoshi. See MIT-LICENSE for further details.

Copyright © 2020-2021 Monstarlab. See MIT-LICENSE for further details.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Cmicrocontrollermrubymrubycruby

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言