Releases: codetalcott/mojo-http
Release list
v0.17.1
See CHANGELOG.md for the full release notes.
What's Changed
- deploy-site: the branch-form release deploys too; the Dockerfile path in fly.toml is config-relative by @codetalcott in #218
- Docs restructured for a first-time reader and for an agent by @codetalcott in #220
- Audit of the Mojo↔Python interface: clear a recycled slot's stale WebSocket accept by @codetalcott in #219
- WSGI_VS_ASGI.md: the concise answer to why there are two execution modes by @codetalcott in #221
- Gate the headline claim clause by clause: Flask holds, no second process, the gunicorn degrade by @codetalcott in #222
- Mark the slot's owner as streaming, not the child task Starlette sends from by @codetalcott in #223
- The live two-tab demo beside the docs (apps/demo, deploy/demo, smoke-demo, SPEC M17) by @codetalcott in #224
- Deploy verify steps wait for the edge to settle; the demo's retries the probe by @codetalcott in #225
- Citation tracking: every RFC the tree cites is checked against the RFC Editor by @codetalcott in #226
- The ASGI smoke's shutdown waits are bounded and name their phase; the Tests job caps match what green runs take by @codetalcott in #227
- Release 0.17.1 by @codetalcott in #228
Full Changelog: v0.17.0...v0.17.1
v0.17.0
See CHANGELOG.md for the full release notes.
What's Changed
- Honour Expect: 100-continue case-insensitively, and withhold it from HTTP/1.0 by @codetalcott in #188
- Compute what is left for 1.0, instead of remembering it by @codetalcott in #189
- Stop the keep-alive cap from destroying the response it fires on by @codetalcott in #190
- Point D6 at the property that is gated, and fix M13's reason by @codetalcott in #193
- Gate the chunked decoder's trailer states by @codetalcott in #191
- Bound a chunked body that arrives with its headers by @codetalcott in #197
- Fuzz the request decoder, and prove the fuzzer can fail by @codetalcott in #195
- Gate the outbox cap ending a connection, not dropping a message by @codetalcott in #196
- Stop the blocking loop sending a Keep-Alive header the loop never sent by @codetalcott in #192
- Gate SIGTERM as PID 1 in a container (SPEC M11 — beta clean) by @codetalcott in #198
- Render a request-latency histogram on /__metrics (SPEC F5) by @codetalcott in #199
- Wire Autobahn|Testsuite to the pre-release cadence (SPEC I13) by @codetalcott in #200
- Declare coverage in the gate, not the sheet (SPEC F12) by @codetalcott in #201
- chore(deps): bump granian from 2.8.1 to 2.8.2 in the python-deps group by @dependabot[bot] in #194
- Generate bench prose numbers in place, replacing check_bench_prose by @codetalcott in #203
- Provision docker inside poe autobahn, and reap only what it started by @codetalcott in #204
- Add the soak driver: byte-exact, five populations, login, churn by @codetalcott in #205
- Record the 0.16.0 real-application soak; fix D9, the drain's unread body by @codetalcott in #206
- Scheduling-stickiness sighting: reproduced (CPU placement, not load); smoke-reload made fairness-free by @codetalcott in #207
- Apply the three forward-compatible Mojo renames; make the nightly canary able to report by @codetalcott in #208
- The documentation site: the tree's own pages served by m0serve, llms.txt at the root by @codetalcott in #209
- The documentation site's deployment: image, Fly app, deploy-after-release workflow, image smoke by @codetalcott in #210
- deploy/site runbook: create the Fly app empty; allocate IPs before the certificate by @codetalcott in #211
- ASGI on a free-threaded CPython build is refused with 78, not crashed; a worker's 78 ends supervision by @codetalcott in #212
- py-canary: a per-phase watchdog and live phase lines; the log uploads always by @codetalcott in #217
- Release 0.17.0 by @codetalcott in #215
Full Changelog: v0.16.0...v0.17.0
v0.16.0
See CHANGELOG.md for the full release notes.
What's Changed
- Work the four open spec items, and the technique worth generalising by @codetalcott in #183
- Validate a Close frame's code instead of echoing it back by @codetalcott in #184
- Measure the --realtime hold threshold, and gate it under contention by @codetalcott in #185
- Give inbound WebSocket messages backpressure, instead of dropping them by @codetalcott in #186
- Release 0.16.0: four WebSocket fixes, two of them silent by @codetalcott in #187
Full Changelog: v0.15.1...v0.16.0
v0.15.1
See CHANGELOG.md for the full release notes.
What's Changed
- A public spec sheet, and a doc check that finally runs on doc changes by @codetalcott in #170
- Record what the ruleset now requires, and why it is exactly one check by @codetalcott in #171
- Guard the one status check main requires, whose failure mode is a hang by @codetalcott in #172
- Spot-audit the verified rows, give the trust argument its missing half by @codetalcott in #173
- Make the bench artifact naming rule an invariant, not a convention by @codetalcott in #174
- Record the measurements CI already takes, instead of echoing them into a log by @codetalcott in #175
- Audit every verified row against its gate, and close three holes in the checker by @codetalcott in #176
- Give every capability row a permanent id, and plan the inversion behind it by @codetalcott in #177
- Gate four capabilities that were implemented and ungated by @codetalcott in #178
- Wait for the peer's Close before closing a WebSocket by @codetalcott in #180
- Stress the WebSocket path in both loop modes, and widen the row it earns by @codetalcott in #179
- Release 0.15.1: a WebSocket close that ends in a FIN by @codetalcott in #181
Full Changelog: v0.15.0...v0.15.1
v0.15.0
See CHANGELOG.md for the full release notes.
What's Changed
- check-docs: fail on a release branch left behind after its release by @codetalcott in #160
- Mojo-native ergonomics: trait defaults, Router.allow_header, m0_http.reply by @codetalcott in #161
- MojoPool: the handler pool for Mojo handlers, measured by @codetalcott in #162
- HTTPHeader as offsets: the parse instrument, and the 12% it found by @codetalcott in #163
- run_event_loop as prepare_loop + LoopState + _run_pass: the inversion's zero-diff step by @codetalcott in #164
- M0_INVERTED: the loop inversion, behind a flag, measured and found not yet a win by @codetalcott in #165
- Parser: the lever taken — 1.96 → 0.86 µs, and one wrong answer fixed by @codetalcott in #166
- Inversion: item 6 skipped and recorded, the c256 verdict, and the drain gap it exposed fixed by @codetalcott in #167
- Outbox sweep gated where it pays; the pump's pacing measured and recorded by @codetalcott in #168
- Release 0.15.0: the Mojo-native tier, and a faster layer under everything by @codetalcott in #169
Full Changelog: v0.14.1...v0.15.0
v0.14.1
See CHANGELOG.md for the full release notes.
What's Changed
- Harden the streaming seam: guards for the slot race, six silent failures made loud by @codetalcott in #157
- The WebSocket send window: backpressure instead of a torn-down socket by @codetalcott in #158
- Release prep for 0.14.1 by @codetalcott in #159
Full Changelog: v0.14.0...v0.14.1
v0.14.0
See CHANGELOG.md for the full release notes.
What's Changed
- Fix the uv dependency-graph job: a doubled backslash toml-rb cannot parse by @codetalcott in #148
- Stream unsized WSGI bodies from a pool thread by @codetalcott in #149
- Batch the loop-executor pump, and measure what the executor's row depends on by @codetalcott in #150
- Prototype: park the executor pump in run_forever, one stop() per pass by @codetalcott in #151
- Refuse a busy port, make "Ready" mean ready, show a load failure's traceback by @codetalcott in #152
- Measure the framework rows: FastHTML and Django ASGI under wrk by @codetalcott in #153
- Put the Mojo flame on m0serve's ready line by @codetalcott in #155
- Python calls into Mojo for every executor event; the executor thread never leaves run_forever by @codetalcott in #154
- Release prep for 0.14.0 by @codetalcott in #156
Full Changelog: v0.13.0...v0.14.0
v0.13.0
See CHANGELOG.md for the full release notes.
What's Changed
- Audit CLAUDE.md against the tree: four stale claims, two broken counts by @codetalcott in #140
- Harden the PyPI path: pin the publishing action, gate the environment by @codetalcott in #141
- Close a cross-connection injection hole, and the response-losing reset behind it by @codetalcott in #143
- main is protected now, and three comments said otherwise by @codetalcott in #142
- Answer a half-closed client instead of resetting it by @codetalcott in #144
- Answer a request bigger than one read, on epoll too by @codetalcott in #145
- Answer pipelined requests, and see half-close on epoll too by @codetalcott in #146
- Release prep for 0.13.0 by @codetalcott in #147
Full Changelog: v0.12.0...v0.13.0
v0.12.0
See CHANGELOG.md for the full release notes.
What's Changed
- The blocking loop refuses streams with the 409 the comments always claimed by @codetalcott in #122
- PatchJournal.append_at: record at a caller-supplied id by @codetalcott in #123
- SSERegistry delivery reports what it did by @codetalcott in #124
- The published README is the one the ratchet was not checking by @codetalcott in #125
- --doctor: the configuration as JSON, and it exits what the server would by @codetalcott in #126
- The public benchmark page, and it leads with the losses by @codetalcott in #127
- The first screen leads with what the server is for by @codetalcott in #128
- The isolation guard had 138x headroom; give it 12x by @codetalcott in #129
- The isolation benchmark has an artifact, and the ratchet earned its keep by @codetalcott in #130
- Serve three applications nobody wrote to test us; four defects, four guards by @codetalcott in #131
- Record the shape finding: --realtime refuses the pool that would make it deployable by @codetalcott in #132
- Hold on a pool thread: --realtime composes with --blocking-threads by @codetalcott in #133
- Re-measure textshelf after stage 1, and re-order stage 2 behind what it found by @codetalcott in #134
- --realtime composes with --mount: one process for both stream shapes by @codetalcott in #135
- The socket half: WebSocket holds under a pool, and under mounts by @codetalcott in #136
- Sweep the statements three merges made stale by @codetalcott in #137
- --app-dir goes to the front of sys.path, where every other server puts it by @codetalcott in #138
- Release 0.12.0: --realtime composes with everything it used to refuse by @codetalcott in #139
Full Changelog: v0.11.0...v0.12.0
v0.11.0
See CHANGELOG.md for the full release notes.
What's Changed
- Ship Linux aarch64 wheels, and test them on pull requests rather than at release by @codetalcott in #116
- Gate 2: the quickstart is a doc CI executes, and m0pub ships in the wheel by @codetalcott in #117
- Release 0.11.0: the quickstart, m0pub, and aarch64 — three claims made true at once by @codetalcott in #121
Full Changelog: v0.10.0...v0.11.0