ramfox 51907c821a fix: always double deref Connection -> ConnectionInner (#277)
## 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
2026-01-09 02:19:09 +00:00
2025-12-02 12:11:05 +01:00
2025-12-19 11:53:42 +01:00
2025-03-24 15:57:34 +00:00
2020-01-27 10:21:10 -08:00
2025-12-02 13:24:18 +01:00
2025-12-02 12:39:06 +00:00
2025-02-23 11:52:46 +00:00

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

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.

S
Description
noq, a QUIC implementation in Rust
Readme 106 MiB
Languages
Rust 99.3%
Python 0.5%
Shell 0.2%