Skip to content

Tags: true-async/server

Tags

v0.16.0

Toggle v0.16.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
release: 0.16.0 (#325)

* docs(stubs): carry the current API into the IDE stubs

The hand-kept mirror lacked Room, RoomDeliveryException and 14 methods
(HttpServer rooms, the reliable-send retry settings, tryWriteMessage(),
trySseEvent()), and 15 docblocks had fallen behind the stubs since the
last full pass at 0.11.0: setHeader(), setStatusCode(), write(),
getRuntimeStats() among them. Signatures now match the stubs one for
one. readBody() names the HttpException a refused body throws.

* release: 0.16.0

v0.15.0

Toggle v0.15.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
release: 0.15.0 (#316)

* docs(stubs): carry this release's API into the IDE stubs

The mirror is hand-maintained and lagged behind two changes shipping in
0.15.0: hide() documented two of the five pattern shapes it reads, and
getBoundListeners() was absent along with what port 0 means for
addListener().

* release: 0.15.0

v0.14.0

Toggle v0.14.0's commit message
Two fixes, both visible to a handler, and both about an answer the se…

…rver gave

that was not the one it meant. No breaking change; a build on 0.13.0 upgrades
without touching a line.

- **`awaitWritable()` waits for the stream window on HTTP/3 (#265).**
  `h3_stream_ops` declared no `wait_writable`, and `awaitWritable()` answers
  false for a transport that cannot wait — the answer that keeps a handler from
  being told "go ahead" and spinning without yielding. It was the wrong answer
  here: the HTTP/3 stream already owned the wake path, and HTTP/1, HTTP/2 and
  the reactor-pool worker all park on theirs. A handler was left with a
  sleep-and-retry loop or a blocking `write()`, and on a pool worker that loop
  holds the thread carrying the other requests. The wait is bounded by the
  shorter of the caller's timeout and the connection's write deadline, the rule
  HTTP/2 already followed.

- **An aborted response is labelled by the call that finished it (#267).** One
  field answered two questions. `abort()` on a stream the transport had put no
  byte of — `sseStart()` with no event is the ordinary way there — left the
  response in the state a clean `end()` leaves, because the label was set only
  where the transport reported a reset. So the second `abort()`, documented as a
  no-op, threw "the body was already finished cleanly", and a later `write()`
  named `end()` instead of `abort()`. The natural call site for `abort()` is a
  `catch` or a `finally`, where a throw replaces the diagnosis the handler is
  carrying. The label now records which call finished the response; a separate
  flag records what the peer saw, so the access record and
  `responses_aborted_total` still count only a body that stopped short.

354 of 374 phpt (20 skipped, 0 failed) and 18 of 18 unit cases, against php-src
`true-async` with php-async `main`, PHP 8.6.0-dev ZTS, TrueAsync ABI 0.26.0.
Each fix lands with the test that fails without it: `h3/069` reads `room=0`
against 0.13.0, and `core/063` gains the third state a started stream can be in
and disagrees with 0.13.0 on all three of its new lines.

v0.13.0

Toggle v0.13.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #264 from true-async/release-0.13.0

release: 0.13.0

v0.11.3

Toggle v0.11.3's commit message
docs(changelog): release 0.11.3

v0.11.2

Toggle v0.11.2's commit message
docs(changelog): release 0.11.2

v0.11.1

Toggle v0.11.1's commit message
docs(changelog): release 0.11.1

v0.11.0

Toggle v0.11.0's commit message
docs(changelog): release 0.11.0