Appendix D. Implementation-defined
The list of all items of the Standard in which the behaviour is defined by the implementation or a feature is optional (§0.1). For each item the table gives the anchor impl-… (the link leads to the note with the full text), the kind, the choice of this implementation (OxL 1.0, Linux x86-64) and the sources: the decision D-… in docs/decisions.md and the entry DIV-… in docs/divergences.md. An implementation MUST keep such a list up to date for every release; items not included here have no right to differ from the Standard. Kind: B — behaviour defined by the implementation (the choice is documented); O — an optional feature, absent or partially implemented in this implementation.
| Anchor | Section | Kind | Choice of this implementation | Sources |
|---|---|---|---|---|
impl-platforms | §0.3 | O | Linux x86-64 only; macOS, Windows and cross-compilation are not shipped | D-1604, D-8051; DIV-035 |
impl-borrow-scope | §7.2 | B | lexical borrows, path-sensitive for fields | D-600; DIV-002 |
impl-io-backend | §8.1 | B | io_uring (epoll and a blocking-thread pool as fallback); preemption by a monitor thread and a signal | D-1600..D-1604; DIV-035 |
impl-stack-overflow | §8.1 | B | task stack 256 KiB, root 8 MiB; overflow is a panic, exit code 101 | D-3562; DIV-003 |
impl-user-format-decode | §9.5 | O | the Decoder cannot skip a value: an unknown field is Invalid; an unknown number of an open enum is not read | D-8344; DIV-007 |
impl-view | §9.6 | B | only the binary format and direct fields; full decoding on validation | D-6501..D-6505; DIV-046 |
impl-middleware-scope | §10.2 | O | middleware on the server only and not on streams | D-7530; DIV-010 |
impl-attr-apply | §15.4 | O | comptime fn Name.apply is reserved | D-7530 |
impl-outbox-backends | §11.2 | O | outbox for builtin:// only | D-4999, D-5484; DIV-014 |
impl-2pc | §11.2 | O | no 2PC; cross_shard: true gives the warning cross-shard-tx; CrossShardTx | D-4410; DIV-021 |
impl-atomic-db-other | §11.2 | B | another database inside atomic(db) is not told apart by effects | D-7790 |
impl-seeds-k8s | §12.1 | O | k8s(…) is not resolved; static[…], oxl dev | D-4259; DIV-023, DIV-054 |
impl-placement | §12.1 | B | the resources of needs and hosts do not control placement | D-4601, D-4899; DIV-016 |
impl-raft-membership | §12.4 | B | membership changes in single steps, no joint consensus | D-4379; DIV-020 |
impl-replica-reads | §12.4 | O | no leader lease and no reads of builtin:// SQL tables from replicas (std.kv has them, ReadIndex) | D-8220, D-8221; DIV-019 |
impl-actor-dedup | §12.5 | B | deduplication window of 64 messages, no expiry; no @mailbox | D-4899; DIV-018 |
impl-shards-reduce | §12.6 | O | cluster.shards(..).map(..).reduceBy(..) is not built; cluster.shards() exists | D-4804, D-4899; DIV-015 |
impl-module-dep | §12.7 | B | module-level dep only in the sagas and pipelines of the module | D-5101; DIV-017 |
impl-migrate-online | §12.8 | O | oxl db migrate only for a stopped node; no online migration | D-8240, D-8241; DIV-022 |
impl-wal-recovery | §12.8 | B | log corruption: refuse to open by default; kPointInTime only through the C++ API | D-8310 |
impl-crypto-backend | §13.1 | B | a libssl-compatible library (OpenSSL ≥ 3.0); AWS-LC not verified | D-4739; DIV-024 |
impl-acme | §13.1 | O | no ACME; --tls-cert/--tls-key | D-4739; DIV-024, DIV-054 |
impl-ktls | §13.1 | B | kTLS is not used | D-4739; DIV-024 |
impl-quic | §13.1 | O | no QUIC and HTTP/3 | D-4739; DIV-024 |
impl-oidc | §13.2 | O | no OIDC; JWT by JWKS or key exists | D-4739; DIV-025 |
impl-apikey-store | §13.2 | B | keys are JSON with SHA-256; sessions in the replicated storage | D-8200, D-8201; DIV-025 |
impl-principal-id | §13.2 | B | the user identifier is a str (claim sub) | D-2905; DIV-049 |
impl-kms | §13.3 | O | key from a file; no kms(url); @encrypted is the whole record; one CA node | D-4739, D-4899, D-4999; DIV-027 |
impl-dynconf | §14.2 | B | history of 40 changes per field; no configuration page in the inspector | D-5203; DIV-033 |
impl-gateway | §16.3 | O | POST only, HTTP/2, no streams; no GET, NDJSON or oxl export --openapi | D-8210, D-8241; DIV-026 |
impl-comptime-io | §15.1 | O | comptime.embedDir only; no readFile, template | D-7883 |
impl-gen-clients | §16.3 | O | Python, TypeScript, Go, Kotlin exist; no C++ clients; parameter defaults are not generated; @resumable is ignored | D-4756; DIV-034 |
impl-tzdb | §17.5 | B | system tzdata ($OXL_TZDIR, /usr/share/zoneinfo) | D-3104; DIV-008 |
impl-mock | §18.3 | B | mock/S.calls for unary rpcs of services | D-7250; DIV-037 |
impl-sim | §18.4 | B | a simplified simulator model (no Raft and SWIM) | D-6213, D-6256..D-6258; DIV-036 |
impl-ab | §18.5 | B | std.obs metrics are not per variant in a cluster; streams are not journalled | D-6851; DIV-038 |
impl-stdlib-optional | II.1 | O | no Quic, HTTP/3, oidc, BlobStore, imagekit | D-4739; DIV-024, DIV-051 |
impl-opt-hints | II.3 | B | @inline, @cold, likely are LLVM hints; no @arena | D-7690, D-7691, D-7700 |
impl-web-subset | II.4 | O | a subset of std.web: Site.embedded and its companions | D-7884 |
impl-image | III.1 | B | --image without push; a static binary is oxl build --static | DIV-045 |
impl-pkg-tools | III.2 | O | no [build] targets, s3://, TLS in registry serve; cache per package | D-6552; DIV-042 |
impl-lsp-markers | III.3 | B | call markers are inlay hints | DIV-044 |
impl-analyzer-plugins | III.4 | B | plugins see expressions flat, without types | DIV-043 |
impl-debugger | III.5 | B | non-stop is cooperative; remote frames have no variables; time-travel after 1.0 | DIV-039 |
impl-inspector | III.8 | B | actor state by field numbers; policy conditions are not visible | D-6408, D-6409; DIV-040 |
impl-prod-subsystems | III.8 | B | prod without services and cluster contains no inspector, debugger, exporter | D-7702 |
The text corrections (errata) of edition 1.0 made together with this appendix are listed in appendix B: TxConflict as a panic (§11.2), ProtocolError as data with constants (§6.5), the [lint] values (III.2), the limits of @owner and the set conditions (§13.4), the policies debug and inspect (III.7, III.8), the deviations of example V.5, the warning cross-shard-tx (§11.2), the suppression @allow(lint:…) (III.4), dbg/assert by profile (§2.2, §18.2), the identity in external calls (§13.2). Clarifications of semantics that are not "implementation-defined" items: TVar outside atomic (§8.9), Middleware, Response and the effects of around (§10.2), the result type of cluster.lock (§12.6), the MessagePack and CBOR mappings, @preserve_unknown, Encoder/Decoder/Format (§9.3–§9.5), comptime.embedDir (§15.1), the unknown outcome of a KV write (§12.8).
Source: docs/spec/oxl-standard.en.md