mirror of
https://github.com/n0-computer/noq.git
synced 2026-09-21 18:53:27 +00:00
51907c821a1bb24adef5dcc8aee9620ddbc7d970
## Description Prevent `WeakConnectionHandle` from keeping the allocation for a `ConnectionInner` alive. `ConnectionInner` is quite large, 6048 bytes when I measured it. `Arc` is just an 8 byte pointer. So before the weak handle would keep a large allocation alive. Now it just keeps a tiny allocation alive, consisting of a pointer and 2 refcounts, so 24 bytes on 64 bit machines. The downside of this approach is that every connection access needs to do a double dereference. It's important to keep `WeakConnectionHandle` slim because it is used in downstream APIs by users, who would likely assume that keeping something called a `WeakConnectionHandle` would not force the `ConnectionInner` allocation to stay alive: https://github.com/n0-computer/iroh/issues/3565
feat!: update qlog to latest drafts, add more events and QUIC extensions, emit traces per connection (#208)
Iroh Quinn
This is a fork based on quinn, maintained by n0. Currently published to crates.io under
iroh-quinn.
Main differences to upstream quinn
- Small API improvements
- Implements additional QUIC extensions
- Multipath
- QAD
- QNT
- Expanded support for QLOG
Quinn is a pure-rust, async-compatible implementation of the IETF [QUIC][quic] transport protocol.
- Simultaneous client/server operation
- Ordered and unordered stream reads for improved performance
- Works on stable Rust, tested on Linux, macOS and Windows
- Pluggable cryptography, with a standard implementation backed by [rustls][rustls] and [ring][ring]
- Application-layer datagrams for small, unreliable messages
- Future-based async API
- Minimum supported Rust version of 1.83.0
License
Copyright 2025 The quinn developers Copyright 2025 N0, INC.
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Description
Languages
Rust
99.3%
Python
0.5%
Shell
0.2%