close

Implementing Core Set
Jeremy Evans • Hakodate, Hokkaido, Japan • Talk

Held on: April 23, 2026
Published: not published

Historically, Ruby's Set class was in the standard library. Starting in Ruby 3.2, the Set standard library was autoloaded by default. In Ruby 4.0, Set is now implemented as one of the core classes. In this presentation, I'll go over the history of Set, why and how it was implemented as a core class, interesting implementation issues, and how it led to a decrease in memory usage for some embedded RTypedData objects (and what RTypedData objects are).

RubyKaigi 2026

RubyKaigi is a yearly conference held in Japan and features 79 talks from various speakers, including keynotes by Satoshi Tagomori, Charles Oliver Nutter, and Yukihiro "Matz" Matsumoto.

79
Talks
79
Speakers
3
Days
21
Editions
Large Hall #rubykaigiA

Full Schedule

Day 1 - Wednesday, Apr 22

08:30 - 09:30 Door Open
Image
Keynote: The Journey of Box Building
Satoshi Tagomori
Large Hall #rubykaigiA
Image
Funicular: A Browser App Framework Powered by PicoRuby.WASM
HASUMI Hitoshi
Large Hall #rubykaigiA
Image
When Can You Skip a Test? Tracking Test Impact
Andrey Marchenko
Sub Arena #rubykaigiB
Image
Back to the roots of date
ODA Hirohito
Small Hall #rubykaigiC
Image
Liberating Ruby's Parser from Lexer Hacks
Yudai Takada
Large Hall #rubykaigiA
Image
Million-Agent Ruby: Ractor-Local GC in the Age of AI
Justin Bowen
Sub Arena #rubykaigiB
Image
Portable and Fast - How to implement a parallel test runner
Tsutomu Katsube
Small Hall #rubykaigiC
12:00 - 13:30 Lunch Break
Image
Exploring RuboCop with MCP
Koichi ITO
Large Hall #rubykaigiA
Image
ext/profile, or How to Make Profilers Tell the Truth
Daisuke Aritomo
Sub Arena #rubykaigiB
Image
mruby on C#: From VM Implementation to Game Scripting
hadashiA
Small Hall #rubykaigiC
Image
Ruby's Scheduler: Improving I/O
Luke Gruber
Large Hall #rubykaigiA
Image
mruby in the 8-bit world: mruby VM for Zilog Z80
Yuji Yokoo
Sub Arena #rubykaigiB
Image
Rapid Start: Faster Internet Connections, with Ruby's Help
Kazuho Oku
Small Hall #rubykaigiC
Image
Kingdom of the Machine: The Tale of Operators and Commands
Yuichiro Kaneko
Large Hall #rubykaigiA
Image
From Live Code to Sound: Building a Ruby Live Coding Engine
Yuya Fujiwara
Sub Arena #rubykaigiB
Image
PicoRuby as a Multi-VM Operating System
Katsuhiko Kageyama
Small Hall #rubykaigiC
15:20 - 16:00 Afternoon Break
Image
The design and implementation of ZJIT & the next five years
Max Bernstein
Large Hall #rubykaigiA
Image
TutorialKit.rb: interactive Ruby gem docs powered by Wasm
Albert Pazderin
Sub Arena #rubykaigiB
Image
Guide to getting started walking source codes of CRuby
Yoh Osaki
Small Hall #rubykaigiC
Image
Digits, Digits, and Digits
Tomoya Ishida
Large Hall #rubykaigiA
Image
Faster Bundler, Happier Developers
Edouard Chin
Sub Arena #rubykaigiB
Image
Building a Standalone Ruby Programming Environment
Shunsuke Michii
Small Hall #rubykaigiC
Image
Lightning Talks
Tomohiro Hashidate, Weihang Jian, Maki Kawahara, S-H-GAMELINKS, Yuji Teshima, Mari Imaizumi, Yuhi Sato, Sangyong "Shi...
Large Hall #rubykaigiA

Day 2 - Thursday, Apr 23

