frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: webrtc-rs/rtc – A Sans-I/O WebRTC Stack for Rust

4•rainliu•3w ago
We're excited to share rtc (https://github.com/webrtc-rs/rtc), a pure Rust WebRTC implementation built on the sans-I/O architecture. With the recent release of rtc v0.7.0, we've achieved feature parity with our async-based webrtc crate while offering complete runtime independence.

## What is Sans-I/O?

Sans-I/O separates protocol logic from I/O operations. Instead of the library performing network reads/writes, YOU control all I/O. The library acts as a pure state machine.

Core API (8 methods):

- poll_write() / poll_event() / poll_read() / poll_timeout() - Get outputs

- handle_read() / handle_timeout() / handle_write() / handle_event() - Feed inputs

## Why Sans-I/O for WebRTC?

WebRTC is a STACK of protocols (ICE, DTLS, SRTP, SCTP, RTP/RTCP). Traditional implementations tightly couple protocol logic with async runtimes, making them runtime-locked, difficult to test without network I/O, and hard to integrate into existing event loops.

Sans-I/O solves this by modeling WebRTC as a composable protocol pipeline where each layer implements the same sansio::Protocol trait.

## Feature Parity

- Full WebRTC 1.0 API (PeerConnection, Media, DataChannel)

- Complete protocol stack (ICE, DTLS, SRTP/SRTCP, SCTP, RTP/RTCP)

- Simulcast with multiple spatial layers

- RTCP Interceptors (NACK, Sender/Receiver Reports, TWCC)

- mDNS support for IP privacy

- W3C and RFC compliant

## Architecture Highlights

- Pure Protocol Pipeline: WebRTC as composable handlers implementing sansio::Protocol. Read: Raw Bytes → Demuxer → ICE → DTLS → SCTP/SRTP → Interceptor → Endpoint. Write path reverses this.

- Zero-Cost Abstractions: Interceptors use generic composition instead of async trait objects. No heap allocations in the hot path.

- Multi-Socket I/O: Handle multiple sockets (mDNS multicast + WebRTC traffic) in one event loop - difficult with async designs.

- Testable: Protocol logic tested without network I/O. Feed synthetic packets, verify state transitions.

## Relationship with async webrtc

rtc (sans-I/O) and webrtc (async) are COMPLEMENTARY:

- Use webrtc for async/await, Tokio integration, quick start

- Use rtc for runtime independence, custom I/O, maximum control, embedded systems

Both actively maintained.

## Recent Milestones

v0.7.0 (Jan 10) - mDNS support for IP privacy with .local hostnames

v0.6.0 (Jan 9) - Complete interceptor framework (NACK, RTCP Reports, TWCC)

v0.5.0 (Jan 5) - Enhanced simulcast support

v0.3.0 (Jan 4) - Initial public release

## Use Cases

Sans-I/O shines for: custom networking, embedded systems, game engines, high performance applications, testing infrastructure, WebAssembly.

## Links

- GitHub: https://github.com/webrtc-rs/rtc

- Crates.io: https://crates.io/crates/rtc (v0.7.0)

- Docs: https://docs.rs/rtc

- Blog: https://webrtc.rs/blog

- Discord: https://discord.gg/4Ju8UHdXMs

Technical deep dives available on our blog exploring the protocol pipeline architecture and interceptor design principles.

We'd love feedback from the Rust and WebRTC communities!

Comments

Sean-Der•3w ago
Congrats! Big project to go Sans-I/O :)
agentifysh•3w ago
Great work I have some extra questions if you could help a noob like me:

Since I have to bring my own I/O, do you have a reference implementation or 'glue' code examples for tokio, Bevy ,std::net so I don't have to write the event loop from scratch?

How does this integrate with the existing webrtc-rs media crates? Can I still use the media crate for packetizing H.264/Opus, or do I need to handle payload processing manually too?

encryption (DTLS/SRTP) layer interface with the Sans-I/O model? Does it rely on ring or openssl does that introduce blocking or heap allocations?

benchmarks comparing CPU usage between the async webrtc crate and rtc under high load?

Is API stable or should I expect breaking changes to the poll_ or handle_ methods in the near future?

are theer plan to support web transport, or is the focus strictly on webrtc 1.0?

since the library doesn't control the socket directly, how does it accurately estimate bandwidth to tell the video encoder to scale down?

rainliu•3w ago
https://github.com/webrtc-rs/rtc/blob/master/examples/exampl... lists examples how to write the event loop with sansio::Protocol interface.

sansio::Protocol API is stable, since crate sansio is stable v1.0.

The mdns-query-and-gather example shows how to control multiple I/O sockets to use and how to multiplex them with sansio::Protocol API.

For bandwidth estimation, you can register your own Interceptor with callback or event message to tell the video encoder.

