Skip to content

Releases: codetalcott/mojo-http

v0.17.1

Choose a tag to compare

@github-actions github-actions released this 03 Sep 23:01
56ab390

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

Choose a tag to compare

@github-actions github-actions released this 03 Sep 14:05
3305917

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

Choose a tag to compare

@github-actions github-actions released this 31 Aug 15:55
9a30ffc

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

Choose a tag to compare

@github-actions github-actions released this 30 Aug 23:48
48a699d

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

Choose a tag to compare

@github-actions github-actions released this 29 Aug 19:10
ec5bd42

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

Choose a tag to compare

@github-actions github-actions released this 28 Aug 04:36
c06d330

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

Choose a tag to compare

@github-actions github-actions released this 28 Aug 01:20
a1e8b30

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

Choose a tag to compare

@github-actions github-actions released this 27 Aug 13:58
6502f00

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

Choose a tag to compare

@github-actions github-actions released this 27 Aug 00:48
d051e3e

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

Choose a tag to compare

@github-actions github-actions released this 26 Aug 02:08
b90a78a

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