Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
250 commits
Select commit Hold shift + click to select a range
fed96bd
checkpoint(perry-p0): partial Codex lane work (stopped at the Codex u…
Sep 15, 2026
0df1f6e
Revert "checkpoint(perry-p0): partial Codex lane work"
Sep 15, 2026
55d5522
deps: take turnloop 0.1.0-alpha.2 (P0 wait driver)
Sep 15, 2026
7498914
runtime: turnloop P0 wait driver, Instant deadlines, O(1) keep-alive
Sep 15, 2026
a030424
turnloop P0: loop-statistics probes, gap test, report
Sep 15, 2026
907ea0a
runtime: measure the event loop's waits under PERRY_LOOP_STATS
Sep 15, 2026
cf04ec1
tooling: turnloop server A/B harness
Sep 15, 2026
fa5bb1b
tooling: gate the server A/B on the arms actually differing
Sep 15, 2026
57cad1e
docs(turnloop): record the measured wait metrics and the turn-timing …
Sep 15, 2026
196d901
tooling: fix the idle-capacity test measuring nothing
Sep 15, 2026
2a5c74b
docs(turnloop): record the harness smoke run and the keepAliveTimeout…
Sep 15, 2026
f170435
runtime: stamp the wake clock on cross-thread native submissions
Sep 15, 2026
cb0494a
docs(turnloop): record the second wake producer and its sabotage check
Sep 15, 2026
4371d0e
docs(turnloop): add the full-suite and end-to-end harness verificatio…
Sep 15, 2026
561e736
changelog: note both wake producers and the harness findings
Sep 15, 2026
f3853bb
runtime: turnloop P1 net core, C ABI and completion routing
Sep 15, 2026
956384f
deps: take turnloop 0.1.0-alpha.3 and restore the versions alpha.2 pi…
Sep 15, 2026
ebaa061
net: run listeners, accepted connections and local sockets on turnloop
Sep 15, 2026
c4f814c
net: keep Node's error-then-close order on a turnloop socket, and add…
Sep 15, 2026
e1ca960
net: hold an accepted socket's 'end' until its 'connection' callback …
Sep 15, 2026
9412b9e
runtime: service both transports when tokio and turnloop sockets coexist
Sep 15, 2026
05b3212
net: give socket errors Node's errno and syscall, from one table
Sep 15, 2026
f9c12f8
docs(turnloop): the P1 report — what moved, what did not, and why
Sep 15, 2026
c06181a
docs(turnloop): record the P1 measurements and the baseline comparison
Sep 15, 2026
9929223
tooling: classify the P1 transport's per-socket state for the GC hold…
Sep 15, 2026
71cd90c
style: rustfmt the P1 acceptance test
Sep 15, 2026
c6f185d
docs(turnloop): enumerate the tokio that is still reachable from node…
Sep 15, 2026
b33e041
runtime: turnloop P2 core, and node:dgram on the loop
Sep 15, 2026
7112faa
runtime: OS signals as turnloop subscriptions, not a self-pipe thread
Sep 15, 2026
9398c91
runtime: a child's stdout, stderr and extra stdio pipes on the loop
Sep 15, 2026
8b9dedf
runtime: hand a refused datagram back instead of dropping it
Sep 15, 2026
75f2dca
runtime: name a signal subscription by its entry, not by its number
Sep 15, 2026
83d0de6
turnloop P3: JS timers on a per-agent heap, Node's event-loop phase o…
Sep 15, 2026
4bad8dd
turnloop P3: keep the check/poll pending question O(1)
Sep 15, 2026
9242aa5
turnloop P3: skip the legacy park while check/poll work is queued
Sep 15, 2026
66f5ddf
turnloop P3: pin exit liveness in the timer-heap fixture
Sep 15, 2026
34977b0
runtime: settle a dgram close before returning from it
Sep 15, 2026
bc5ae1c
turnloop P3: use Handle::key() in the arming test
Sep 15, 2026
0fc668c
docs(turnloop): the P3 report
Sep 15, 2026
ed3b284
turnloop P3: run the phases in the empty-checkpoint tests
Sep 15, 2026
74a8a72
turnloop P3: stamp nodeTiming.loopStart from the event-loop pump
Sep 15, 2026
98c31fc
runtime: a pump has to turn the loop before it drains its queue
Sep 15, 2026
f08fecb
turnloop P3: emit the park gate without an icmp-eq in main
Sep 15, 2026
95627e0
docs(turnloop): the P2 report, the gap test, and the changeset
Sep 15, 2026
4da2644
docs(turnloop): P3 gap-suite and unit-test evidence
Sep 15, 2026
5d98f11
docs(turnloop): attribute the P3 loop-stats deltas to the probes that…
Sep 15, 2026
840cf16
changelog: correct the P3 unit-test count
Sep 15, 2026
c8504a3
docs(turnloop): the clean P3 gap-suite verdict — zero status changes
Sep 15, 2026
1480301
Merge remote-tracking branch 'origin/turnloop/p3-timers' into turnloo…
Sep 15, 2026
018ed59
turnloop P4: blocking and CPU-bound work on turnloop's shared pool, p…
Sep 15, 2026
50394ca
turnloop P4: the gap fixture for pool-backed crypto and zlib
Sep 15, 2026
6f76b68
turnloop P4: run_pending's turn is non-blocking
Sep 15, 2026
d113ea8
turnloop P4: keep the pool's root scanner registration out of the tab…
Sep 15, 2026
94feac5
turnloop P4: turn the loop before draining N-API async completions
Sep 15, 2026
a27cdec
turnloop P5: the HTTP/1.1 and TLS server stack on turnloop
Sep 15, 2026
4bc3e87
turnloop P4: crypto.argon2 on the pool, and prove the N-API path used it
Sep 15, 2026
3124c40
turnloop P5: match Node's wire framing and stop a teardown ENOTCONN r…
Sep 15, 2026
b463bce
docs(turnloop): the P4 report, and the two probe apps it measures with
Sep 15, 2026
95a70a2
turnloop P4: make the perry-ffi pool tests compile
Sep 15, 2026
c08d9f1
turnloop P4: record the pool's scanner latch in the root-holder inven…
Sep 15, 2026
f0625c5
turnloop P5: pin keepAliveTimeout's Node semantics as a gap test, and…
Sep 15, 2026
1597c65
turnloop P5: let this crate's unit tests link ext-net's native-async …
Sep 15, 2026
b27dad2
turnloop P5: record the new GC root holders, and keep someone else's …
Sep 15, 2026
a359172
docs(turnloop): the P5 report's environment notes, pre-existing defec…
Sep 15, 2026
4f37ffa
docs(turnloop): attribute the tls_client unit-test failure to the bas…
Sep 15, 2026
b111a4b
docs(turnloop): the P4 gap-suite verdict — zero status changes
Sep 15, 2026
1aabfff
chore: keep gc_runtime_root_holders.json's non-ASCII as written
Sep 15, 2026
1ea8012
chore: keep ext-net's AUX root-holder verdict describing the fields i…
Sep 15, 2026
6a78caf
turnloop P5: raise Node's req 'aborted' when the peer vanishes mid-re…
Sep 15, 2026
35b756a
turnloop P5: keep server.rs under the file cap, and record the lifecy…
Sep 15, 2026
d208f15
changelog: the Node-fidelity fixes P5's oracle comparison exposed
Sep 15, 2026
3ec4b5f
docs(turnloop): say plainly which dependencies P5 does not remove, an…
Sep 15, 2026
321622e
docs(turnloop): note that the keep-alive header fix reaches the hyper…
Sep 15, 2026
12d25d8
docs(turnloop): the whole-runtime-suite comparison for P4
Sep 15, 2026
327bb44
Merge remote-tracking branch 'origin/turnloop/p4-pool' into turnloop/…
Sep 15, 2026
7b1f102
Merge branch 'main' into turnloop/integration
Sep 15, 2026
cb946f0
docs(turnloop): the base commit's own gap-suite numbers, for the P5 c…
Sep 15, 2026
406683a
turnloop P5: grow the TLS scratch instead of failing an oversized han…
Sep 15, 2026
0c10d5b
turnloop P5: do not close a socket while its end()'s shutdown is stil…
Sep 15, 2026
1c05bd1
turnloop P5: raise 'aborted' at the readable EOF, where it is observable
Sep 15, 2026
daafa1d
docs(turnloop): the targeted parity filters, re-run at HEAD after the…
Sep 15, 2026
7f77cce
Merge remote-tracking branch 'origin/turnloop/p5-servers' into turnlo…
Sep 15, 2026
12e75af
turnloop P7: loop-driven database transport, and ioredis on it
Sep 15, 2026
e7938c6
turnloop P7: arm a core's deadline before the connect completes, and …
Sep 15, 2026
e2c1592
turnloop P7: a GC stress fixture with Redis replies in flight
Sep 15, 2026
96b1215
turnloop P7: PostgreSQL and MongoDB on the loop-driven transport
Sep 15, 2026
d89ee91
turnloop P7: MySQL on the loop-driven transport
Sep 15, 2026
7c04184
turnloop P7: the PostgreSQL acceptance fixture
Sep 15, 2026
b7c5ec3
turnloop P7: the MySQL and MongoDB acceptance fixtures
Sep 15, 2026
408116e
docs(turnloop): the P7 report, with the per-driver evidence still to …
Sep 15, 2026
8db396f
turnloop P7: the PostgreSQL thread census, and the parity fixtures tr…
Sep 16, 2026
817b720
docs(turnloop): P7's per-driver evidence, both arms
Sep 16, 2026
8b613c2
docs(turnloop): correct P7's rowCount explanation and note the GC rerun
Sep 16, 2026
ce37afd
turnloop P6: outbound HTTP and SMTP on turnloop handles
Sep 16, 2026
8e86f2d
turnloop P7: an end-to-end MySQL pool fixture, and its evidence
Sep 16, 2026
1063790
turnloop P6: retain unconsumed decoder input, send a default User-Agent
Sep 16, 2026
6614123
turnloop P7: the mongo fixture checks what Perry can observe, and the…
Sep 16, 2026
6c45094
turnloop P6: report, fixture notes, and the unit-test corrections the…
Sep 16, 2026
0deb7e7
turnloop P6: align the decompression and SMTP pipelining tests with t…
Sep 16, 2026
fb86e55
turnloop P6: keep the root-holder inventory in its original encoding
Sep 16, 2026
2ef5f72
turnloop P6: record the unit-test results and what the two first-run …
Sep 16, 2026
006c722
turnloop P6: correct the timeout claims — the per-phase deadlines are…
Sep 16, 2026
7be5452
turnloop P6: name the two things that were reasoned about rather than…
Sep 16, 2026
ee5483c
turnloop P6: changelog fragment says what moved and what is surface-b…
Sep 16, 2026
1ad72de
turnloop P6: name the unexercised streaming hooks against the kill-po…
Sep 16, 2026
5f0703d
turnloop P6: add the SMTP flow to the architecture section
Sep 16, 2026
cb0da07
turnloop P6: say plainly that the SMTP transport wiring is unexercise…
Sep 16, 2026
e0eda36
turnloop P6: admit parked requests when a connection FAILS, not only …
Sep 16, 2026
fb7f3e9
docs(turnloop): P7's gap sweep, both arms, zero status changes
Sep 16, 2026
1583f5f
turnloop P6: the gap suite, compared per test — zero status changes o…
Sep 16, 2026
a957184
Merge remote-tracking branch 'origin/turnloop/p6-clients' into turnlo…
Sep 16, 2026
f08dd28
Merge remote-tracking branch 'origin/turnloop/p7-databases' into turn…
Sep 16, 2026
47fad5a
tooling: report retired instructions under load, separate from Callgr…
Sep 15, 2026
babc5f0
docs(turnloop): the two machines of record and the perf/Ir distinction
Sep 15, 2026
1a219ea
tooling: A/B two commits, not one commit with a feature flag
Sep 16, 2026
0a24e96
turnloop P8: the tokio inventory, as a gate instead of as prose
Sep 16, 2026
b6d1400
turnloop P8: stop perry-stdlib's cron helpers spawning a task that ca…
Sep 16, 2026
4a39667
turnloop P8: a probe for the decline every lane from P1 on depends on
Sep 16, 2026
68c29dd
tooling: cross-commit arms imply --skip-cargo
Sep 16, 2026
1bf2d04
tooling: the timing gate must judge ambient load, not our own
Sep 16, 2026
7c5afc4
turnloop P8: split the worker-agent census so it links
Sep 16, 2026
bb696b9
turnloop P8: the report and the changelog fragment
Sep 16, 2026
213f33d
turnloop P8: put the removal plan's arithmetic in the gate
Sep 16, 2026
d703da9
turnloop P8: order the defects by severity, and add the red gc-root-h…
Sep 16, 2026
13106d3
turnloop P8: correct the axios annotation against the measurement
Sep 16, 2026
13c0ca2
turnloop P8: record the gate's end-to-end failure proof against the r…
Sep 16, 2026
ce7e585
turnloop P8: the Worker fetch is a hang after a park, and net.connect…
Sep 16, 2026
aa532c3
turnloop P8: say precisely how the main reference tree was built
Sep 16, 2026
7eafe33
turnloop P8: name the compiler behind every probe
Sep 16, 2026
aaecedf
turnloop P8: give the inventory file a README in the house style
Sep 16, 2026
2b7605d
turnloop P8: the park-then-fetch hang is pre-existing, only the failu…
Sep 16, 2026
e061f8e
turnloop P8: report the node-fetch undefined-status as an observation…
Sep 16, 2026
f594d1f
turnloop P8: enumerate every issue this lane wants filed
Sep 16, 2026
1d25dd5
turnloop P8: count the CLI's reqwest and runtime sites instead of est…
Sep 16, 2026
e8374e8
turnloop P8: align the changelog fragment with what was actually meas…
Sep 16, 2026
e4e5167
turnloop P8: the full lockfile before/after, and why no counter can p…
Sep 16, 2026
65a61eb
turnloop P8: say how many gap fixtures are ext-routed without guessin…
Sep 16, 2026
4e4ca6a
tooling: bracket the run with ambient load instead of judging each sa…
Sep 16, 2026
5d27443
turnloop P8: the gap suite, both arms, compared per test — zero Perry…
Sep 16, 2026
e525411
turnloop P8: show that the swept binary is HEAD's code
Sep 16, 2026
5d1589e
gc: drop the stale turnloop_serve CONNS inventory entry
Sep 16, 2026
202e97e
Merge remote-tracking branch 'origin/turnloop/p8-detokio' into turnlo…
Sep 16, 2026
c13372c
fix(stdlib): worker_threads Workers must claim an agent id
Sep 16, 2026
e25cf9c
Merge branch 'main' into turnloop/integration
Sep 16, 2026
1edb5b7
chore: bump to v0.5.1580 for the turnloop integration branch
Sep 16, 2026
3bd636f
turnloop P9: a loop per JS agent
Sep 16, 2026
0d9a3f7
turnloop P9: probes, the worker-agent gap test, and the inventory prose
Sep 16, 2026
6d59c9d
turnloop P9: make the probes report incrementally and assert their ow…
Sep 16, 2026
c5d672b
feat(http-client): a blocking HTTP/1.1 and WebSocket client on a self…
Sep 16, 2026
c72b6d4
turnloop P9: make the perry/thread claim checkable instead of quoted
Sep 16, 2026
24bed74
feat(cli): move the perry CLI, axios and node-fetch off tokio
Sep 16, 2026
e10404e
turnloop P9: route the RSS probe around two pre-existing Worker defects
Sep 16, 2026
fb3bc6c
docs(turnloop): P11 report, changelog fragment, and a WebSocket probe
Sep 16, 2026
8d33318
fix(http-client): a streamed response must not be fetched twice
Sep 16, 2026
fa853b9
docs(turnloop): name what changed after the swept build and why no ga…
Sep 16, 2026
faa9496
turnloop P9: separate the loop's RSS cost from the HTTP client's
Sep 16, 2026
ba893e3
docs(turnloop): perry-updater has nothing to migrate; warnings are pr…
Sep 16, 2026
c221ffb
fix(http-client): a failed WebSocket read or write ends the connection
Sep 16, 2026
a99d664
fix(http-client): six findings from an independent review of this branch
Sep 16, 2026
2f338c9
docs(turnloop): record what the independent review found and what it …
Sep 16, 2026
0d798ea
docs(cli): say in the code that run --remote's WS idle bound has no r…
Sep 16, 2026
051f819
docs(turnloop): record the axios archive size drop
Sep 16, 2026
efa93e4
turnloop P9: settle before reading RSS
Sep 16, 2026
2c1241d
Merge remote-tracking branch 'origin/turnloop/p11-cli-clients' into t…
Sep 16, 2026
861dd7d
docs(turnloop): the 404 case proves the error_for_status ordering fix
Sep 16, 2026
0b7520e
turnloop P9: discriminate the concurrent-socket failure
Sep 16, 2026
8773f38
docs(turnloop): record the interrupted first gap pass and its partial…
Sep 16, 2026
ec5c0c4
turnloop P9: the report, the fixed gap test, and the socket reproducers
Sep 16, 2026
4a58860
turnloop P9: record the unit-test run in the report
Sep 16, 2026
0bc9409
turnloop P9: keep verify_marker a verification, not a log line
Sep 16, 2026
2987f99
turnloop P9: record that the A/B harness's rejection checks survive p…
Sep 16, 2026
44de75d
Merge remote-tracking branch 'origin/turnloop/p9-agent-loops' into tu…
Sep 16, 2026
b392b1e
docs(turnloop): the full gap sweep, both arms, zero status changes on…
Sep 16, 2026
4041a51
docs(changelog): quote the gap-suite result in the P11 fragment
Sep 16, 2026
2053aaf
Merge remote-tracking branch 'origin/turnloop/p11-cli-clients' into t…
Sep 16, 2026
a02ee27
tooling: re-baseline the unrooted-local ratchet for this branch
Sep 16, 2026
5c1aaec
deps: take turnloop 0.1.0-alpha.5 and raise the handle ceiling to 65,536
Sep 16, 2026
7db3fdf
fix(runtime): construct ListenOpts through Default for alpha.5
Sep 16, 2026
ce480bb
fix(runtime): size max_operations for in-flight work, not for the han…
Sep 16, 2026
2c7eb7e
turnloop: take tokio out of perry-ui-gtk4, keeping tray and MPRIS
Sep 16, 2026
1db2f76
Merge remote-tracking branch 'origin/turnloop/gtk4-detokio' into turn…
Sep 16, 2026
cb08c74
docs(turnloop): HTTP/2 contract findings and the unwired transport
Sep 16, 2026
917e999
docs(turnloop): record two measured bugs in P5 listen path
Sep 16, 2026
86395a4
turnloop: node:http2 on the loop
Sep 16, 2026
09eb413
test(http2): conformance fixtures for node:http2, measured against No…
Sep 16, 2026
3e20b5a
Merge remote-tracking branch 'origin/h2c/http2-conformance' into turn…
Sep 16, 2026
7d9c2c9
fix(net): give tcp_listen's reuse_port and noDelay their own argument…
Sep 16, 2026
d9cb2df
Merge remote-tracking branch 'origin/turnloop/p5-listen-fix' into tur…
Sep 16, 2026
fadf63f
tooling: record the one unrooted-local finding in deferred_events.rs
Sep 16, 2026
7c2dfe8
turnloop: queue http2 control frames until the transport is ready
Sep 16, 2026
6b3fde4
docs(turnloop): record the h2b acceptance run on the shipped binary
Sep 16, 2026
96326a4
Merge remote-tracking branch 'origin/turnloop/http2' into turnloop/in…
Sep 16, 2026
0f0a4d6
Merge branch 'main' into turnloop/integration
Sep 16, 2026
6086006
fix(http2): restore the turnloop HTTP/2 listener's tcp_listen arity
Sep 16, 2026
47294d6
turnloop: the attached WebSocketServer on turnloop, and one WebSocket…
Sep 16, 2026
2ead2ad
fix(turnloop): get the integration branch's own CI failures green
Sep 16, 2026
33f61fc
fix(tooling): restore the executable bit on two edited scripts
Sep 16, 2026
ec8d2fd
turnloop: perry-stdlib's bundled ws on the sans-I/O codec, and the in…
Sep 16, 2026
17e157f
turnloop: a public TLS client installer for a turnloop socket
Sep 16, 2026
e7f8038
turnloop: TLS for the four database drivers and the HTTP/2 client
Sep 16, 2026
496a5f3
turnloop: the P12 report, the TLS fixtures and the re-annotated tokio…
Sep 16, 2026
1fc17c7
docs(turnloop): the WS lane report — evidence and turnloop gaps
Sep 16, 2026
0df3c3b
docs(turnloop): record the P12 GC-instrument run, and what it does no…
Sep 16, 2026
eb600df
docs(mysql2): correct percent_decode's comment — the decode predates …
Sep 16, 2026
3d80c5a
docs(db): say what the legacy transport now does with an ssl config
Sep 16, 2026
0baa6b5
turnloop: drop the TLS installer's unused install() entry point
Sep 16, 2026
4c16921
fix(http): drain an HTTPS server's pending upgrades
Sep 16, 2026
b2defdb
fix(ws): stop a second shutdown resetting a finished WebSocket
Sep 16, 2026
55d07b6
docs(turnloop): record what the raw wire says about the 1006 close
Sep 16, 2026
db29300
Merge remote-tracking branch 'origin/turnloop/websockets' into turnlo…
Sep 16, 2026
3c79a05
docs(turnloop): record the P12 gap-suite run and how each failure was…
Sep 16, 2026
a0adc38
Merge remote-tracking branch 'origin/turnloop/tls-client' into turnlo…
Sep 16, 2026
60cf13c
wip(turnloop/fastify-wip): lane state preserved before an API rate-li…
Sep 16, 2026
c9885ed
wip(turnloop/clients-wip): lane state preserved before an API rate-li…
Sep 16, 2026
f39be99
Merge remote-tracking branch 'origin/turnloop/fastify-wip' into turnl…
Sep 16, 2026
f65c26f
tooling: classify perry-tls-turnloop and refresh the architecture bas…
Sep 16, 2026
b8445b5
Merge remote-tracking branch 'origin/turnloop/clients-wip' into turnl…
Sep 16, 2026
4732b8d
fix(stdlib): finish the clients lane — split fetch/mod.rs, reach the …
Sep 16, 2026
241eafe
turnloop: post work to the loop of an agent another thread owns, and …
Sep 16, 2026
a991d60
ci: build the tokio-wait-driver A/B baseline arm in `check`
Sep 16, 2026
2e9cd4d
turnloop: make the A/B reject a run where turnloop waited but hyper s…
Sep 17, 2026
2fb205a
turnloop: expose post-to-owning-agent through the binding FFI seam
Sep 17, 2026
acd7046
turnloop: delete perry-stdlib's bundled pg/mysql2/ioredis/mongodb copies
Sep 17, 2026
3c22e4f
Merge lane turnloop/h-stdlib-copies: delete perry-stdlib's bundled db…
Sep 17, 2026
640f9f0
ioredis: post commands to the thread that owns the agent's loop
Sep 17, 2026
e0d40dd
turnloop: say that a posted job dropped at loop teardown never runs
Sep 17, 2026
5703a2f
Merge lane turnloop/b-db-decline: the agent-post C ABI, and ioredis o…
Sep 17, 2026
d3fda20
turnloop: perry-ext-ws and perry-ext-fastify off tokio (groups E and F)
Sep 17, 2026
3b103e5
Merge lane turnloop/e-ws-transport: perry-ext-ws and fastify off toki…
Sep 17, 2026
76d3500
docs(turnloop): workers keep WebSockets — P9 gave every agent its own…
Sep 17, 2026
8d66dc5
fix(turnloop): refuse a duplicate sink registration, and un-collide t…
Sep 17, 2026
24602d5
perf(turnloop): park the HTTP idle deadline instead of destroying it
Sep 17, 2026
8ce5716
turnloop: delete the h2 HTTP/2 client — the recorded blocker was stale
Sep 17, 2026
37ce00d
Merge lane turnloop/completions-per-request: 4 completions per reques…
Sep 17, 2026
c50188f
turnloop: make the A/B liveness gate read net completions, not all cl…
Sep 17, 2026
9baa4fa
Merge lane turnloop/d-http2-tls-client: the HTTP/2 client leaves h2 (…
Sep 17, 2026
b94d4c0
measure: pin turnloop to alpha.5 + #89 (NOT for merge)
Sep 17, 2026
f8d41ac
fix(test): wait for the accept, not just the connect, in the queued-w…
Sep 17, 2026
54d81a0
Revert "measure: pin turnloop to alpha.5 + #89 (NOT for merge)"
Sep 17, 2026
4c2f885
tooling: mark the four database wrappers group J — delete, do not con…
Sep 17, 2026
f457d28
feat(stdlib): post fetch/axios to the agent's loop owner instead of d…
Sep 17, 2026
4301b4d
docs(turnloop): correct group H's blocker — the accept-side session e…
Sep 17, 2026
a853d8f
Merge lane turnloop/gh-stdlib: fetch/axios post to the loop owner; gr…
Sep 17, 2026
bca7b5f
deps: take turnloop 0.1.0-alpha.6, and map reuse_port onto ReusePort
Sep 17, 2026
f528915
Merge turnloop 0.1.0-alpha.6 and the ReusePort mapping
Sep 18, 2026
135b36e
fix(http2): handle alpha.6's HeadersKind and Unprocessed, and delete …
Sep 18, 2026
b2f8656
wip(http): take http crate types directly instead of hyper re-exports
Sep 18, 2026
2531d58
turnloop(A): cluster workers bind on the loop; socket.connect() was n…
Sep 18, 2026
5a3c177
Merge lane turnloop/a-accept-loops: cluster listen and socket.connect…
Sep 18, 2026
650ea6d
Merge remote-tracking branch 'origin/main' into turnloop/integration
Sep 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
23 changes: 11 additions & 12 deletions .github/workflows/ext-link.yml
Original file line number Diff line number Diff line change
Expand Up @@ -159,16 +159,12 @@ jobs:
# to enable rand_core/getrandom) without paying for a full release
# link per package.
default_args=()
fetch_args=()
ws_args=()
while read -r pkg; do
[ -n "$pkg" ] || continue
echo "Checking ${pkg}'s independent feature graph..."
cargo check --release -p "$pkg"
case "$pkg" in
perry-ext-fetch)
fetch_args+=(-p "$pkg")
;;
perry-ext-fastify|perry-ext-ws)
ws_args+=(-p "$pkg")
;;
Expand All @@ -178,13 +174,17 @@ jobs:
esac
done <<< "$PKGS"