How to use AI with expressive writing without generating AI slop

https://idratherbewriting.com/blog/bakhtin-collapse-ai-expressive-writing
1•cnunciato•1m ago•0 comments

Show HN: LinkScope – Real-Time UART Analyzer Using ESP32-S3 and PC GUI

https://github.com/choihimchan/linkscope-bpu-uart-analyzer
1•octablock•1m ago•0 comments

Cppsp v1.4.5–custom pattern-driven, nested, namespace-scoped templates

https://github.com/user19870/cppsp
1•user19870•2m ago•1 comments

The next frontier in weight-loss drugs: one-time gene therapy

https://www.washingtonpost.com/health/2026/01/24/fractyl-glp1-gene-therapy/
1•bookofjoe•5m ago•1 comments

At Age 25, Wikipedia Refuses to Evolve

https://spectrum.ieee.org/wikipedia-at-25
1•asdefghyk•8m ago•3 comments

Show HN: ReviewReact – AI review responses inside Google Maps ($19/mo)

https://reviewreact.com
2•sara_builds•8m ago•1 comments

Why AlphaTensor Failed at 3x3 Matrix Multiplication: The Anchor Barrier

https://zenodo.org/records/18514533
1•DarenWatson•9m ago•0 comments

Ask HN: How much of your token use is fixing the bugs Claude Code causes?

1•laurex•13m ago•0 comments

Show HN: Agents – Sync MCP Configs Across Claude, Cursor, Codex Automatically

https://github.com/amtiYo/agents
1•amtiyo•14m ago•0 comments

Hello

1•otrebladih•15m ago•0 comments

FSD helped save my father's life during a heart attack

https://twitter.com/JJackBrandt/status/2019852423980875794
2•blacktulip•18m ago•0 comments

Show HN: Writtte – Draft and publish articles without reformatting, anywhere

https://writtte.xyz
1•lasgawe•20m ago•0 comments

Portuguese icon (FROM A CAN) makes a simple meal (Canned Fish Files) [video]

https://www.youtube.com/watch?v=e9FUdOfp8ME
1•zeristor•21m ago•0 comments

Brookhaven Lab's RHIC Concludes 25-Year Run with Final Collisions

https://www.hpcwire.com/off-the-wire/brookhaven-labs-rhic-concludes-25-year-run-with-final-collis...
2•gnufx•24m ago•0 comments

Transcribe your aunts post cards with Gemini 3 Pro

https://leserli.ch/ocr/
1•nielstron•27m ago•0 comments

.72% Variance Lance

1•mav5431•28m ago•0 comments

ReKindle – web-based operating system designed specifically for E-ink devices

https://rekindle.ink
1•JSLegendDev•30m ago•0 comments

Encrypt It

https://encryptitalready.org/
1•u1hcw9nx•30m ago•1 comments

NextMatch – 5-minute video speed dating to reduce ghosting

https://nextmatchdating.netlify.app/
1•Halinani8•31m ago•1 comments

Personalizing esketamine treatment in TRD and TRBD

https://www.frontiersin.org/articles/10.3389/fpsyt.2025.1736114
1•PaulHoule•32m ago•0 comments

SpaceKit.xyz – a browser‑native VM for decentralized compute

https://spacekit.xyz
1•astorrivera•33m ago•0 comments

NotebookLM: The AI that only learns from you

https://byandrev.dev/en/blog/what-is-notebooklm
2•byandrev•33m ago•1 comments

Show HN: An open-source starter kit for developing with Postgres and ClickHouse

https://github.com/ClickHouse/postgres-clickhouse-stack
1•saisrirampur•34m ago•0 comments

Game Boy Advance d-pad capacitor measurements

https://gekkio.fi/blog/2026/game-boy-advance-d-pad-capacitor-measurements/
1•todsacerdoti•34m ago•0 comments

South Korean crypto firm accidentally sends $44B in bitcoins to users

https://www.reuters.com/world/asia-pacific/crypto-firm-accidentally-sends-44-billion-bitcoins-use...
2•layer8•35m ago•0 comments

Apache Poison Fountain

https://gist.github.com/jwakely/a511a5cab5eb36d088ecd1659fcee1d5
1•atomic128•37m ago•2 comments

Web.whatsapp.com appears to be having issues syncing and sending messages

http://web.whatsapp.com
1•sabujp•37m ago•2 comments

Google in Your Terminal

https://gogcli.sh/
1•johlo•39m ago•0 comments

Shannon: Claude Code for Pen Testing: #1 on Github today

https://github.com/KeygraphHQ/shannon
1•hendler•39m ago•0 comments

Anthropic: Latest Claude model finds more than 500 vulnerabilities

https://www.scworld.com/news/anthropic-latest-claude-model-finds-more-than-500-vulnerabilities
2•Bender•44m ago•0 comments