[true-async] HTTP/3 + bump to v0.7.0-rc.4 (patched libuv + H3 stream-credit fix)#772
Merged
Conversation
The server gained a working HTTP/3 listener (35 phpt green, incl. E2E GET/ POST/streaming/static over QUIC). entry.php already binds the H3 UDP listener on :8443 by default; it just wasn't being benchmarked because meta.json subscribed to no h3 profile. Subscribe baseline-h3 + static-h3 so the arena actually exercises HTTP/3. A 120-iteration back-to-back restart repro (16 and 64 workers) showed 0 startup failures with the H3 listener on, so no per-profile gating is needed — h2 (TCP :8443) and h3 (QUIC UDP :8443) coexist as designed.
Pin to trueasync/php-true-async:0.7.0-rc.3-php8.6 — the first published image carrying server v0.7.0, which ships the HTTP/3 / QUIC listener (ngtcp2 1.22.1 + nghttp3 1.15.0). Pairs with subscribing baseline-h3 + static-h3 so the arena actually exercises HTTP/3. Also document the QUIC UDP port (8443/udp) in EXPOSE.
# Conflicts: # frameworks/true-async-server/Dockerfile
rc.4 = rc.3 + patched libuv (true-async/libuv: skip redundant EPOLL_CTL_MOD, one io_uring_enter/request saved on keep-alive) and server v0.7.1 (HTTP/3 bidi stream-credit replenish, MDA2AV#79) — lifts the per-connection 100-request cap that crushed baseline-h3/static-h3.
Contributor
Author
|
/benchmark -f true-async-server |
Contributor
|
👋 |
Contributor
Benchmark ResultsFramework:
Full log |
MDA2AV
approved these changes
Jun 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Re-runs true-async-server with
trueasync/php-true-async:0.7.0-rc.4-php8.6(was rc.3 in the closed #771).rc.4 = rc.3 +
true-async/libuv): skip a redundantEPOLL_CTL_MODwhen the interest mask is unchanged → one fewerio_uring_enterper request on the keep-alive path (measured 21→1 over 20 keep-alive reqs; matters at high core counts).ngtcp2_conn_extend_max_streams_bidi). Fixes the per-connection cap atinitial_max_streams_bidi(100) that crushedbaseline-h3/static-h3to ~1,277 rps (~20/conn). Verified locally: single QUIC conn now serves 200/200 (was capped at 100).async / php-src unchanged from rc.3.
Requesting a benchmark run to confirm H3 recovers and H1/H2 hold.