# Release-link packages in three feature-compatible groups. A single
# all-package command lets perry-ext-fetch's
# `external-fetch-symbols` and the WS providers' corresponding mode
# leak into unrelated test binaries, which then expect provider
# symbols they correctly do not link. Three groups preserve the real
# feature boundary while compiling the expensive runtime only a few
# times, keeping the gate inside its measured 120-minute backstop.
# Release-link packages in two feature-compatible groups. A single
# all-package command lets the WS providers' provider mode leak into
# unrelated test binaries, which then expect provider symbols they
# correctly do not link. Two groups preserve the real feature boundary
# while compiling the expensive runtime only a few times, keeping the
# gate inside its measured 120-minute backstop.
#
# There was a third group until P11: perry-ext-fetch, whose
# `external-fetch-symbols` mode had the same leak. That crate is gone
# — `node-fetch` routes to perry-stdlib's WHATWG fetch, which defined
# a superset of the same symbols (docs/turnloop/p11-report.md).
: > /tmp/ext-link.json
run_link_group() {
local group="$1"
Expand All @@ -204,7 +204,6 @@ jobs:
fi
}
run_link_group default "${default_args[@]}"
run_link_group fetch "${fetch_args[@]}"
run_link_group ws "${ws_args[@]}"

linked="$(python3 scripts/ci_ext_link_scope.py --count-linked /tmp/ext-link.json)"
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,33 @@ jobs:
python3 scripts/addr_class_inventory.py --self-test
python3 scripts/addr_class_inventory.py

