Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A Concurrent HTTP/2 Server with Ractor
Search
thekuwayama
April 22, 2026
Programming
48
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
280
Remo nano で実装された Matter の Cluster ご紹介
thekuwayama
0
1.4k
Other Decks in Programming
See All in Programming
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.4k
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
110
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
230
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
980
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
170
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
730
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
280
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
370
Building an Out-of-Order CPU
latte72
0
670
ALB ログから Trace を気合で繋げる技術
fohte
7
860
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
830
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
250
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
A designer walks into a library…
pauljervisheath
211
25k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
390
The Limits of Empathy - UXLibs8
cassininazir
1
640
Utilizing Notion as your number one productivity tool
mfonobong
4
570
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
Crafting Experiences
bethany
1
290
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
220
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.