193 Commits

Author SHA1 Message Date
Floris Bruynooghe 24312a7983 chore: Update PR template to mention API changes (#796)
## Description

The breaking changes section is too narrow really today. We need to be
able to identify API additions and deprecations mostly. Breaking
changes only comes back once we work towards 2.0.

Additionally stop encouraging folks to remove some checkboxes. I'd
rather have them un-ticked.

## Breaking Changes

n/a

## Notes & open questions

- Also updates chacha20 to avoid yanked versions that contain UB.
- Removes the perf job, not very useful in it's current state (and
broken).

## 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.
2026-09-02 15:23:46 +00:00
Asmir Avdicevic c334d2da21 ci(secruity): ensure locked cargo files and dependabot cooldown (#788)
## Description

- Uses `--locked` to ensure we only use deps from the lock file
- Adds cooldown period to dependabot
- pins actions versions
- introduces zizimor and pinact

## Breaking Changes

<!-- Optional, if there are any breaking changes document them,
including how to migrate older code. -->

## Notes & open questions

<!-- Any notes, remarks or open questions you have to make about the -->
<!-- PR. -->

## Change checklist
<!-- Remove any that are not relevant. -->
- [ ] Self-review.
- [ ] 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.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
- [ ] 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.
- [ ] This PR isn't slop, and is carefully crafted to do have the
      intented effect.
- [ ] `cargo make` passes locally.

---------

Co-authored-by: Friedel Ziegelmayer <me@dignifiedquire.com>
2026-08-20 14:00:43 +00:00
Floris Bruynooghe 20d6fec70d fix(udp): Disable SO_TIMESTAMPNS for now (#776)
## Description

We do not rely on this, and the implementation is broken on musl.

Fixes #774.


## Breaking Changes

n/a

## Notes & open questions

We need to run tests on musl in CI somehow.

## Change checklist

- [x] Self-review.
- [x] Tests if relevant.
- [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: dignifiedquire <me@dignifiedquire.com>
2026-07-29 15:26:30 +00:00
Diva Martínez 5cf07f4830 deps: run cargo update and adjust deny.toml accordingly (#762)
## Description

Updates deps to latest and adjusts deny.toml entries accordingly. Pins
the aws-lc crates to the current version. New versions generate cryptic
errors

## Breaking Changes

n/a

## Notes & open questions

prompted by several dependabot commits from quinn that were not applied
in the latest sync.
These were not applied due to several reasons:
- Cherry picking `Cargo.lock` updates often gives wrong results.
`Cargo.lock` must always be generated by cargo itself.
- We still should keep our deps updated within compatible versions.

## Change checklist
- [x] Self-review.
- [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.
2026-07-22 22:37:41 +00:00
Floris Bruynooghe 8cae43aed1 chore: Run daily CI even two hours earlier (#767)
## Description

Currently they start finishing at around 9 CEST. Let's move them 2h
earlier.

## Breaking Changes

n/a

## Notes & open questions

n/a

## Change checklist

- [x] Self-review.
- [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.
2026-07-21 14:34:26 +00:00
dependabot[bot] a2db989f82 deps: bump codecov/codecov-action from 5 to 7
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5 to 7.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v5...v7)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 81c0363fac)
2026-07-17 08:43:31 -05:00
Floris Bruynooghe 403ce63073 ci: Run daily CI jobs 2 hours earlier (#758)
## Description

We have a lot of these jobs running way to long into the Europe
day. 04:00 UTC is 23:00 in the latest dev timezone so should be fine.

## Breaking Changes

n/a

## Notes & open questions

n/a

## Change checklist

- [x] Self-review.
- [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.
2026-07-17 09:29:23 +00:00
Floris Bruynooghe b6b47f148d chore: add more guidance on llm use (#752)
## Description

Copied and adjusted from iroh.

## Breaking Changes

n/a

## Notes & open questions

Move the `cargo make` to a checkbox might be a bit harsh, but honestly
I more or less am in that habit already so probably ok.

## Change checklist

- [x] Self-review.
2026-07-16 12:59:22 +00:00
Asmir Avdicevic d0456ce2c7 chore(ci): fix docs cleanup job (#751)
## Description

Sets the correct user config for the action (we never ported this from
iroh) and lands some fixes to the script (numerical instead of lexical
sort, plus avoids negative head counts)

## Breaking Changes

<!-- Optional, if there are any breaking changes document them,
including how to migrate older code. -->

## Notes & open questions

<!-- Any notes, remarks or open questions you have to make about the -->
<!-- PR. -->

## Change checklist
<!-- Remove any that are not relevant. -->
- [ ] Self-review.
- [ ] 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.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.

<!--
tip:
Run `cargo make` in the workspace root to check many light-weight CI
steps locally.
-->
2026-07-14 11:50:26 +00:00
Floris Bruynooghe 966398681f chore: improve semver checks for stable releases (#734)
## Description

This updates semver checks with the following behaviour:

- The baseline for the check is now the latest published release on
  crates.io

- If you make a semver-breaking change you must also bump the package
  version number so that the semver check will pass. Because we like
  to bump the versions of all crates at the same time you can not use
  pre-releases since cargo does not allow mixing those and the iroh
  patchbay tests has 2nd-level dependencies on noq-udp (via netwatch).

- Adding deprecated items is allowed in minor version bumps, matching
  https://semver.org/#how-should-i-handle-deprecating-functionality

- Bump noq-proto version because we previously added deprecations.

- Now the baseline is somewhat stable, enable caching.


## Breaking Changes

none

## Notes & open questions

I tested this first by not bumping the noq-proto version number and it
fails in that case. Which is due to #725.

Once this is merged I will make the semver check required in noq.

The version bumping required to make semver-checks pass could be a bit
annoying. It will also make patching iroh for noq a little bit harder.
As shown by what the patchbay check has to do now. I'm tempted to think
for now that this is worth it, but happy to think about how to tweak
this as we gain experience.

OTOH having to bump to the right version means that come to a release we
do know what the next version should be. Which is probably good.

## Change checklist

- [x] Self-review.
2026-07-13 16:40:27 +00:00
Floris Bruynooghe 854eebd809 chore(ci): Enable merge queue trigger for patchay tests
This means the merge queue queue will trigger starting the patchbay
checks. And those checks are currently required to merge, so without
it the merge queue can not merge PRs.
2026-06-18 10:32:19 +02:00
Philipp Krüger e7012143a5 chore(ci): Switch to force-installing wasm-bindgen-cli (#665)
## Description

The "Build & test wasm32" check has been flaky in recent times.
The pattern seems to be, when it fails, then the `cargo binstall
wasm-bindgen-cli` command outputs:
```
 INFO wasm-bindgen-cli v0.2.121 is already installed, use --force to override
 INFO Done in 2.399616ms
```
Whereas when it succeeds, it's always
```
 INFO resolve: Resolving package: 'wasm-bindgen-cli@=0.2.121'
 WARN The package wasm-bindgen-cli v0.2.121 (x86_64-unknown-linux-musl) has been downloaded from github.com
 INFO This will install the following binaries:
 INFO   - wasm-bindgen => /root/.cargo/bin/wasm-bindgen
 INFO   - wasm-bindgen-test-runner => /root/.cargo/bin/wasm-bindgen-test-runner
 INFO   - wasm2es6js => /root/.cargo/bin/wasm2es6js
 INFO Installing binaries...
 INFO Done in 2.149248106s
```

Here are some recent runs, all after #664 was merged:
- Runner name: 'hetz-ci-linux-x64-2': Fail
(https://github.com/n0-computer/noq/actions/runs/26168869453/job/76980594957)
- Runner name: 'hetz-ci-linux-x64-5': Success
(https://github.com/n0-computer/noq/actions/runs/26165233426/job/76967593091)
- Runner name: 'hetz-ci-linux-x64-1': Success
(https://github.com/n0-computer/noq/actions/runs/26164884966/job/76966183329)
- Runner name: 'hetz-ci-linux-x64-1': Fail
(https://github.com/n0-computer/noq/actions/runs/26167126491/job/76974283055)
- Runner name: 'hetz-ci-linux-x64-1': Fail
(https://github.com/n0-computer/noq/actions/runs/26167190559/job/76974514178?pr=662)

# Notes

It's unfortunate that we loose caching this way (and make ourselves more
vulnerable to github releases being flaky!!!), but this is mostly to
unblock us in the short term...
2026-05-20 15:47:11 +00:00
Franz Heinzmann 628f2df026 chore(deps): update wasm-bindgen version (#664)
## Description

Wasm CI is currently failing with a tooling error. Let's see if updating
all the versions help.

## Change checklist

- [x] Self-review.
2026-05-20 13:31:47 +00:00
Franz Heinzmann 684c3e2531 chore: check external types in CI (#643)
## Description

This adds a `cargo make` task and CI job to ensure that no foreign
crates appear in the public API apart from those explicitly
allow-listed.

## Change checklist
- [x] Self-review.
2026-05-11 13:18:44 +00:00
Floris Bruynooghe 058aaab548 feat(proto): Send NAT probes with off-path PATH_RESPONSE (#619)
## Description

When we are NAT probing and we are sending a PATH_RESPONSE as a
client, we include a PATH_CHALLENGE. This ensures that if the peer got
through the firewall first that the client immediately gets through as
well and can open the path. Speeding up NAT traversal.

## Breaking Changes

n/a

## Notes & open questions

Closes #570.

Also fixes an oversight from before: we were still consuming CIDs for
off-path responses. For now we want to not do that.

## Change checklist

- [x] Self-review.

---------

Co-authored-by: Philipp Krüger <philipp.krueger1@gmail.com>
2026-05-06 08:04:06 +00:00
Friedel Ziegelmayer 2e1739d1e6 ci: add semver check (#605)
Closes #486

---------

Co-authored-by: Asmir Avdicevic <asmir.avdicevic64@gmail.com>
2026-04-22 15:14:49 +02:00
Franz Heinzmann 7d736579d9 chore: run iroh's patchbay tests in CI (#601)
## Description

Runs iroh's patchbay tests with iroh patched to use noq checkout as path
dependency.

## Breaking Changes

<!-- Optional, if there are any breaking changes document them,
including how to migrate older code. -->

## Notes & open questions

<!-- Any notes, remarks or open questions you have to make about the -->
<!-- PR. -->

## Change checklist
<!-- Remove any that are not relevant. -->
- [ ] Self-review.
- [ ] 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.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.

<!--
tip:
Run `cargo make` in the workspace root to check many light-weight CI
steps locally.
-->
2026-04-22 08:09:38 +00:00
Floris Bruynooghe de242d85f4 chore: Add more cargo-make targets and update CI template (#586)
## Description

- More cargo-make targets:
  - Disable all the built-in targets
  - Add steps that will otherwise fail on CI
- Add checklist to PR template
  - Also point to cargo-make

## Breaking Changes

n/a

## Notes & open questions

I'm not sure if the pointer to cargo-make is clear enough. I
considered making it a checkbox but that probably also gets annoying
for frequent contributors.
2026-04-13 14:42:43 +00:00
Floris Bruynooghe 7e9f628c47 chore(ci): add standard text to beta ci notifications (#506)
We have this everywhere else, it make the notifications consistent and
easy to read.
2026-03-16 09:15:49 +00:00
Floris Bruynooghe a92084ba7a ci(docs): Check internal docs as well (#499)
* ci(docs): Check internal docs as well

We also want to check that the internal docs are all correct, so we do
not get broken links etc. We have a lot of internal docs, internal
docs are great!

* turns out that syntax is not supported

* fixup all the doc errors

* fix format

* naming nitpicking, fewer changes
2026-03-12 11:44:55 +00:00
Floris Bruynooghe 89a9e7f927 fix(ci): Switch to sccache-action entirely (#501)
This was the only remaining use of rust-cache.

Fixes #481.
2026-03-12 11:26:55 +00:00
Rüdiger Klaehn 9234776e64 ci: Build on RISC-V espidf to check that we properly use portable_atomic and don't use advanced posix features. (#492)
* ci: Add ESP32-C3 build check for noq, noq-proto, and noq-udp

Cross-compile check using riscv32imc-esp-espidf target with
nightly + build-std. No ESP-IDF SDK needed for cargo check.

* test: Deliberately break ESP32 build to verify CI catches it

Use unix.rs instead of posix_minimal.rs on espidf to confirm the
esp32_check CI job fails as expected. Revert after verifying.

* Revert "test: Deliberately break ESP32 build to verify CI catches it"

This reverts commit 45f096edc8.

* Correct ci step name

* Use sccache for new ci checks.
2026-03-11 10:33:10 +00:00
Rüdiger Klaehn 018517663d feat: Add minimal socket2 based impl (previously fallback.rs) (#478)
* Rename fallback.rs to posix_minimal.rs

Use it for platforms that are unix, but don't support advanced stuff like
CMSG, GRO, GSO.

Also fix some compile errors in the former fallback.rs

* Test noq-udp with the new posix_minimal configuration

* Eliminate warnings for posix_minimal config.

* shut up clippy
2026-03-05 11:18:14 +00:00
Asmir Avdicevic caf81fd2e2 chore(ci): adjust runner usage and storage policies (#471)
* chore(ci): adjust runner usage and storage policies

* fix android

* fix android again
2026-03-03 12:58:06 +00:00
Philipp Krüger 13a1c456f5 feat!: Allow compiling with rustls, but without any crypto providers compiled into rustls (#462)
* Switch to `aes-gcm` crate for retry token logic when using rustls

* Split `rustls-ring` and `rustls-aws-lc-rs` features into `rustls`, `ring` and `aws-lc-rs` features.

* Better document the features.

* `cargo make format`

* Fix outdated feature references

* Avoid double-defining `configured_provider`

* File an issue about suddenly working PQC handshakes now breaking a test

* Fix rebase

* Only enable `aes-gcm` dependency when needed

* Add features for backwards compatibility

* Add some links to the spec's retry packet integrity section
2026-03-02 11:56:51 +00:00
Friedel Ziegelmayer 294e3ea603 refactor!: rename to noq (#461)
* refactor!: rename to noq

* fixup python scripts

* fixup

* fixup

* fixup: cr
2026-02-27 14:57:21 +00:00
Philipp Krüger 041777b9d2 ci: Fix daily proptest runs (#441) 2026-02-20 14:43:57 +00:00
Friedel Ziegelmayer f41f278609 ci: add expanded proptest runs to ci (#395)
* test(proto): add failing seeds found in CI

* ci: add expanded proptest runs to ci

Adds daily runs, and a longer run for regular tests, also available as cargo make tasks

* ci: fight windows

* another failing seed

* apply CR

* add seeds found in CI

---------

Co-authored-by: Philipp Krüger <philipp.krueger1@gmail.com>
2026-02-19 15:24:28 +00:00
Asmir Avdicevic 325db0f070 fix(ci): address dns issues in daily job (#416)
* fix(ci): address dns issues in daily job

* maybe?

* maybe?

* pin deps version
2026-02-09 13:21:59 +00:00
Asmir Avdicevic 093cf62908 fix(ci): daily jobs deps (#413) 2026-02-06 13:09:33 +00:00
Asmir Avdicevic c332d420ce ci: add testing on wine (#393)
* feat(ci): wine testing

* capture all exe

---------

Co-authored-by: Friedel Ziegelmayer <me@dignifiedquire.com>
2026-02-06 10:04:56 +00:00
Asmir Avdicevic 25f35c2fe3 chore: disable solaris tests in daily CI as they hang (#377) 2026-01-29 11:14:49 +00:00
ramfox bf4c64874d chore: add CI to ensure docs-rs publishing will work (#360)
Also, removes "log" from list of features for `iroh-quinn-proto` to run with `docs-rs`, since it is not a feature `iroh-quinn-proto` has

Co-authored-by: “ramfox” <“kasey@n0.computer”>
2026-01-23 09:53:21 +00:00
Floris Bruynooghe 5f19d75275 refactor: Update to rust edition 2024 (#328)
* refactor: Update to rust edition 2025

* bump to 1.88

That's what I need for let chains.

* i asked for let chain, clippy looooooves the let chains!

* more let chains in the workspace
2026-01-15 15:41:35 +00:00
Asmir Avdicevic afc9ed49d2 chore: revert sccache removal (#326) 2026-01-14 15:01:06 +00:00
Asmir Avdicevic 39f776db5b chore: unblock CI (#321) 2026-01-14 10:57:50 +00:00
Asmir Avdicevic 3391e34e92 cleanup 2026-01-09 15:32:13 +01:00
Asmir Avdicevic 1f64d1f10c label formatting 2026-01-09 15:29:19 +01:00
Asmir Avdicevic fefc2b8f4e chart grouping 2026-01-09 14:42:21 +01:00
Asmir Avdicevic e5638f3b12 fix reporting 2026-01-09 13:49:55 +01:00
Asmir Avdicevic af06750f92 testing 2026-01-09 12:10:39 +01:00
Asmir Avdicevic af1c04f6d5 cleanup 2026-01-08 23:02:50 +01:00
Asmir Avdicevic 696d62fde5 fix 2026-01-08 22:21:40 +01:00
Asmir Avdicevic ee7f34fdd8 fix 2026-01-08 21:28:31 +01:00
Asmir Avdicevic 109f25e42a fix 2026-01-08 20:13:02 +01:00
Asmir Avdicevic dae12a9075 fix 2026-01-08 20:04:13 +01:00
Asmir Avdicevic 5682cfa81f fix 2026-01-08 18:46:20 +01:00
Asmir Avdicevic 75e39be376 feat(ci): add performance benchmarks comparing iroh-quinn vs upstream 2026-01-08 14:19:13 +01:00
Floris Bruynooghe 4d740d64ec fix(ci): Follow discord notification conventions
This makes the notification look more similar to everything else. It
is a bit odd not having the "header" with the repo like the others
right now.
2026-01-07 10:35:45 +01:00
Asmir Avdicevic c4fb84b8c4 fix(ci): windows test build fix 2025-12-17 08:46:28 +01:00