RubyKaigi 2026
| title | author | length |
|---|---|---|
| Building a Modern Ruby <-> C++ Toolchain | Charlie Savage | 28m |
Modernized Rice adds C++11+ templates, STL support, ownership semantics and buffer/pointer handling, FFI‑Clang parses headers into an AST and RubyBindGen… | ||
| Programming with a DJ Controller - not vibe coding | Masatoshi Seki | 25m |
Programs a cheap DJ2GO2 Touch (~10,000 yen) with Ruby using unimidi and a custom MIDI-splitting library that fixes clumped messages, and drives LEDs and knob… | ||
| A Write Barrier Validating GC for Ruby | John Hawthorn | 28m |
Built a write‑barrier validating GC called WB check that runs as a separate modular GC for CRuby, captures an initial snapshot of object references, records… | ||
| Smalruby: Visualizing Ruby with Bidirectional Transpiration | Kouji Takao | 29m |
A web app that bidirectionally converts Scratch blocks and real Ruby runs entirely in the browser using a forked Scratch editor plus the Prism WebAssembly… | ||
| No Types Needed, Just Callable Method Check | Daichi Kamiyama | 27m |
Claims that the only essential static check in many Ruby workflows is that a called method actually exists and builds a CI-first tool to do just that. The gem… | ||
| Blazing-fast Code Indexing for Smarter Ruby Tools | Alexandre Terrasa | 21m |
A new shared code index called RuboCop (Rubidex) provides project discovery, fast parallel syntactic indexing and a worklist fixed point resolver that builds a… | ||
| PicoRuby as a Multi-VM Operating System | Katsuhiko Kageyama | 30m |
A minimal OS runs on an ESP32 that hosts multiple PicoRuby VMs concurrently, claiming playable GUI apps (Tetris, Flappy Bird, Doom-style demo) and hardware I/O… | ||
| Pure Intonation on Browser: Building a Sequencer with Ruby | nagachika | 30m |
Purified Synth is a browser-based sequencer and subtractive synth implemented with Ruby/WASM + Web Audio API that plays pure-intonation microtonal chords using… | ||
| Building the Next-Generation Garbage Collector in Ruby | Peter Zhu | 30m |
MMTK is integrated into Ruby via a Rust-backed runtime and a C binding that adds a fast-path bump-pointer allocator, plus support for moving Immix and a new… | ||
| PicoRuby for IoT: Connecting to the Cloud with MQTT | Yuhei Okazaki | 29m |
Adds a Wi‑Fi class and ports TCPSocket/UDPSocket/SSLSocket to ESP32, refactors mbedTLS refactor to resolve duplicate-version link errors, and implements… | ||
| Whose Memory is it Anyway | Jacob Denbeaux | 27m |
Implements two concrete JIT passes for Ziji: a load elimination pass that replaces repeated load_field with cached values and a dead store elimination pass… | ||
| ruby.wasm also enables JavaScript to call Ruby libraries. | Shigeru Nakajima | 30m |
ruby.wasm now targets calling Ruby from JavaScript by adding a minimal loader and improving value wrappers: Node.js demo uses jsrequire_local to load doc.rb… | ||
| Integration of PRK Firmware and R2P2 | Hayao Kimura | 29m |
R2P2 now runs keyboard firmware: USB HID is implemented but remains always enabled (runtime toggle PR is dropped for stability), WS2812 LEDs work by using… | ||
| Autoresearching Ruby Performance with LLMs | Nate Berkopec | 28m |
AutoResearch runs LLM agents against benchmarks and opens PRs using Pi auto research and simple tools; one Sidekiq run reports 21,000 jobs/sec and yields… | ||
| Chasing Real-Time Observability for CRuby | Shintaro Otsuka | 29m |
rrtrace visualizes CRuby in real time across time, thread count and stack depth by streaming 16-byte events (TracePoint, GC enter/exit, InternalThreadEvent)… | ||
| Ruby Committers and the World | 01h 07m | |
Covers concrete proposals and measurable outcomes: a push for String popcount and byte/bit APIs with MSB/LSB indexing debate; governance options including a… | ||
| Writing DSL for DSL: Catch Code as It's Born with TracePoint | Andrey Novikov | 20m |
Typelizer extracts field types from serializer DSLs and emits TypeScript types or OpenAPI schemas, merging DB schema, ActiveRecord attributes and annotations… | ||
| Good Enough Types: Heuristic Type Inference for Ruby | Sangyong Sim | 30m |
A heuristic type-inference gem called Type Guesser infers Ruby types by collecting methods called on variables, applying a duck-typing-like heuristic and light… | ||
| Invariants in my own Ruby: some things must never change | Soichiro Ishiki | 22m |
An independent Ruby implementation builds a JIT almost entirely in Rust and now loads gems and Bundler, hitting about 350 FPS on OptCarrot versus ~70 FPS with… | ||
| Making the RBS Parser Faster | Soutaro Matsumoto | 28m |
RBS parser work focuses on concrete wins: lexer byte-width caching speeds core RBS parsing ~16% and fixes non-UTF-8 behavior, and switching the arena from mmap… | ||
| Surviving Black Friday: 329 billion requests with Falcon! | Samuel Williams, Marc-Andre Cournoyer, Josh Teeter | 29m |
Falcon replaces Unicorn for Shopify storefront rendering and carries 329 billion requests over Black Friday weekend, peaking at 1.42M req/s, with a fiber-based… | ||
| Require Hooks: Filling the Gap in Ruby's Extensibility | Vladimir Dementyev | 29m |
Provides a concrete API called require_hooks that adds three hook types (around_load, source_transform, a full hijack_load) and runs on MRI and JRuby by… | ||
| HTML-Aware ERB: The Path to Reactive Rendering | Marco Roth | 32m |
Herb provides a real parser and grammar for HTML+ERB, with bindings for Rust/C/WebAssembly/Node/Ruby and an editor LSP that flags invalid HTML, ERB, or Ruby… | ||
| Thread-Coordinated Ractors: The Pattern That Delivers | Maciej Mensfeld | 28m |
Shows that replacing thread-heavy JSON and CPU work with a persistent ractor pool inside Karafka delivers real wins: frozen deserialization and offloading… | ||
| A Faster FFI | Aaron Patterson | 32m |
Claims a JIT-backed FFI pipeline that beats handwritten C: a Ruby-side translator generates C extensions with tiny trampolines that smuggle type metadata… | ||
| Ruby the Hard Way: Writing Bytecode to Optimize Plain Ruby | Samuel Giddins | 33m |
A toy optimizer gem called optimize gem decodes YARV binaries, rewrites instruction sequences and re-encodes them between Ruby’s dump and eval steps. The… | ||
| Ruby Releases Ruby | Hiroshi Shibata | 31m |
Ruby core and packaging now ship far more often with much less toil: CI runs across GitHub Actions and an in-house RubyCI using chkbuild, infrastructure is… | ||
| Ruby on NES - how to make the smallest ruby ever | Yutaka HARA | 30m |
A tiny Ruby runs on the NES: an mruby bytecode interpreter built in cc65 that omits GC, Array, and String but runs a 70-line game on an emulator… | ||
| The AST Galaxy to the Virtual Machine Blues | Koichi Sasada | 31m |
Introduces an AST-based reusable optimization framework that uses astrogen to generate specialized C via subtree dispatchers, names AST subtrees with… | ||
| Back to the roots of date | ODA Hirohito | 32m |
Pure‑Ruby gem ruby-date rewrites the C Date implementation (first commit Jan 10, tests green Feb 11) by porting and reimplementing Date._parse and other… | ||
| Lightning-Fast Method Calls with Ruby 4.1 ZJIT | Takashi Kokubun | 29m |
Proposes replacing per-call frame writes with driver frames in ZJIT, collapsing ~10–40 memory writes down to three by lazy-materializing frame metadata and… | ||
| Implementing Core Set | Jeremy Evans | 29m |
Ruby 4.0 replaces the stdlib Set with a native SET_TABLE-backed implementation that removes per-entry hash values and yields about a 33% memory reduction for… | ||
| From Ruby 2 to 4: Updating a C extension for a Modern VM | Ivo Anjo | 30m |
Datadog updates a C extension to target Ruby 4 APIs, replacing legacy patterns that slow GC and inflate memory. Practical swaps: use… | ||
| From Formal Specification to Property Based Test | Masato Ohba | 30m |
A gem named spec2pbt parses formal specifications and scaffolds runnable Property Based Tests plus a separate config file, lowering only safe, recognized… | ||
| Extreme MQTT on PicoRuby | Ryosuke Uchida | 27m |
A C binding called picoruby-net-mqtt-femto runs LWIP's MQTT client on a Raspberry Pi Pico W and implements QoS 0 and QoS 1 with automatic retransmit and… | ||
| Native Multi-Core Support in mruby/c: Enhancing Performance | Kazuaki Tanaka | 31m |
mruby/c gains native multi‑core support by extending the TCB and adding a dedicated migration queue to avoid a global lock; task migration happens via a new to… | ||
| Rapid Start: Faster Internet Connections, with Ruby's Help | Kazuho Oku | 31m |
Rapid Start changes startup by sending twice the initial window over 1 RTT, using a 3x growth that drops to 2x when queue delay rises, and a recovery that… | ||
| Practical TypeProf: Lessons from Analyzing Optcarrot | Yusuke Endoh | 31m |
TypeProf applied to Optcarrot (a 6,000-line NES emulator) finds 669 false-positive errors initially and is driven to zero by a mix of targeted RBS at… | ||
| From C to Ruby: Porting Doom | Chris Hasinski | 24m |
A full rewrite of Chocolate Doom in Ruby runs original WAD assets with a software renderer (no MIDI music, frame rate unlocked) and targets playable speed: the… | ||
| The future of Ruby documentation | Stan Lo | 26m |
RDoc 8.0 removes old Darkfish aesthetics with the Aliki theme (shipped in Ruby 4.0), replaces the fragile parser with the Prism parser (2,200 → 1,200 lines of… | ||
| Keeping Ruby Running on Cygwin | Daisuke Fujimura | 31m |
Maintains Ruby on Cygwin and documents concrete results: upgraded 2.6 → 3.2 then to 3.4 (3.4.7 released), rewrites cygport packaging to split out RubyGems and… | ||
| Pure Ruby Apache Arrow reader/writer | Kouhei Sutou | 28m |
A pure-Ruby reader/writer for the Apache Arrow file/stream format (published as red_arrow_format) reads and writes Arrow with zero-copy where possible by using… | ||
| mruby on C#: From VM Implementation to Game Scripting | hadashiA | 32m |
A C# reimplementation of the mruby VM called MRubyCS runs as a pure .NET package so Unity and other C# apps avoid native builds — installable via dotnet add… | ||
| Building a Standalone Ruby Programming Environment | Shunsuke Michii | 31m |
A tiny Halcomboard uses an RP2350 (RP2350A) to run a nearly complete Ruby environment: 6 MB flash, 8 MB PSRAM, 640×480 @60Hz DVI via RP2350 HSTX DMA trick… | ||
| Uzumibi: Reinventing mruby for the Edges | Uchio KONDO | 29m |
Rust rewrite of mruby called MRubyEdge compiles to tiny wasm that runs on Cloudflare Workers, Fastly Compute, and Google Cloud Run, connects to KVS, Durable… | ||
| Guide to getting started walking source codes of CRuby | Yoh Osaki | 30m |
Practical guide to reading CRuby source: skip noncompiled #if blocks, debug and assert paths, and semantic areas irrelevant to your goal; read functions… | ||
| Portable and Fast - How to implement a parallel test runner | Tsutomu Katsube | 31m |
Implements a multiprocess test runner using spawn over fork for Windows portability, falling back to TCP sockets on Windows and pipes elsewhere; uses… | ||
| The Less-Told Story of Socket Timeouts | Misaki Shioi | 29m |
Ruby 4.0 adds open_timeout to Socket.tcp/TCPSocket.new so a single timeout covers name resolution through connection, solving cases where resolv_timeout and… | ||
| Making Hash Parallel, Thread-Safe and Fast! | Benoit Daloze | 25m |
Implements a new concurrent hash storage in TruffleRuby that switches storage when an object becomes shared, uses lock-free per-bucket lists and a lock-free… | ||
| (Re)make Regexp in Ruby: Democratizing internals for the JIT | Hiroya Fujinami | 30m |
Rebuild of Onigmo, named Narak, produces a full Ruby-aware regex parser and a prototype pure-Ruby matcher that tests JIT tradeoffs. The parser is done and a… | ||
| When Can You Skip a Test? Tracking Test Impact | Andrey Marchenko | 28m |
DataDog’s test impact tool claims to cut CI time dramatically — examples show a 15‑minute suite reduced to 9 seconds for some commits and a goal of ~50%… | ||
| Digits, Digits, and Digits | tomoya ishida | 31m |
BigDecimal's BigMath gains practical huge‑digit functions: exp and trig move from minutes or years to seconds by improving multiplication and using binary… | ||
| Faster Bundler, Happier Developers | Edouard Chin | 29m |
Bundler and RubyGems deliver concrete speedups: a stable sort key replaces slow version comparisons (5× faster), Git gem clones run in parallel (≈5× faster for… | ||
| Liberating Ruby's Parser from Lexer Hacks | Yudai Takada | 26m |
Claim: replacing ad hoc lexer flags with a parser-aware scanner (PSR) exposes the real causes of Ruby syntax confusion and lets the lexer stop guessing. The… | ||
| Twenty Years of JRuby | Charles Oliver Nutter | 46m |
Twenty years of work on JRuby produces concrete wins: JRuby 10.1 released with a core object layout reduced to 24-byte objects and short Fixnum storage, a JIT… | ||
| mruby in the 8-bit world: mruby VM for Zilog Z80 | Yuji Yokoo | 29m |
Runs mruby bytecode on a Z80 by implementing a custom VM (repo: codeberg/yugigo/mruby-z) and boots directly from a Sega Master System cartridge. Uses… | ||
| Exploring RuboCop with MCP | Ito Koichi | 32m |
Built an MCP Ruby SDK that runs but stays Tier 3 experimental, with server-side conformance tests passing 100% while client features lag. Implements RuboCop… | ||
| ext/profile, or How to Make Profilers Tell the Truth | Daisuke Aritomo | 29m |
Profilers often miss hot work because RB_profile_frames only sees real frames, so specialized instructions and inlined methods disappear; a working hack… | ||
| Funicular: A Browser App Framework Powered by PicoRuby.WASM | Hitoshi Hasumi | 30m |
PicoRuby.WASM runs a mruby VM with a cooperative task scheduler so Ruby’s sleep/yield work in the browser by stepping VM instructions for ~16ms then yielding… | ||
| TutorialKit.rb: interactive Ruby gem docs powered by Wasm | Albert Pazderin | 33m |
Framework runs a full Rails dev environment entirely in the browser by embedding RubyWasm into a StackBlitz-style web container and using Wazi VFS for gems and… | ||
| Million-Agent Ruby: Ractor-Local GC in the Age of AI | Justin Bowen | 29m |
A Ractor-native agent framework called Ragents runs simulated LLMs on a laptop, claims parallelism gains for CPU-bound tool calls, and shows benchmarks… | ||
| Ruby's Scheduler: Improving I/O | Luke Gruber | 22m |
Ruby's main-reactor scheduler uses a simple round-robin with a 100 ms quantum, which yields high throughput but poor responsiveness: threads that block on I/O… | ||
| Lightning Talks | Teruki Tada | 01h 01m |
Demo shows RubyBox modular monolith actually isolates class space per URL: one package can monkey‑patch String and scramble titles while another remains… | ||
| Matz Keynote | yukihiro Matsumoto 'Matz' | 56m |
Introduces Spinel AOT compiler that parses Ruby with Prism, runs whole-program type analysis, emits C and links with CC to a native binary; started March 16… | ||
| From Live Code to Sound: Building a Ruby Live Coding Engine | Yuya Fujiwara | 26m |
Built a Ruby live‑coding engine called Studier RB that ports Studier/TidalCycles patterns into the terminal, uses Parslet to parse mini notation, and reuses… | ||
| Kingdom of the Machine: The Tale of Operators and Commands | Yuichiro Kaneko | 29m |
Compares hand‑written Pratt/recursive‑descent parsing used in Prism with generator approaches and shows three concrete pain points: TokenBeginsExpressionP that… | ||
| The Journey of Box Building | Satoshi "Moris" Tagomori | 49m |
Ruby 4.0 ships an experimental isolation mechanism accessible with RUBY_BOX=1 and the Ruby::Box class that loads files and extensions into per-box spaces so… | ||
| The design and implementation of ZJIT & the next five years | Max Bernstein | 27m |
Zjit compiles Ruby at runtime using an SSA HIR, a lower-level LI for data motion and native Intel/ARM backends, inserting runtime guards and patch points to… | ||
| nothing matches | ||