Философия
Типы
- D17 — Объявление типов: единый синтаксис без |
- D52 — Объявление типов revised: newtype, alias, sum через leading |
- D53 — Унификация: protocol под type, protocol как kind-токен
- D55 — Literal coercion в позиции с явным типом: sum-конструкторы и record-литералы
- D42 — protocol keyword для структурных интерфейсов
- D15 — Структурные интерфейсы
- D39 — Embed и delegation: use name Type (alias обязателен)
- D32 — Семантика передачи параметров
- D36 — Поля типа: дефолт mutable у mut binding'а, readonly для never-mut
- D175 — readonly field — полный freeze (амендмент D36)
- D176 — readonly T — тип-модификатор
- D66 — Self universal — ссылка на обобщающий тип в методах, effects, protocols
- D72 — Generic bounds через [T Protocol] — protocol как тип
- D110 — Ghost state — spec-only bindings
- D122 — Hybrid dispatch для bound-K methods
- D123 — Tuple monomorphization
- D119 — Method-level type parameters в generic methods
- D125 — Удаление byte: каноническое имя — u8
- D126 — Strict type propagation в codegen — no silent nova_int fallback
- D128 — char distinct from int в codegen mono'd generics
- D129 — int как alias i64 в bootstrap Nova
- D130 — uint — unsigned 64-bit alias в bootstrap Nova
- D133 — type X consume — обязательная consume-семантика (must-be-consumed)
- D156 — Generic [T consume] bound + collection-aware iteration
- D163 — FFI consume integration — type-driven, без отдельного keyword'а
- D164 — Cross-module consume — visibility + mangling + package contracts
- D135 — Type-checker completeness — «no silent fallback» на уровне типов
- D142 — protocol/effect declaration ↔ literal symmetry
- D144 — Sub-slice views для []T и str — arr[a..b] / s[a..b]
- D145 — fn[T] префикс — receiver-generic decl + bounds (Plan 101)
- D180 — Canonical .new() constructors (convention)
- D181 — Array methods — -> @ fluent mut chain + slice syntax
- D182 — Self в return-type static methods — required form для parametric types
- D183 — Canonical comparison protocols + default method bodies (Plan 91.8a)
- D183 — amendment — Plan 91.8a.2 part 1: protocols refactor (orthogonal) + Self в param
- D186 — — #impl(P1 + P2 + ...) opt-in annotation для protocols
Синтаксис
- D16 — Дженерики через [T], не <T>
- D19 — Match-arms через =>, не ->
- D20 — () вместо void, сводка стрелок, function type syntax
- D22 — Closure: light |...| и full fn(...)
- D23 — return — только для раннего выхода
- D27 — Синтаксис массивов: []T префикс, [N]T фиксированные
- D30 — Стиль именования
- D33 — const vs let — compile-time vs runtime
- D34 — if let и while let для pattern matching в условии
- D35 — Методы инстанса через @, self отменён
- D37 — Доступ к полям: .name для record, .N для позиционных и кортежей
- D38 — Создание массивов и turbofish для дженериков
- D40 — Тело функции: => для одного выражения, {} для блока
- D43 — Trailing: { block } без params, fn(p) body с params
- D44 — Числовые литералы
- D45 — Inferred return type для expression-body
- D46 — Перегрузка операторов через @-методы
- D48 — Tagged template literals
- D49 — Statement separator и парсинг выражений
- D54 — Операторы as и is
- D58 — Range-литерал, Iter[T] protocol, for x in c implicit iter
- D59 — Array, tuple и позиционные partial patterns
- D60 — Spread ...x в литералах: массив и record
- D69 — Variadic-параметры через ...items []T
- D83 — Keywords строго запрещены как identifier'ы
- D88 — Default-значения generic-параметров
- D90 — defer и errdefer — scope-level cleanup statement
- D102 — Именованные аргументы и значения параметров по умолчанию
- D108 — Map-литерал [k: v]
- D104 — Синтаксис doc-comment'ов — /// outer, //! inner
- D117 — Size-like accessors require call syntax
- D126 — external type — opaque типы без body
- D132 — -> @ — fluent-return (метод возвращает receiver)
- D143 — Static-метод в protocol {} через leading-точку
- D158 — Failable cleanup body — Fail effect разрешён в defer/errdefer
- D159 — Async/suspend в cleanup body — cancel-safe
- D160 — okdefer + reason-aware defer |result|
- D161 — Multi-defer LIFO error accumulation + panic-in-defer composition
- D162 — Consume-integration final — check_consume + defer-family + cancel
Эффекты
- D2 — Эффекты вместо ключевых слов async/throws/unsafe
- D3 — Синтаксис эффектов: типы между ) и ->
- D4 — ? для пробрасывания ошибки
- D11 — Имена эффектов и синтаксис with
- D12 — Effect erasure и dynamic effects
- D18 — Эффекты объявляются через kind-токен, не голый type
- D25 — throw и параметризация Fail[E]
- D28 — Вывод эффектов: private — выводится, public — обязательно явно
- D31 — Handler-лямбда для эффектов с одной операцией
- D61 — Полная семантика эффектов: effect keyword, handler-литерал, Effect[E], interrupt
- D62 — Прагматичная семантика эффектов: прямые в сигнатуре, Fail strict, Async ambient, правило effect/protocol
- D65 — Полная семантика Fail: гибрид Fail[E] / Fail, lookup, prelude RuntimeError и Error
- D63 — forbid X { body } — capability sandbox
- D64 — realtime { body } / blocking { body } — гарантия не-приостановки _(RETRACTED by Plan 113)_
- D67 — ? оператор: семантика для Result через Fail, для Option через ранний return
- D68 — Stateful handlers: через closure capture или @as_handler метод record
- D85 — Операторы ? и !! — унифицированное поведение для Result и Option, throw-стиль через !!
- D86 — ?? coalesce-оператор — fallback для Result/Option
- D87 — Effect[E, IRT] — параметризация Handler типом interrupt'а
- D120 — #pure views + axioms + #verify/#trusted handlers
- D115 — Axiom binder — BinderType enum вместо Option<TypeRef>
- D118 — Typed Fail[E] codegen — payload preservation via fail-frame
Память
Конкурентность
- D14 — Fiber runtime — невидимая инфраструктура
- D50 — Concurrency model: spawn, detach, Blocking
- D71 — Bootstrap concurrency runtime
- D75 — supervised(cancel: tok) — структурная отмена с внешним токеном
- D79 — Channels — coordination между fiber'ами
- D80 — Handler scoping per-fiber
- D91 — Channel revision — capability-split на ChanWriter / ChanReader
- D93 — Park/wake — нормативный runtime primitive для блокирующих операций
- D92 — Top-level main как implicit supervised scope
- D94 — select { ... } — multiplexed channel operations
- D97 — Fiber stack allocation — per-thread mmap arena (Linux/macOS)
- D98 — Per-worker libuv loop — TLS _nova_current_loop
- D103 — Preemption — sysmon-thread + codegen safepoints
- D124 — Monotonic vs Timestamp — раздельные типы для wall-clock и монотонных часов
- D136 — M:N worker-count — порядок разрешения и NOVA_MAXPROCS
- D137 — M:N — ленивая материализация пула, runtime.init как тюнер
- D138 — Default-on M:N runtime — production semantics (Plan 83.4.5.6 Ф.3, ACTIVE 2026-05-24)
- D167 — Memory ordering & happens-before между fiber'ами
- D168 — Sized atomic types — API contract (Plan 103.2)
- D171 — Once / OnceCell / Lazy — single-initialization primitives (Plan 103.5)
- D169 — Mutex / RwLock / ReentrantMutex family (Plan 103.3)
- D170 — Coordination primitives — Semaphore / Barrier / CountDownLatch / Condvar (Plan 103.4)
- D172 — #realtime / #blocking attribute-only model + sync-class annotations (Plan 103.6, amended Plan 113)
- D173 — AI-first guidance — sync-primitive decision tree (Plan 103.7)
- D174 — Sync primitives consume integration (Plan 103.9)
Модули
- D5 — Видимость: только export или приватно
- D29 — Модули и импорты
- D47 — Видимость деклараций
- D78 — Package tooling: nova.toml, nova.lock, registry chain, workspace
- D99 — Conditional compilation: filename suffix + #cfg
- D100 — _module.nv peer — module-config convention
- D101 — #doc attribute — module-level inline documentation
- D174 — Prelude control attributes — #no_prelude, #prelude(...), #allow(shadow)
- D134 — Symbol mangling v0 — C-имена свободных функций
- D138 — Межпакетный импорт — только через объявленную зависимость
- D139 — Version-диапазоны git-зависимостей — резолв по тегам репозитория
- D140 — Effect-aware зависимости — effect-surface и forbid на границе
Рантайм
- D7 — Один язык — три режима компиляции
- D13 — Panic vs эффекты: что НЕ является эффектом
- D26 — Базовая stdlib и prelude
- D41 — Static-функции есть, static-состояния нет
- D70 — ToStr protocol — REPLACED → D73
- D73 — From / Into protocol-пара с авто-выводом
- D74 — Математические операции на числовых типах — instance-методы
- D77 — TryFrom / TryInto — protocol-пара, расширение D73 для fallible-конверсий
- D76 — Mem эффект — runtime introspection для leak/growth тестов
- D81 — assert(cond) vs debug_assert(cond) — build-mode семантика
- D82 — external fn — функции с runtime-implementation
- D109 — Встроенные методы примитивных типов — hash, eq, ord
- D124 — Edition-versioned prelude resolver
- D125 — Prelude shadow warning lint
- D141 — Примитивы доступа к памяти — byte_at / bulk slice-операции
- D173 — std/net — Async TCP/UDP socket stdlib via libuv
- D177 — str Nova-body dispatch — Plan 54 Ф.2 extension
- D178 — str API cleanup и расширения — Plan 91 Ф.2.6
- D179 — StringBuilder — pure Nova consume type — Plan 91 Ф.2.6
Инструменты
- D24 — Стратегия SMT-проверки контрактов
- D89 — Test-tooling конвенции — EXPECT_* маркеры для negative-тестов
- D95 — CLI path конвенции — nova check <path> / nova test <path>
- D96 — Синтаксис атрибутов — #name без квадратных скобок
- D105 — Doc-атрибуты
- D106 — Семантика doc-test'ов
- D107 — JSON output schema v1
- D111 — assume / assert_static / #trusted external
- D112 — Bounded quantifiers (forall/exists по коллекции)
- D113 — #must_verify_module — strict mode на модуле
- D114 — SMT cache + parallel verification
- D116 — Z3 backend через собственные FFI-биндинги
- D121 — Benchmark DSL — bench "..." { measure { ... } }
- D127 — Stability-tier enforcement scope (Plan 71)
- D165 — Consume-types migration policy — nova consume-migrate + editions
- D166 — Consume-types developer experience — performance, IDE, docs