Image
Keynote: Twenty Years of JRuby
Charles Oliver Nutter
Large Hall #rubykaigiA
Image
The AST Galaxy to the Virtual Machine Blues
Koichi Sasada
Large Hall #rubykaigiA
Image
No Types Needed, Just Callable Method Check
Daichi Kamiyama
Sub Arena #rubykaigiB
Image
Keeping Ruby Running on Cygwin
Daisuke Fujimura
Small Hall #rubykaigiC
Image
Building the Next-Generation Garbage Collector in Ruby
Peter Zhu
Large Hall #rubykaigiA
Image
Uzumibi: Reinventing mruby for the Edges
Kondo Uchio
Sub Arena #rubykaigiB
Image
Programming with a DJ Controller - not vibe coding
Masatoshi SEKI
Small Hall #rubykaigiC
12:00 - 13:30 Lunch Break
Image
Require Hooks: Filling the Gap in Ruby's Extensibility
Vladimir Dementyev
Large Hall #rubykaigiA
Image
Surviving Black Friday: 100 billion requests with Falcon!
Samuel Williams, Marc-André Cournoyer, Josh Teeter
Sub Arena #rubykaigiB
Image
Pure Intonation on Browser: Building a Sequencer with Ruby
Tomoyuki Chikanaga
Small Hall #rubykaigiC
Image
A Faster FFI
Aaron Patterson
Large Hall #rubykaigiA
Image
Making the RBS Parser Faster
Soutaro Matsumoto
Sub Arena #rubykaigiB
Image
Extreme MQTT on PicoRuby
Ryosuke Uchida
Small Hall #rubykaigiC
Image
Implementing Core Set
Jeremy Evans
Large Hall #rubykaigiA
Image
From C to Ruby: Porting Doom
Chris Hasiński
Sub Arena #rubykaigiB
Image
ruby.wasm also enables JavaScript to call Ruby libraries.
Shigeru Nakajima
Small Hall #rubykaigiC
15:20 - 16:00 Afternoon Break
Image
Thread-Coordinated Ractors: The Pattern That Delivers
Maciej Mensfeld
Large Hall #rubykaigiA
Image
Building a Modern Ruby <-> C++ Toolchain
Charlie Savage
Sub Arena #rubykaigiB
Image
Chasing Real-Time Observability for CRuby
Shintaro Otsuka
Small Hall #rubykaigiC
Image
Practical TypeProf: Lessons from Analyzing Optcarrot
Yusuke Endoh
Large Hall #rubykaigiA
Image
Whose Memory is it Anyway
Jacob
Sub Arena #rubykaigiB
Image
From Formal Specification to Property Based Test
Masato Ohba
Small Hall #rubykaigiC
Image
The future of Ruby documentation
Stan Lo
Large Hall #rubykaigiA
Image
Invariants in my own Ruby: some things must never change
Soichiro Isshiki
Sub Arena #rubykaigiB
Image
Integration of PRK Firmware and R2P2
Hayao Kimura
Small Hall #rubykaigiC

Day 3 - Friday, Apr 24

Image
Ruby Committers and the World
TODO
Large Hall #rubykaigiA
Image
The Less-Told Story of Socket Timeouts
Misaki Shioi
Large Hall #rubykaigiA
Image
Autoresearching Ruby Performance with LLMs
Nate Berkopec
Sub Arena #rubykaigiB
Image
Native Multi-Core Support in mruby/c: Enhancing Performance
Kazuaki Tanaka
Small Hall #rubykaigiC
Image
A Write Barrier Validating GC for Ruby
John Hawthorn
Large Hall #rubykaigiA
Image
Writing DSL for DSL: Catch Code as It's Born with TracePoint
Andrey Novikov
Sub Arena #rubykaigiB
Image
Pure Ruby Apache Arrow reader/writer
Kouhei Sutou
Small Hall #rubykaigiC
12:00 - 13:30 Lunch Break
Image
(Re)make Regexp in Ruby: Democratizing internals for the JIT
Hiroya Fujinami
Large Hall #rubykaigiA
Image
From Ruby 2 to 4: Updating a C extension for a Modern VM
Ivo Anjo
Sub Arena #rubykaigiB
Image
Smalruby: Visualizing Ruby with Bidirectional Transpiration
Kouji Takao
Small Hall #rubykaigiC
Image
Ruby Releases Ruby
Hiroshi SHIBATA
Large Hall #rubykaigiA
Image
HTML-Aware ERB: The Path to Reactive Rendering
Marco Roth
Sub Arena #rubykaigiB
Image
Ruby on NES - how to make the smallest ruby ever
Yutaka HARA
Small Hall #rubykaigiC
Image
Making Hash Parallel, Thread-Safe and Fast!
Benoit Daloze
Large Hall #rubykaigiA
Image
Blazing-fast Code Indexing for Smarter Ruby Tools
Alexandre Terrasa
Sub Arena #rubykaigiB
Image
PicoRuby for IoT: Connecting to the Cloud with MQTT
Yuhei Okazaki
Small Hall #rubykaigiC
15:20 - 16:00 Afternoon Break
Image
Lightning-Fast Method Calls with Ruby 4.1 ZJIT
Takashi Kokubun
Large Hall #rubykaigiA
Image
Ruby the Hard Way: Writing Bytecode to Optimize Plain Ruby
Samuel Giddins
Sub Arena #rubykaigiB
Image
Good Enough Types: Heuristic Type Inference for Ruby
Sangyong "Shia" Sim
Small Hall #rubykaigiC
Image
Keynote: Meet Spinel
Yukihiro "Matz" Matsumoto
Large Hall #rubykaigiA
Explore all talks recorded at RubyKaigi 2026
Image
Image
Image
Image
Image
Image
Image
Image