Skip to content

Legacy Audit

Disposition of every legacy docs area and its destination in the Atoll Book.

Updated View as Markdown

This audit determines which legacy material belongs in the Language Guide. Migration does not mean copying: each destination is rewritten against current syntax, sema, prelude signatures, and runtime tests.

Core language documents

Legacy document Book destination
docs/grammar.md Source and Literals, plus the future normative grammar
docs/code-style.md Naming specification and current examples throughout
docs/vars.md Bindings
docs/const.md Constants
docs/function.md, docs/closures.md Functions and Closures
docs/operators.md Operators
docs/control-flow.md Blocks and Conditionals
docs/loops.md Loops
docs/match.md Patterns and Match
docs/type-system.md Inference and Generics
docs/structs.md Structs and Records
docs/enums.md, docs/anon_enum.md Enums and Unions
docs/alias.md, docs/projections.md Aliases and Projections
docs/tuple.md Tuples; current arrays, lists, and slices are consolidated in Sequences
docs/traits.md Traits and Implementations
docs/value-semantics.md, docs/references.md Values and References
docs/errors.md, docs/builtin/option.md, docs/builtin/result.md Focused chapters under Errors
docs/modules.md, docs/project/project.md, docs/project/atoll.toml.md, docs/project/host.md Modules, Imports, Visibility, and Projects
docs/async.md, docs/design/select.md Focused chapters under Concurrency
docs/model.md Current persisted-row subset in Models; inheritance/behavior proposal excluded

Builtin documents

Legacy document(s) Disposition
builtin/core.md, builtin/builtin.md Standard-library overview; compiler-author details later
builtin/int.md, builtin/float.md Numbers
builtin/string.md, builtin/bytes.md Strings and Bytes; nominal bytes/Buffer corrected to current sequence types
builtin/list.md, builtin/map.md, builtin/set.md Lists, Maps, Sets, and Iteration
builtin/option.md, builtin/result.md Option and Result, plus error control flow
builtin/time.md Time
builtin/files.md, builtin/http.md, builtin/tcp.md Files, HTTP, and TCP
builtin/spawn.md, builtin/stream.md Concurrency
builtin/traits.md Traits
builtin/unsafe.md, builtin/intrinsics.md Unsafe and Intrinsics
builtin/any.md, email.md, phone.md, queue.md, stack.md, url.md Empty/planned and absent from the installed prelude; recorded in feature status only
builtin/money.md Proposed domain type; no current prelude Money

Data language

Legacy document Disposition
docs/sql/SQL.md Reanalyzed into focused SQL chapters; per-feature maturity retained
docs/design/transactions.md User-visible semantics in Transactions; executor/Raft design remains runtime material
docs/sql/roadmap.md, docs/sql/turso.md, docs/design/arrow-integration.md Compiler/runtime implementation and project planning, not Language Guide chapters
docs/project/sql.md Project configuration/tooling, to be migrated under project tooling

Historical application-system proposals

The following are useful design archives but do not correspond to current declaration kinds. They are summarized in feature status:

actor.md, actor-compare.md, context.md, guard.md, job.md, logger.md, messages.md, messaging.md, services.md, topic.md, workflows.md, and every file under docs/decorators/ (actors, ai, auth, data, events, fields, http, jobs, mcp, ui, and its index).

No example from those files is taught as current syntax merely because the generic decorator parser accepts its @name.

Compiler, IR, memory, and runtime material

These areas do not belong in the Language Guide:

  • Every docs/compiler/*.md file is compiler architecture, planning, diagnostics, incremental compilation, debugging, reproducibility, or performance material.
  • Every docs/design/*.md file is implementation design. async-system.md, select.md, and transactions.md were used as evidence for reader-visible semantics; their ABI and lowering detail remains outside the guide.
  • arena.md, boxing-cleanup.md, flat.md, memory.md, docs/memory/*.md, and wasm_intrinsics_expansion_plan.md belong in the Runtime, MIR, or WasmIR sections. Only their source-visible guarantees were extracted.
  • raft.md, docs/runtime/*.md, and docs/runtime/topics.md belong in runtime/distributed-system documentation.
  • docs/host/host.md supplies host-binding and capability material; the decorator surface is in the guide, while ABI/adapter design belongs under Runtime.

Project tooling and repository notes

Every file under docs/project/ belongs under Start/Project Tooling rather than the Language Guide: atoll.toml.md, atoll.yaml.md, host.md, hot-deploy.md, project.md, serialization.md, sql.md, and tracing.md.

The meta and work-tracking files _assessment.md, _load.md, _presentation.md, _summary.md, _next/next.md, _next/perf.md, stashed_work_inventory.md, and compiler plan trackers remain contributor inputs, not reader chapters.

Rewrite rules applied

All migrated language material follows these rules:

  1. Prefer current parser/sema tests and installed prelude stubs over prose.
  2. Use lowercase scalar names, PascalCase composite names, square-bracket generics, snake_case members, and SCREAMING_SNAKE_CASE constants.
  3. Replace let/var with immutable or mut := bindings.
  4. Separate implemented, provisional, and historical behavior explicitly.
  5. Keep ABI, continuation, reference-count, arena, and SQL executor details in technical-design sections unless they change the source-language contract.
  6. Give every page one primary concept and a one-word title; use two words only when the established concept genuinely needs them.

Second review

A second implementation-led pass corrected several points that the legacy prose or first migration left ambiguous:

  • string.length() counts Unicode code points, while string.len() counts UTF-8 bytes; byte_length() is only the deprecated compatibility alias.
  • a parsed binding DATASOURCE := query prefix is not yet consumed by semantic routing, so named route overrides are marked provisional instead of taught as operational;
  • Turso rejects FOR UPDATE rather than silently treating it as a no-op;
  • race is first completion, not first success, and the current empty form still receives conservative static effects;
  • DataFusion is a datasource query engine, while every Df[T] manipulation plan executes through Polars;
  • frame, stream, task, file, socket, and transaction cleanup behavior was reconciled with current resource and cancellation tests.

These corrections illustrate why a destination is reanalyzed rather than copied from its source document.

Third review

A third source-and-test pass tightened contracts that were still broader than the implementation:

  • struct construction currently type-checks supplied known fields but does not reliably reject missing, duplicate, or unknown fields, and parsed field defaults are not yet applied;
  • binding type projections remove Result and then at most one supported Option or collection wrapper, with map projections selecting the value type;
  • unannotated functions can synthesize a closed error union from several propagated error types;
  • catch may recover to the success type, convert to a new Result error type, or leave directly through error; those outcomes are now documented separately;
  • naming warnings are opt-in ATOLL7002 diagnostics, and their current AST coverage is narrower than the convention table in docs/code-style.md.

The Structs chapter is marked provisional until total construction checking and field-default lowering are implemented.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close