Skip to content

Fix documentation accuracy across en/ru/zh and expand changelog#241

Merged
diolektor merged 1 commit into
mainfrom
docs/accuracy-sync-and-changelog
Jun 23, 2026
Merged

Fix documentation accuracy across en/ru/zh and expand changelog#241
diolektor merged 1 commit into
mainfrom
docs/accuracy-sync-and-changelog

Conversation

@diolektor

Copy link
Copy Markdown
Contributor

Corrects user-facing documentation that drifted from the code (largely post-0.8.0 churn around async fibers, the internal server, and the shared-state introspection surface), and expands the Unreleased changelog. Every correction was verified against the source and applied identically across the English, Russian, and Chinese docs.

Documentation fixes

Internal server / config

  • /config samples in the configuration, health-checks, and internal-server docs dropped the scrubbed internal_addr / error_pages_dir keys and gained async_max_fibers / async_in_flight_cap, matching the real response.
  • Documented INTERNAL_ALLOW_IPS (CIDR allow-list) and the port-only INTERNAL_ADDR loopback normalization; replaced the stale "no built-in authentication or access control" claim with the allow-list plus the off-host startup warning.

Metrics

  • Added the always-emitted oxphp_request_cancelled_total and the worker-supervisor metrics (request_age_seconds, long_running_total, stuck_total); corrected the async-pool per-metric emission gates.

PHP API / behavior

  • Decorator instances do not persist across requests (per-worker cache cleared each request); constructor runs once per request, property state does not carry over.
  • oxphp_async_await_all suspends the fiber — only await_race / await_any block.
  • $_SERVER: SERVER_PROTOCOL reflects the negotiated HTTP version (not always HTTP/1.1); SCRIPT_NAME / DOCUMENT_URI / PHP_SELF describe the resolved script path with CGI PATH_INFO semantics.
  • oxphp_async accepts OxPHP\Shared\* instances across the thread boundary; fixed get_extension_funcs ordering, the Profile\mark default, the moveTo parameter name, and a stale version example.

Shared state

  • Registry metric is oxphp_shared_operations_total; per-entry introspection is /__ox_shared/entry?id=<id>; pool eviction reasons are idle_timeout|evict|shutdown; Pool\Handle is not final; Map::setIfAbsent returns the previous value; Channel::recvMany takes (int $max, int $ms); summary buckets expose only count/bytes/ops.

Misc

  • Added AggregateAsyncException to the async exception hierarchy; corrected span-event kinds and TRACE_CONTEXT wording; removed a non-existent TLS error string; dropped the spurious EXPOSE 9090 from the install example.

Changelog

  • Added the async fiber composition feature (nested oxphp_async, ASYNC_MAX_FIBERS, in-flight cap, new async metrics, await-timeout cancellation) and the channel send-waiter wakeup fix to the Unreleased section.

Notes

  • Docs-only change — no source or test changes. Verified across all three locales with stale-string greps (clean) and presence checks for the new keys.

Docs:
  - Correct the served /config sample in the configuration, health-checks, and internal-server docs: drop the scrubbed internal_addr and error_pages_dir keys and add async_max_fibers / async_in_flight_cap, matching what the endpoint actually returns.
  - Document INTERNAL_ALLOW_IPS (CIDR allow-list) and the port-only INTERNAL_ADDR loopback normalization; replace the stale "no built-in authentication or access control" claim in the internal-server security section with the allow-list plus the off-host startup warning.
  - Add the always-emitted oxphp_request_cancelled_total metric and the worker-supervisor metrics (request_age_seconds, long_running_total, stuck_total) to the metrics reference, and correct the async-pool per-metric emission gates.
  - Fix the decorator lifecycle docs: instances do not persist across requests — the per-worker cache is cleared each request, so the constructor runs once per request and property state does not carry over.
  - Correct the fiber-multiplexing note: oxphp_async_await_all suspends the fiber, so only await_race / await_any block inside a fiber.
  - Fix the $_SERVER docs: SERVER_PROTOCOL reflects the negotiated HTTP version rather than always HTTP/1.1, and SCRIPT_NAME / DOCUMENT_URI / PHP_SELF describe the resolved script path with CGI PATH_INFO semantics.
  - Correct oxphp_async argument rules (OxPHP\Shared\* instances may cross the thread boundary), the get_extension_funcs ordering, the Profile\mark signature default, the moveTo parameter name, and a stale server version example.
  - Fix the shared-state docs: the registry metric is oxphp_shared_operations_total, per-entry introspection is /__ox_shared/entry?id=<id>, pool eviction reasons are idle_timeout|evict|shutdown, Pool\Handle is not final, Map::setIfAbsent returns the previous value, Channel::recvMany takes (int $max, int $ms), and summary buckets expose only count/bytes/ops.
  - Add the AggregateAsyncException node to the async exception hierarchy, correct the span-event kinds and TRACE_CONTEXT wording in distributed tracing, stop quoting a non-existent TLS error string, and drop the spurious EXPOSE 9090 from the install example.
  - Apply every correction identically across the English, Russian, and Chinese docs.

Changelog:
  - Add the async fiber composition feature (nested oxphp_async, ASYNC_MAX_FIBERS, in-flight cap, new async metrics, await-timeout cancellation) and the channel send-waiter wakeup fix to the Unreleased section.
@diolektor diolektor merged commit 9a78b63 into main Jun 23, 2026
6 checks passed
@diolektor diolektor deleted the docs/accuracy-sync-and-changelog branch June 23, 2026 20:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant