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
thekuwayama
April 22, 2026
Programming
55
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
300
Remo nano で実装された Matter の Cluster ご紹介
thekuwayama
0
1.4k
Other Decks in Programming
See All in Programming
パスワード再設定メールのURLについて知っておこう
uyuki234
0
180
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
180
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
140
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
180
ChromeでローカルLLM
ryu1013
0
160
contenteditable と日本語入力に向き合う
colorful12
0
220
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
150
オーケストレーション記述言語 Katari
yukikurage
0
190
Modernizing iOS Apps
seyfoyun
0
110
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.2k
Inertia Rails: The One-Person Framework with React & Friends
skryukov
0
110
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
120
Featured
See All Featured
Claude Code のすすめ
schroneko
67
230k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
270
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
940
Git: the NoSQL Database
bkeepers
PRO
433
67k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
59k
Side Projects
sachag
456
43k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
420
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
290
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Tell your own story through comics
letsgokoyo
1
1.1k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
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.