# Two bindings on one turnloop completion-sink slot is a correctness bug:
# every completion goes to whichever registered last, which reads the
# token's low bits as one of its OWN connection ids. Three pairs shipped
# that way — the P7 database lane and the P5 server lane numbered from
# two different ledgers — and reaching one needs a program linking both
# bindings (a fastify app using mysql2), so no test caught it. The
# runtime now refuses a duplicate registration; this makes the collision
# fail the build instead of quietly costing one binding its transport.
- name: turnloop subsystem slot collisions
if: ${{ !cancelled() }}
run: python3 scripts/subsystem_slots.py

# turnloop migration (docs/turnloop/): Perry is moving off tokio, and the
# only record of what is left used to be eight lane reports written at
# eight different commits — which had already gone stale in both
# directions by the time P8 read them. This re-derives the remaining
# surface from the tree: every (workspace crate -> tokio-family crate)
# manifest edge and every tokio-family package in Cargo.lock, compared
# strictly against scripts/tokio_inventory.json. A NEW edge fails, and so
# does a STALE entry, so a lane that removes an edge must delete its own
# line and the file can never describe a tree that is gone.
- name: tokio dependency inventory
if: ${{ !cancelled() }}
run: |
python3 scripts/tokio_inventory.py --self-test
python3 scripts/tokio_inventory.py

# String payloads live directly after StringHeader in the moving GC heap.
# Keep new consumers on the owned-copy or rooted-reread APIs instead of
# adding more layout arithmetic and caller-chosen `&'static str` helpers.
Expand Down Expand Up @@ -848,6 +875,17 @@ jobs:
fi
echo "✅ API docs match the manifest."

# The tokio-vs-turnloop A/B has two arms, and only one of them is built
# by any other job. `tokio-wait-driver` compiles the legacy park instead
# of the per-agent turnloop loop, and it silently stopped compiling in
# the P3 timers commit — an `event_pump.rs` import left without the cfg
# every sibling item carries. A baseline that does not build is not a
# baseline, and nothing was red, so nobody looked. `check`, not
# `warnings`: the arm legitimately leaves turnloop-side code dead.
- name: Build the tokio-wait-driver A/B baseline arm
if: ${{ !cancelled() }}
run: cargo check -p perry-stdlib --features tokio-wait-driver

# ---------------------------------------------------------------------------
# rustc warnings gate
#
Expand Down
Loading
Loading