OxL Reference

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.

AnchorSectionKindChoice of this implementationSources
impl-platforms§0.3OLinux x86-64 only; macOS, Windows and cross-compilation are not shippedD-1604, D-8051; DIV-035
impl-borrow-scope§7.2Blexical borrows, path-sensitive for fieldsD-600; DIV-002
impl-io-backend§8.1Bio_uring (epoll and a blocking-thread pool as fallback); preemption by a monitor thread and a signalD-1600..D-1604; DIV-035
impl-stack-overflow§8.1Btask stack 256 KiB, root 8 MiB; overflow is a panic, exit code 101D-3562; DIV-003
impl-user-format-decode§9.5Othe Decoder cannot skip a value: an unknown field is Invalid; an unknown number of an open enum is not readD-8344; DIV-007
impl-view§9.6Bonly the binary format and direct fields; full decoding on validationD-6501..D-6505; DIV-046
impl-middleware-scope§10.2Omiddleware on the server only and not on streamsD-7530; DIV-010
impl-attr-apply§15.4Ocomptime fn Name.apply is reservedD-7530
impl-outbox-backends§11.2Ooutbox for builtin:// onlyD-4999, D-5484; DIV-014
impl-2pc§11.2Ono 2PC; cross_shard: true gives the warning cross-shard-tx; CrossShardTxD-4410; DIV-021
impl-atomic-db-other§11.2Banother database inside atomic(db) is not told apart by effectsD-7790
impl-seeds-k8s§12.1Ok8s(…) is not resolved; static[…], oxl devD-4259; DIV-023, DIV-054
impl-placement§12.1Bthe resources of needs and hosts do not control placementD-4601, D-4899; DIV-016
impl-raft-membership§12.4Bmembership changes in single steps, no joint consensusD-4379; DIV-020
impl-replica-reads§12.4Ono 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.5Bdeduplication window of 64 messages, no expiry; no @mailboxD-4899; DIV-018
impl-shards-reduce§12.6Ocluster.shards(..).map(..).reduceBy(..) is not built; cluster.shards() existsD-4804, D-4899; DIV-015
impl-module-dep§12.7Bmodule-level dep only in the sagas and pipelines of the moduleD-5101; DIV-017
impl-migrate-online§12.8Ooxl db migrate only for a stopped node; no online migrationD-8240, D-8241; DIV-022
impl-wal-recovery§12.8Blog corruption: refuse to open by default; kPointInTime only through the C++ APID-8310
impl-crypto-backend§13.1Ba libssl-compatible library (OpenSSL ≥ 3.0); AWS-LC not verifiedD-4739; DIV-024
impl-acme§13.1Ono ACME; --tls-cert/--tls-keyD-4739; DIV-024, DIV-054
impl-ktls§13.1BkTLS is not usedD-4739; DIV-024
impl-quic§13.1Ono QUIC and HTTP/3D-4739; DIV-024
impl-oidc§13.2Ono OIDC; JWT by JWKS or key existsD-4739; DIV-025
impl-apikey-store§13.2Bkeys are JSON with SHA-256; sessions in the replicated storageD-8200, D-8201; DIV-025
impl-principal-id§13.2Bthe user identifier is a str (claim sub)D-2905; DIV-049
impl-kms§13.3Okey from a file; no kms(url); @encrypted is the whole record; one CA nodeD-4739, D-4899, D-4999; DIV-027
impl-dynconf§14.2Bhistory of 40 changes per field; no configuration page in the inspectorD-5203; DIV-033
impl-gateway§16.3OPOST only, HTTP/2, no streams; no GET, NDJSON or oxl export --openapiD-8210, D-8241; DIV-026
impl-comptime-io§15.1Ocomptime.embedDir only; no readFile, templateD-7883
impl-gen-clients§16.3OPython, TypeScript, Go, Kotlin exist; no C++ clients; parameter defaults are not generated; @resumable is ignoredD-4756; DIV-034
impl-tzdb§17.5Bsystem tzdata ($OXL_TZDIR, /usr/share/zoneinfo)D-3104; DIV-008
impl-mock§18.3Bmock/S.calls for unary rpcs of servicesD-7250; DIV-037
impl-sim§18.4Ba simplified simulator model (no Raft and SWIM)D-6213, D-6256..D-6258; DIV-036
impl-ab§18.5Bstd.obs metrics are not per variant in a cluster; streams are not journalledD-6851; DIV-038
impl-stdlib-optionalII.1Ono Quic, HTTP/3, oidc, BlobStore, imagekitD-4739; DIV-024, DIV-051
impl-opt-hintsII.3B@inline, @cold, likely are LLVM hints; no @arenaD-7690, D-7691, D-7700
impl-web-subsetII.4Oa subset of std.web: Site.embedded and its companionsD-7884
impl-imageIII.1B--image without push; a static binary is oxl build --staticDIV-045
impl-pkg-toolsIII.2Ono [build] targets, s3://, TLS in registry serve; cache per packageD-6552; DIV-042
impl-lsp-markersIII.3Bcall markers are inlay hintsDIV-044
impl-analyzer-pluginsIII.4Bplugins see expressions flat, without typesDIV-043
impl-debuggerIII.5Bnon-stop is cooperative; remote frames have no variables; time-travel after 1.0DIV-039
impl-inspectorIII.8Bactor state by field numbers; policy conditions are not visibleD-6408, D-6409; DIV-040
impl-prod-subsystemsIII.8Bprod without services and cluster contains no inspector, debugger, exporterD-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