Приложение D. Определяется реализацией
Перечень всех пунктов Стандарта, в которых поведение определяется реализацией или возможность необязательна (§0.1). Для каждого пункта дан якорь impl-… (ссылка ведёт к примечанию с полным текстом), вид, выбор данной реализации (OxL 1.0, Linux x86-64) и источники: решение D-… в docs/decisions.md и запись DIV-… в docs/divergences.md. Реализация ДОЛЖНА поддерживать такой перечень актуальным для каждого выпуска; пункты, не включённые сюда, не имеют права отличаться от Стандарта. Вид: П — поведение определяется реализацией (выбор документирован); Н — необязательная возможность, в этой реализации отсутствует или реализована частично.
| Якорь | Раздел | Вид | Выбор данной реализации | Источники |
|---|---|---|---|---|
impl-platforms | §0.3 | Н | только Linux x86-64; macOS, Windows, кросс-компиляция не поставляются | D-1604, D-8051; DIV-035 |
impl-borrow-scope | §7.2 | П | лексические заимствования, путь-чувствительно для полей | D-600; DIV-002 |
impl-io-backend | §8.1 | П | io_uring (запасной epoll и пул блокирующих потоков); вытеснение — поток-монитор и сигнал | D-1600..D-1604; DIV-035 |
impl-stack-overflow | §8.1 | П | стек задачи 256 КиБ, корневой 8 МиБ; переполнение — паника, код 101 | D-3562; DIV-003 |
impl-user-format-decode | §9.5 | Н | у Decoder нет пропуска значения: неизвестное поле — Invalid; неизвестное число открытого enum не читается | D-8344; DIV-007 |
impl-view | §9.6 | П | только бинарный формат и прямые поля; полное декодирование при проверке | D-6501..D-6505; DIV-046 |
impl-middleware-scope | §10.2 | Н | middleware только на сервере и не на стримах | D-7530; DIV-010 |
impl-attr-apply | §15.4 | Н | comptime fn Имя.apply зарезервирован | D-7530 |
impl-outbox-backends | §11.2 | Н | outbox только для builtin:// | D-4999, D-5484; DIV-014 |
impl-2pc | §11.2 | Н | 2PC нет; cross_shard: true — предупреждение cross-shard-tx; CrossShardTx | D-4410; DIV-021 |
impl-atomic-db-other | §11.2 | П | другая база в теле atomic(db) по эффектам не отличается | D-7790 |
impl-seeds-k8s | §12.1 | Н | k8s(…) не разрешается; static[…], oxl dev | D-4259; DIV-023, DIV-054 |
impl-placement | §12.1 | П | ресурсы needs и hosts не управляют размещением | D-4601, D-4899; DIV-016 |
impl-raft-membership | §12.4 | П | смена состава одиночными шагами, без joint consensus | D-4379; DIV-020 |
impl-replica-reads | §12.4 | Н | нет leader lease и чтения SQL-таблиц builtin:// с реплик (std.kv — есть, ReadIndex) | D-8220, D-8221; DIV-019 |
impl-actor-dedup | §12.5 | П | окно дедупликации 64 сообщения, без срока; @mailbox нет | D-4899; DIV-018 |
impl-shards-reduce | §12.6 | Н | cluster.shards(..).map(..).reduceBy(..) не построен; есть cluster.shards() | D-4804, D-4899; DIV-015 |
impl-module-dep | §12.7 | П | модульный dep только в сагах и пайплайнах модуля | D-5101; DIV-017 |
impl-migrate-online | §12.8 | Н | oxl db migrate только для остановленного узла; онлайн-миграции нет | D-8240, D-8241; DIV-022 |
impl-wal-recovery | §12.8 | П | порча журнала: по умолчанию отказ открыть; kPointInTime — только через API C++ | D-8310 |
impl-crypto-backend | §13.1 | П | libssl-совместимая библиотека (OpenSSL ≥ 3.0); AWS-LC не проверен | D-4739; DIV-024 |
impl-acme | §13.1 | Н | ACME нет; --tls-cert/--tls-key | D-4739; DIV-024, DIV-054 |
impl-ktls | §13.1 | П | kTLS не используется | D-4739; DIV-024 |
impl-quic | §13.1 | Н | QUIC и HTTP/3 нет | D-4739; DIV-024 |
impl-oidc | §13.2 | Н | OIDC нет; JWT по JWKS или ключу есть | D-4739; DIV-025 |
impl-apikey-store | §13.2 | П | ключи — JSON с SHA-256; сессии — в реплицируемом хранилище | D-8200, D-8201; DIV-025 |
impl-principal-id | §13.2 | П | идентификатор пользователя — str (claim sub) | D-2905; DIV-049 |
impl-kms | §13.3 | Н | ключ из файла; kms(url) нет; @encrypted — вся запись; один CA-узел | D-4739, D-4899, D-4999; DIV-027 |
impl-dynconf | §14.2 | П | история 40 изменений на поле; без страницы конфигурации в inspector | D-5203; DIV-033 |
impl-gateway | §16.3 | Н | только POST, HTTP/2, без стримов; GET, NDJSON и oxl export --openapi нет | D-8210, D-8241; DIV-026 |
impl-comptime-io | §15.1 | Н | только comptime.embedDir; readFile, template нет | D-7883 |
impl-gen-clients | §16.3 | Н | есть Python, TypeScript, Go, Kotlin; клиентов C++ нет; умолчания параметров не генерируются; @resumable игнорируется | D-4756; DIV-034 |
impl-tzdb | §17.5 | П | системная tzdata ($OXL_TZDIR, /usr/share/zoneinfo) | D-3104; DIV-008 |
impl-mock | §18.3 | П | mock/S.calls для унарных rpc сервисов | D-7250; DIV-037 |
impl-sim | §18.4 | П | упрощённая модель симулятора (без Raft и SWIM) | D-6213, D-6256..D-6258; DIV-036 |
impl-ab | §18.5 | П | метрики std.obs не по вариантам в кластере; стримы не журналируются | D-6851; DIV-038 |
impl-stdlib-optional | II.1 | Н | нет Quic, HTTP/3, oidc, BlobStore, imagekit | D-4739; DIV-024, DIV-051 |
impl-opt-hints | II.3 | П | @inline, @cold, likely — подсказки LLVM; @arena нет | D-7690, D-7691, D-7700 |
impl-web-subset | II.4 | Н | подмножество std.web: Site.embedded и сопутствующее | D-7884 |
impl-image | III.1 | П | --image без push; статический бинарник — oxl build --static | DIV-045 |
impl-pkg-tools | III.2 | Н | нет [build] targets, s3://, TLS в registry serve; кэш по пакету | D-6552; DIV-042 |
impl-lsp-markers | III.3 | П | маркеры вызовов — inlay-подсказки | DIV-044 |
impl-analyzer-plugins | III.4 | П | плагины видят выражения плоско, без типов | DIV-043 |
impl-debugger | III.5 | П | non-stop кооперативный; у удалённых кадров нет переменных; time-travel после 1.0 | DIV-039 |
impl-inspector | III.8 | П | состояние актора по номерам полей; условия политик не видны | D-6408, D-6409; DIV-040 |
impl-prod-subsystems | III.8 | П | prod без сервисов и кластера не содержит inspector, отладчик, экспортёр | D-7702 |
Поправки текста (errata) редакции 1.0, внесённые вместе с этим приложением, перечислены в приложении B: TxConflict как паника (§11.2), ProtocolError как data с константами (§6.5), значения [lint] (III.2), границы @owner и условия set (§13.4), политики debug и inspect (III.7, III.8), расхождения примера V.5, предупреждение cross-shard-tx (§11.2), подавление @allow(lint:…) (III.4), dbg/assert по профилям (§2.2, §18.2), идентичность во внешних вызовах (§13.2). Уточнения семантики, не являющиеся пунктами «определяется реализацией»: TVar вне atomic (§8.9), Middleware, Response и эффекты around (§10.2), тип результата cluster.lock (§12.6), отображения MessagePack и CBOR, @preserve_unknown, Encoder/Decoder/Format (§9.3–§9.5), comptime.embedDir (§15.1), неизвестный исход записи KV (§12.8).
Исходник: docs/spec/oxl-standard.md