Repository navigation
v1.8.0
See CHANGELOG.md for the full release notes.
What's Changed
- Records from the 1.7.0 and m0 0.3.0 release; sabotage-host splits on macOS by @codetalcott in #408
- test-shim: judge the escaped disconnect from the shim's read, not the write by @codetalcott in #409
- Storage fixes: m0_array's static tag (B3), NUL-safe text parameters (B11), Result.raw origin (R10), URI separator (R13) by @codetalcott in #410
- Merge train 1: #411, #412, #413 by @codetalcott in #414
- B5, B6, B10, R7: duplicate Host/TE lines, splitting refused on every path, latin-1 cookies, non-ASCII spawn path by @codetalcott in #411
- B1, B2, B14: stale loop timers and deadlines, --body-timeout, the lane cap by @codetalcott in #412
- B16, H4: per-job measurement check, one docs gate, comment-blind coverage guards by @codetalcott in #413
- Merge train 2b: #415, #416 by @codetalcott in #419
- B7: a deployed auth scaffold's session cookie is Secure; B6 follow-up: reply.redirect percent-encodes control bytes by @codetalcott in #415
- B17: ignore SIGPIPE where every server starts by @codetalcott in #416
- Gateway lane: B4, B8, R8, R9 — inline mount WebSocket routing, mount import tracebacks, streamed close(), listen errors by @codetalcott in #417
- C10: one entry-point table per storage package (+ R10 follow-up) by @codetalcott in #420
- chore(deps): bump pyflakes from 3.4.0 to 4.0.0 in the python-deps group by @dependabot[bot] in #424
- Merge train 3b: #421, #422 by @codetalcott in #427
- H1, B15: a shared sabotage library; a build failure is a miss, never a catch by @codetalcott in #421
- C2: delete upstream fork code that no caller used by @codetalcott in #422
- Merge train 4: #423, #431, #434, #426, #428, #429, #430, #432, #433 by @codetalcott in #435
- B12, R6, J10: a reset peer's slot on Linux, whole WebSocket control replies, a file after a deferred head by @codetalcott in #423
- B17 follow-up and B19: SIGPIPE at the listener, fdpass's truncation check by @codetalcott in #426
- Gateway lane: C7 + B14 follow-up — one check list, one pool wiring, one supervised predicate in m0serve by @codetalcott in #428
- H4, B16 follow-ups: coverage records from every job, guards that read what runs by @codetalcott in #429
- C5: retire the blocking server path by @codetalcott in #430
- C4, R4, R1, R3: per-slot lifecycle has one owner; a connection that stops reading costs the loop nothing by @codetalcott in #431
- R12, R14, R17, R18: safe Datastar redirect, gmtime_r Date, unaligned xxHash32 load, strict parse_json_int by @codetalcott in #432
- R2, R5: a keep-alive request costs no epoll_ctl; accept sharing counts a hand-off before it is sent by @codetalcott in #434
- Docs: narrow SPEC O11 to what binary mode proves (B18); archive and move one-off scripts (H6) by @codetalcott in #433
- Merge train 5: #436, #437 by @codetalcott in #438
- C1: one errno-carrying SysError replaces the fork's typed socket errors (fixes B9) by @codetalcott in #436
- C9: one pool thread layer, reason-phrase table, command-line reader and token envelope by @codetalcott in #437
- Merge train 6: #439, #440 by @codetalcott in #441
- C8: delete the copy and move constructors the compiler derives by @codetalcott in #439
- C3 (first half): pass LoopState instead of its fields; _run_pass is the pass's outline by @codetalcott in #440
- Merge train 7: #442, #443 by @codetalcott in #444
- C3 (second half): split the event loop into modules; event_loop.mojo is their door by @codetalcott in #443
- H5: composite actions for the setup test.yml repeats by @codetalcott in #442
- Merge train 8: #445, #446, #447 by @codetalcott in #448
- C9 (pool and hold): one WebSocket pool encoder, one bounded send, one i64 codec; C8: offload.mojo's moves by @codetalcott in #445
- Sweep A: the JSON number grammar, a redirect conformance arm, O11's test, a Float64 Known issue by @codetalcott in #446
- Loop follow-ups: an upload's reads, Linux accept errnos, a refused hand-off, MAX_EVENTS by @codetalcott in #447
- ci(deps): bump superfly/flyctl-actions/setup-flyctl from 1.5 to 1.6 in the actions group across 1 directory by @dependabot[bot] in #449
- Merge train 9b: #450, #451, #452 by @codetalcott in #455
- H2: a shared probe library, and the first thirteen probes on it by @codetalcott in #450
- H3: a sourced shell helper for the smokes, and a first batch of 22 on it by @codetalcott in #451
- C11: CLAUDE.md keeps its rules and points to notes for the reasons by @codetalcott in #452
- Merge train 10: #454, #456, #457 by @codetalcott in #458
- H2: the last twenty-one probes on the probe library by @codetalcott in #456
- H2: nineteen more probes on the probe library by @codetalcott in #454
- H3: a second batch of 26 smokes on scripts/smoke/lib.sh by @codetalcott in #457
- Merge train 11: #459, #461, #460 by @codetalcott in #462
- Sweep: stale text, the header-timeout probe's failure line, a deterministic accept-batch negative arm by @codetalcott in #459
- H3: the last twenty-one smokes on scripts/smoke/lib.sh by @codetalcott in #460
- Sweep 4-6: pin three HTTPService defaults; count the accept batch on both legs; accept_spread.py stops its servers by @codetalcott in #461
- Merge train 12: #463 by @codetalcott in #464
- B20: the executor's state copy-back that hung an inverted server on SIGTERM by @codetalcott in #463
- Merge train 13: #465 by @codetalcott in #466
- B21: a supervisor signalled while it forks passes the signal on instead of orphaning its workers by @codetalcott in #465
- Merge train 14: #467, #468 by @codetalcott in #469
- A1: when a write made through an address is lost across a call (characterisation; sweep stopped) by @codetalcott in #467
- B22: the pass that reads the stop handles the rest of its batch by @codetalcott in #468
- Merge train 15: #470, #471 by @codetalcott in #473
- A2: no live writer beyond B20's; guard the executor's state against the mut copy-back (L31) by @codetalcott in #470
- B23: no loop pass runs inside another under the inversion by @codetalcott in #471
- Merge train 16: #472, #474 by @codetalcott in #475
- B24: the drain stops watching the listener before it closes it; B25 analysed by @codetalcott in #472
- H7: free ports come from below the kernel's ephemeral range by @codetalcott in #474
- Merge train 17: #477 by @codetalcott in #478
- B26: the listener is closed once, by the drain by @codetalcott in #477
- Merge train 18: #476 by @codetalcott in #479
- B25: no accept-sharing hand-off is lost to a worker that is leaving (stacked on #472) by @codetalcott in #476
- Merge train 19: #480 by @codetalcott in #481
- Sweep-d: B27 closed Socket, smoke-pid1 comment, pool_spike ports, sabotage TMPDIR, B28 CLAUDE.md lines by @codetalcott in #480
- H8: the unit tests are two jobs, each capped at twice its run by @codetalcott in #482
- Merge train 20: #483, #484 by @codetalcott in #485
- H10: test-shim proves each shim rule with the test written for it by @codetalcott in #483
- H9: the smokes are three jobs, each capped at about twice its run by @codetalcott in #484
- H11: balance the unit-test halves, and cap each at twice its run by @codetalcott in #486
- H12: test-shim guards the two shim lines no test failed without by @codetalcott in #487
- Merge train 21: #490, #494 by @codetalcott in #497
- B30: inet_pton's address buffer is counted in bytes, and a scan refuses the next one by @codetalcott in #490
- Hold: strip an orphan M0-Channel, and refuse a reserved-channel hold by @codetalcott in #494
- chore(deps): bump oauthlib from 3.3.1 to 4.0.0 by @dependabot[bot] in #498
- Release 1.8.0, and m0 0.4.0 by @codetalcott in #499
Full Changelog: v1.7.0...v1.8.0