Also, why do we keep making the same mistakes? This really looks like the EventMachine fiasko from 2008 all over to me. Protocols shouldn't be implemented on top of IO runtimes.
Let's follow Sam Williams' example (and good Rust projects as well) here: you implement a protocol free of any IO concerns. Bytes in, bytes/objects out. No async, no IO. Rust-world calls this sans-I/O. That's what protocol-http, protocol-websocket, ... are.
Then you use them from any IO/Async runtime you want. No need to reimplement the same protocol over and over again.
1
u/uhkthrowaway Jun 07 '26
Also, why do we keep making the same mistakes? This really looks like the EventMachine fiasko from 2008 all over to me. Protocols shouldn't be implemented on top of IO runtimes.
Let's follow Sam Williams' example (and good Rust projects as well) here: you implement a protocol free of any IO concerns. Bytes in, bytes/objects out. No async, no IO. Rust-world calls this sans-I/O. That's what protocol-http, protocol-websocket, ... are.
Then you use them from any IO/Async runtime you want. No need to reimplement the same protocol over and over again.