Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
A Concurrent HTTP/2 Server with Ractor
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
thekuwayama
April 22, 2026
Programming
51
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
A Concurrent HTTP/2 Server with Ractor
RubyKaigi 2026 LT
https://rubykaigi.org/2026/presentations/lt/
thekuwayama
April 22, 2026
More Decks by thekuwayama
See All by thekuwayama
TLS Encrypted Client Hello (ECH) conformance test with Ruby
thekuwayama
0
290
Remo nano で実装された Matter の Cluster ご紹介
thekuwayama
0
1.4k
Other Decks in Programming
See All in Programming
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
1k
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2k
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
100
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
140
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
1
630
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
2.9k
mrbgem 三角測量 開発
ogom
0
130
FreeBSDでZabbixを動かす
kenkino
0
340
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.6k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
390
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
280
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
23k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
How to train your dragon (web standard)
notwaldorf
97
6.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
380
Six Lessons from altMBA
skipperchong
29
4.5k
Building Applications with DynamoDB
mza
96
7.2k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Transcript
A Concurrent HTTP/2 Server with Ractor RubyKaigi 2026 LT Tomoya
Kuwayama thekuwayama
About me - Tomoya Kuwayama - thekuwayama (GitHub) - Nature
Inc. - Software engineer
About HTTP/2 (1) - Hypertext Transfer Protocol (HTTP), referred to
as HTTP version 2 - 2015 RFC 7540 - 2022 RFC 9113 - Protocol designed for efficient transfer
About HTTP/2 (2) - Streams and Multiplexing - multiple concurrent
exchanges on the same connection - HPACK dynamic tables - one for compressing HTTP headers, and another for static and one for dynamic tables
Streams and Multiplexing
HTTP 1.1 Request1 Response1 Request2 Response2 Request3 Response3 Client Server
Stream and Multiplexing Frame Frame Frame Frame Frame Client Server
HPACK dynamic tables
HTTP 1.1 Request1 Response1 Request2 Response2 Request3 Response3 Server
HPACK Index Header Name Header Value 1 :authority 2 :method
GET … … … 61 www-authenticate 62 … … … … … static table dynamic table By (re)using index, shortens encoding
Is HTTP/2 a good topic for Ractor?
About Ractor - most objects are unshareable objects - Ractor.make_shareable
- Ractor.shareable_proc - message-passing for unshareable objects - Ractor#send - Ractor.recv
About HTTP/2 (2) - Streams and Multiplexing - multiple concurrent
exchanges on the same connection - HPACK dynamic tables - one for compressing HTTP headers, and another for static and one for dynamic tables
None
How do I implement an HTTP/2 server with Ractor?
Connection Socket HPACK::Encoder, Deocder Stream Stream … new new new
rx Ractor::Port rx Ractor::Port
Connection Socket HPACK::Encoder, Deocder Stream Stream … new new new
rx Ractor::Port rx Ractor::Port
Connection Socket HPACK::Encoder, Deocder
Connection Socket HPACK::Encoder, Deocder Stream Stream … new new new
rx Ractor::Port rx Ractor::Port
Connection Stream Stream … new new new Socket HPACK::Encoder, Deocder
rx Ractor::Port rx Ractor::Port tx Ractor::Port
Connection Stream Stream … new new new Socket HPACK::Encoder, Deocder
rx Ractor::Port rx Ractor::Port tx Ractor::Port
How does it run HTTP?
Connection Socket HPACK::Encoder, Deocder build tx Ractor::Port
Connection Socket HPACK::Encoder, Deocder Stream rx Ractor::Port tx Ractor::Port recv
new
Connection Socket HPACK::Encoder, Deocder Stream rx Ractor::Port tx Ractor::Port recv
new
Connection Socket HPACK::Encoder, Deocder Stream rx Ractor::Port tx Ractor::Port send
response
Connection Socket HPACK::Encoder, Deocder Stream Stream … new new new
rx Ractor::Port rx Ractor::Port
Conclusion - Developing an HTTP/2 server with Ractor - https://github.com/thekuwayama/biryani
- universally used HTTP/2 protocol - I hope this helps solve the chicken-and-egg problem at Ractor.