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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
thekuwayama
April 22, 2026
Programming
5
0
Share
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
240
Remo nano で実装された Matter の Cluster ご紹介
thekuwayama
0
1.3k
Other Decks in Programming
See All in Programming
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜 / tidb-architecture-study
dznbk
1
170
mruby on C#: From VM Implementation to Game Scripting (RubyKaigi 2026)
hadashia
2
320
Radical Imagining - LIFT 2025-2027 Policy Agenda
lift1998
0
310
Nuxt Server Components
wattanx
0
280
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
Kingdom of the Machine
yui_knk
2
180
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
3
130
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
330
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
250
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
6.5k
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
490
Coding as Prompting Since 2025
ragingwind
0
830
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Designing for Timeless Needs
cassininazir
0
190
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Music & Morning Musume
bryan
47
7.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.4k
Paper Plane (Part 1)
katiecoart
PRO
0
6.6k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
680
Test your architecture with Archunit
thirion
1
2.2k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.6k
Odyssey Design
rkendrick25
PRO
2
570
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
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.