Temporary Fix f07006e735 feat(udp): support wasm32-wasip2 (#773)
## Description

Extends `posix_minimal` to `wasm32-wasip2` and makes that backend build
there.

- `UdpSockRef`'s descriptor-based constructor was `cfg(unix)`;
`std::os::fd::AsFd` covers
  unix and wasi alike.
- `recv` uses `recv_from`: wasi has no vectored read, and `BATCH_SIZE`
is 1 regardless.
- `set_nonblocking` goes through `std`. socket2 uses `fcntl(F_SETFL,
O_NONBLOCK)`, which
  WASI rejects; `std` uses `ioctl(FIONBIO)`, which it accepts.

espidf is unaffected, verified with the CI line:

``` bash
cargo check -Z build-std=std,panic_abort --target riscv32imc-esp-espidf -p noq-udp --no-default-features
```

Fixes #772.

## Breaking Changes

None.

## Notes & open questions

- The alias comment read "Unix-family platforms"; WASI is not one, so it
now reads "Platforms". A separate alias or a rename may suit you better
- happy to change it.
- The integration suite builds and runs on wasip2 under wasmtime:
`basic`, `basic_src_ip` and `socket_buffers` pass, `gso` is ignored as
it is elsewhere. That would be the first executable coverage
`posix_minimal` has had, since the espidf job is `cargo check`. Not
included here - it needs a blocking helper spanning unix/windows/wasi,
because `set_nonblocking(false)` in the tests hits the same `fcntl`
problem, plus a decision on gating the four ECN tests. Happy to open it
separately.

## Change checklist

- [x] Self-review.
- [x] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [x] Tests if relevant.
- [x] All breaking changes documented.
- [x] This PR was created by a human that thought critically about the
      proposed change and wrote an as clear and concise description as
      they could.
- [x] This PR isn't slop, and is carefully crafted to do have the
      intented effect.
- [x] `cargo make` passes locally.

Co-authored-by: user <email@example.com>
2026-07-27 12:07:38 +00:00
2026-02-06 10:04:56 +00:00
2025-03-24 15:57:34 +00:00
2026-07-20 19:54:00 +00:00
2026-03-09 14:40:18 +01:00
2020-01-27 10:21:10 -08:00
2026-03-09 14:45:33 +01:00
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.

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