if: replace link state change queue with state transition
if_link_queue is now a normal bitmask rather than holding a queue.
It holds three bits to mirror the link state - UNKNOWN, DOWN and UP.
There are also some bits to indicate that the link state has been scheduled
for change and if it has been locked for changes (ie the interface being
destroyed).
The logic is simple - transitioning to DOWN will remove UNKNOWN and UP,
transitioning to UNKNOWN will remove UP (no driver should do this).
This means that even in the event of transitions happening faster than
the kernel can spit them out, the correct state of the link will be
preserved which is more important than the exact chain of events.
This also fixes an issue where the workqueue for the link state change
was incorrectly scheduled.
if_link_scheduled is now unused and will be removed in a future patch.
Fixes PR kern/60056.
libpthread: explain why pthread__allqueue has been kept
a bit history:
- libpthread_dbg has been removed from base in 2017.
- pkgsrc/devel/libpthread_dbg has been removed from pkgsrc in 2020.
the commit message of the removal was calling it "Legacy library out
of sync with NetBSD libpthread and without any users".
devel/mise: update to 2025.5.0
2026.5.0 - 2026-05-03
🚀 Features
(conda) graduate conda backend out of experimental by @jdx in #9544
(deps) Add dart and flutter providers by @tjarvstrand in #9505
(registry) add neo4j by @mnm364 in #9525
(registry) add rustfs by @mnm364 in #9530
(task) support exclusion patterns in task sources by @jlarmstrongiv in #9496
(vfox) add stat function to lua file module by @esteve in #9497
🐛 Bug Fixes
(backend) flag regex prerelease versions by @jdx in #9500
(backend) mark -nightly/-canary/-experimental as prereleases by @jdx in #9523
(backend) suppress no-versions warning for unresolved-latest backends by @jdx in #9548
(backend) include dotnet prereleases from package flags by @jdx in #9551
(backend) scope PEP 440 prerelease detection to Python backends by @jdx in #9558
[73 lines not shown]
news/eilmeldung: update to 1.5.0
1.5.0 - 2026-05-04
🪟 Windows is now supported!
Download the release Windows binary or use scoop to install
scoop bucket add eilmeldung https://github.com/christo-auer/eilmeldung
scoop install eilmeldung
eilmeldung should run well using Windows Terminal with a NerdFont-patched font
Thanks to @azinsharaf for the initial research, support and testing and to @jangernert for the quick release of a new news-flash version!
Naturally the Windows port is not yet tested as well as the Linux or macOS versions. So please report any bugs you may encounter!
net/xfr: update to 0.9.14
## [0.9.14] - 2026-05-03
### Fixed
- **Live UDP loss counter no longer stalls under upload-mode saturation** (issue #70 final fix) — v0.9.13's `TCP_NODELAY` partially addressed the bug but brettowe's retest showed 8 subsequent intervals still bunched at one end-of-test client-side timestamp. Root cause was `tokio::time::interval` defaulting to `MissedTickBehavior::Burst` on the server's stats sampling timer: when `writer.write_all()` stalled under the back-pressure that the saturated UDP uplink induces on TCP control, missed ticks accumulated and fired as a burst when the writer unblocked, producing stale interval samples with fresh client-side arrival timestamps and misleading throughput numbers. `Skip` now drops the stale ticks; cumulative state in `StreamStats` atomics still surfaces correctly on the next live tick and at end-of-test. Applied unconditionally on both `run_test` interval-loop sites; benefits even pre-v0.9.14 clients pairing with a v0.9.14 server.
- **`--omit` no longer folds hidden UDP loss into the first visible interval** — the new cumulative-loss tracker added below was advancing its cache on every progress arrival, but the printed-line baseline only advanced when a line printed. With `--omit 3`, the first visible interval would report all loss accumulated during seconds 0-3 as one jumbo delta, defeating the purpose of `--omit`. The baseline now advances during the omit window so visible lines reflect only loss observed during printed intervals.
### Added
- **UDP receiver feedback (`udp_feedback_v1` capability)** (issue #70 final fix) — when both peers advertise the capability, the server now emits a 36-byte cumulative `(packets_received, packets_lost)` UDP packet back to the client at 2 Hz on the same data socket, sidestepping the TCP control channel for live UDP loss reporting. Wire format: `b"XFRF"` magic + version + kind + flags + `stream_id` + reserved + `elapsed_ms` + cumulative `packets_received` + cumulative `packets_lost`, all big-endian, fixed 36 bytes. Length-first demux at receive sites distinguishes feedback from data packets without inspecting sequence-number bits. Cumulative-not-delta semantics let the client recover from any dropped feedback packet without needing the lost intermediate state. Capability negotiation gates emission so older clients (which wouldn't know to listen) never see a packet they don't understand.
- **Producer-side monotonic-denominator filter on the client** — both the TCP control `udp_progress` decode site and the UDP feedback aggregator funnel updates through `UdpProgressFilter::apply`, which admits only readings whose `(received + lost)` denominator is at-least-as-fresh as anything we've seen before. Atomic CAS via `fetch_update` so two producers cannot race a stale store after a fresh one. Applies in addition to TUI display: plain text, CSV, and JSON-stream output use the cached cumulative as the source of truth for the per-line `lost` field, so the freshest reading from either source flows through to scripted consumers, not just the TUI live counter.
- **Live UDP loss in non-TUI output paths** — `--no-tui --json-stream` / `--csv` / plain interval output now reflects the freshest `udp_progress` from either TCP control or UDP feedback. Previously these consumers used per-stream `streams[].lost` from the most recent TCP `Interval` only, which under control-channel stalls could be several seconds stale. Falls back to the per-stream sum for sessions where `udp_progress` is never sent (paired with a pre-0.9.11 server, or non-UDP tests).
- **Docker repro harness for issue #70** (`docker/Dockerfile.repro`, `docker/repro-issue-70.sh`, `docker/README.md`) — multi-stage build with the current branch and the released v0.9.13 baseline side-by-side. `docker run --rm --cap-add=NET_ADMIN xfr-repro` runs hard assertions on the new build (max bunch ≤ 2, time-to-first-loss < 5s, live mid-run loss observed); `--baseline` prints diagnostics for narrative comparison without gating on a threshold. Stays out of CI — the existing 2× oversubscription `control-channel-skew` job remains the regression floor; the harness is for human-driven A/B at brettowe's 10× recipe before publishing.
### Changed
- **`TestProgress` schema (pre-1.0 break)** — adds `udp_feedback_only: bool` so consumers can distinguish a feedback-only update (only `udp_progress` carries truth; everything else is sentinel/None) from a full TCP `Interval` update. Three consumers handle the partial variant: `App::on_progress` early-returns after updating UDP loss state and preserves all other field values; `main.rs` print loop skips feedback-only entries entirely (the cumulative cache picks up the freshness for the next full interval); cross-version compat test path adopts the new field.
- **Server bidir mode no longer emits UDP feedback** — feedback is upload-mode-only by design. Bidir's server-side recv half was passing `client_supports_udp_feedback` through to `receive_udp` even though the client's bidir recv has no consumer for those packets; emission was pure overhead on the return path. Bidir always passes `false` now.
- **`receive_udp` skips feedback packets in `bytes_received` accounting** — the length-first demux previously rejected feedback before the data path but bumped `bytes_received` first. With server bidir gating that's a moot path post-fix, but defense-in-depth: feedback bytes never count toward `bytes_received`, which tracks test-data wire bandwidth.
- **Capability list factored into a single `SUPPORTED_CAPABILITIES` const** — `client_hello`, `server_hello`, and `server_hello_with_auth` previously each had a duplicated `Vec<String>` literal. Future capability additions now touch one line. New `capability_advertised(&capabilities, name)` helper centralizes the matcher used at both negotiation sites.
[23 lines not shown]
databases/ruby-sequel: update to 5.104.0
5.104.0 (2026-05-01)
* Support :lateral_subquery as a filter by associations limit strategy in
the dataset associations plugin (jeremyevans)
* Support :lateral_subquery as an eager limit strategy for
many_through_many/one_through_many associations (jeremyevans)
* Support :lateral_subquery as a filter by associations limit strategy for
many_through_many/one_through_many associations (jeremyevans)
* Support :lateral_subquery as an eager_graph limit strategy for
many_through_many/one_through_many associations (jeremyevans)
* Support :lateral_subquery as an eager limit strategy for
many_to_many/one_through_one associations (jeremyevans)
[14 lines not shown]
archivers/ruby-zip: update to 3.3.0
3.3.0 (2026-05-02)
* Refactor InputStream and AbstractInputStream. #661
Tooling/internal:
* Update Actions to use checkout at v5.
* Add Ruby4.0 to the CI matrix. #659
libpthread: fix pthread_main_np
the previous implementation was incorrect as pthread_t
of the main thread can be recycled via pthread__deadqueue.
with this changes, my test program [1] produces the same
result as macOS.
[1] https://github.com/yamt/garbage/tree/a24535e948dc62dde4c67366db97377e53d92e7b/c/pthread_main_np
an alternative fix would be to stop recycling the main thread
by simply leaking it. the leak is ok because, after all, it's
very rare for applications to continue after its main thread
exits. such applications don't even work as intended on some
of pthread implementations in the wild. for now, i'd go with
a more straightforward implementation though. ie. this commit.
cd9660: make sure that NM records are at least 5 bytes long.
avoids an integer underflow when this length has 5 subtracted from it
for a later path.
Reported by Adam Crosser, Praetorian
neomutt: update to 20260504.
2026-05-04 Richard Russon \<rich at flatcap.org\>
* Security
- Fix GSSAPI buffer underflow on short unwrapped tokens
- Reject percent-encoded NUL bytes in URL decoding
- Skip CN fallback when SAN dNSName entries exist (RFC6125)
- Cap POP3 UIDL responses to prevent OOM from a malicious server
- Harden POP host URL copy
* Bug Fixes
- #4836 imap: fix memory leak in `msg_parse_flags`
- #4849 Fix memmove in `mutt_str_expand_tabs`
- #4850 IMAP: enhance stability with re-entrancy protection and reconnection fixes
- #4852 Say which mailcap field we are looking for
- #4853 Don't overwrite content_type
- pager: fix crash on `uncolor *`
- pager: fix wrong line index in signature syntax realloc
- pager: fix OOB read on short log lines in `display_line()`
- pager: fix off-by-one in newline restoration
[5 lines not shown]