noq, a QUIC implementation in Rust
Find a file
Diva Martínez 54bae7f87d
fix(proto): make path_stats not require self mutably - api unchanged (#736)
## Description

Continuing perusing stats, `path_stats` and `stats` both require `&mut
self`, which is unintuitive and actually not even needed.
- `stats` doesn't even need a change beside updating the api, so no
change for this function, just noted here for completeness.
- `path_stats` was taking the stats mutably, updating them and then
returning.
There is no point in the update, as this is never read. The next call to
`path_stats` overwrites whatever is in there. Instead of updating the
stored
value with the snapshot fields, it updates the returned stats. This
allows
us to polish the public API and remove the unexpected `&mut self` in
favor
  of the more natural `&self`.

## Breaking Changes

n/a

## Notes & open questions

n/a

## Change checklist
<!-- Remove any that are not relevant. -->
- [x] Self-review.
2026-07-02 12:53:29 +00:00
.cargo ci: add testing on wine (#393) 2026-02-06 10:04:56 +00:00
.config chore(tests): rename proptests modules to all be consistent (#493) 2026-03-11 12:51:57 +00:00
.github chore(ci): Enable merge queue trigger for patchay tests 2026-06-18 10:32:19 +02:00
bench feat: Add Endpoint::wait_all_draining to enable faster endpoint closing (#651) 2026-05-21 09:42:20 +00:00
docs chore: Release 2026-06-29 11:41:09 +02:00
fuzz fix(proto): Avoid unwrapping VarInt decoding during TransportParameter parsing (#485) 2026-03-09 10:57:09 +00:00
noq chore: Release 2026-06-29 11:41:09 +02:00
noq-proto fix(proto): make path_stats not require self mutably - api unchanged (#736) 2026-07-02 12:53:29 +00:00
noq-udp chore: Release 2026-06-29 11:41:09 +02:00
perf feat: Add Endpoint::wait_all_draining to enable faster endpoint closing (#651) 2026-05-21 09:42:20 +00:00
.codecov.yml Don't notify or comment until three results are uploaded 2024-09-23 08:47:11 +00:00
.gitignore Version Cargo lockfile 2025-03-24 15:57:34 +00:00
Cargo.lock deps: bump anyhow version to avoid unsoundness (#731) 2026-06-29 15:13:43 +00:00
Cargo.toml deps: update n0-qlog (#703) 2026-06-11 09:52:50 +00:00
CHANGELOG.md chore: Release 2026-06-29 11:41:09 +02:00
cliff.toml chore: release prep 2026-03-09 14:40:18 +01:00
codecov.yml Disable codecov status for now 2020-01-27 10:21:10 -08:00
CONTRIBUTING.md docs: cleanup readme and update licensing infos 2025-12-16 15:05:14 +01:00
deny.toml chore(deps): update wasm-bindgen version (#664) 2026-05-20 13:31:47 +00:00
LICENSE-APACHE docs: cleanup readme and update licensing infos 2025-12-16 15:05:14 +01:00
LICENSE-MIT docs: cleanup readme and update licensing infos 2025-12-16 15:05:14 +01:00
Makefile.toml chore: check external types in CI (#643) 2026-05-11 13:18:44 +00:00
README.md Fix typo in RFC 9001 link in README.md (#510) 2026-03-17 11:02:59 +00:00
release.toml chore: fix release config 2026-03-09 14:45:33 +01:00
rustfmt.toml Switch to 2024 style 2025-02-23 11:52:46 +00:00

noq

Documentation Crates.io Chat License: MIT License: Apache 2.0

General purpose implementation of the QUIC transport protocol in pure Rust. Noq is built as an async-friendly API in the noq crate on top of a sans-io protocol library in noq-proto.

Noq started out as a fork of the excellent Quinn project. The main focus of development has been towards adding support for more QUIC (draft) extensions:

Features

  • Easy to use futures-based async API.
  • Client and server server functionality.
  • 0-RTT and 0.5-RTT data support.
  • Ordered and unordered stream reads.
  • Custom and zero-length connection identifiers.
  • Fully pluggable crypto API with a Rustls implementation using ring or aws-lc-rs provided by default for convenience.
  • Broad platform support, including Linux, Windows, macOS, android, iOS and wasm.

Standards

The noq library aims to be correct implementation of various QUIC standards:

Getting started

Examples at https://github.com/n0-computer/noq/blob/main/noq/examples

$ cargo run --example server ./
$ cargo run --example client https://localhost:4433/Cargo.toml

This launches an HTTP 0.9 server over the QUIC transport on the loopback address serving the current working directory, with the client fetching ./Cargo.toml. By default, the server generates a self-signed certificate and stores it to disk, where the client will automatically find and trust it.

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.