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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
thekuwayama
April 22, 2026
Programming
43
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
270
Remo nano で実装された Matter の Cluster ご紹介
thekuwayama
0
1.4k
Other Decks in Programming
See All in Programming
Foundation Models frameworkで画像分析
ryodeveloper
1
610
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
650
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
550
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
110
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.5k
5分で問診!Composer セキュリティ健康診断
codmoninc
0
940
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
220
React本体のコードリーディング
high_g_engineer
1
140
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
100
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
790
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
630
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
56k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Faster Mobile Websites
deanohume
310
32k
New Earth Scene 8
popppiees
3
2.5k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
460
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
470
Making Projects Easy
brettharned
120
6.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
240
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.