The page inventory

The historical work plan the documentation tree was written from, every page listed with its path, kind, scope and sources, grouped by the package a writer took.

Diese Seite gibt es noch nicht auf Deutsch, deshalb steht sie hier auf Englisch. Zur englischen Seite

This was the work plan. Every page of the tree is listed here with the path it got, the kind it is, the one line it had to answer, and where its facts came from - split into thirteen packages so that independent writers could each take one without touching the same file. Every page listed here exists today, so this document is kept as a record of how the tree was planned rather than as an open queue; Adding a page is what a genuinely new page follows now.

The decision#

The work is split into thirteen packages, each one a folder or a group of subfolders with no overlap. Two writers can take two packages at the same time without touching the same file. Every package can be finished on its own, because a page is written to stand alone and the index it belongs to is generated.

PackagePathsPagesDepends on
1guide/13The reference for the links, so write it late or link forward
2language/syntax/, language/values-and-types/22Nothing
3language/functions/8Nothing
4language/types/13Nothing
5language/traits/, language/generics/14Nothing
6language/pattern-matching/, language/errors/13Nothing
7language/collections-and-iteration/, language/concurrency-and-streams/11docs/design/STREAMS.md for the streams pages
8language/modules-and-packages/, language/reflection/, language/configuration/, language/execution/, language/extensibility/21Nothing
9standard-library/22The std/ sources only
10how-to/14The reference, for the links
11explanation/ without the contrast pages16The Decision Log of CONCEPT.md
12The four contrast pages4The reference, and knowledge of the other language
13tooling/13compiler/src/cli/, compiler/src/main.trb

glossary.md is not a package: every writer adds the terms their pages use, in alphabetical order, at most two sentences each.

Why#

One folder per writer, because a folder is the unit that has no shared files. The index of a folder is generated, so two writers never edit the same index; the only shared file in the whole tree is glossary.md, and an entry there is one paragraph that can be added without reading the rest.

The reference before the guide and the how-to pages. A guide page links into language/, and a link that does not resolve is an error. Packages 2 to 9 have no dependency on anything but CONCEPT.md and std/, so they go first; 1, 10 and 12 come after them.

A page that has no source is not written. Every row below names where its facts come from. Where CONCEPT.md is silent or contradicts the compiler, the page says so and the contradiction goes into the report rather than being resolved by the writer.

The pages#

The columns are the path below docs/, the title, the kind, the one line the page answers, and the source field it carries. done in the last column means the page exists and passes the gate.

Package 1: guide#

The learning path, in order, mirroring examples/tour/src/*.trb. Every page has order and prerequisites. Since 2026-09-29 the guide opens with one tour, guide/tour.md, which replaced the sixty-second page below and a later 15-minute tour; guide/tests-and-tooling.md went into guide/installing-and-running.md and guide/modules-and-packages.md, and building the toolchain moved to contributing/building-from-source.md.

PathTitleKindAnswersSource
guide/tour.mdA tour of TorbScriptguideWhat kind of language this is, in fifteen minutesdone
guide/installing-and-running.mdInstall and runguideHow to get from nothing to outputdone
guide/values-and-bindings.mdValues and bindingsguideWhy const and var are the whole mutation storydone
guide/functions-and-closures.mdFunctions and closuresguideHow to declare one, and the one closure formCONCEPT.md#functions, tour 02
guide/types-and-methods.mdTypes and methodsguideHow to declare a type and give it behaviourCONCEPT.md#types, tour 03
guide/cases-and-matching.mdCases and matchingguideHow a type with cases is declared and taken apartCONCEPT.md#algebraic-data-types-and-pattern-matching, tour 04
guide/traits.mdTraitsguideHow a capability is declared and given to a typeCONCEPT.md#traits, tour 05
guide/errors.mdErrorsguideHow a function says it can fail, and how a caller handles itCONCEPT.md#error-handling, tour 06
guide/collections-and-pipelines.mdCollections and pipelinesguideHow to build, read and transform a collectionCONCEPT.md#collections-and-iteration, tour 07
guide/control-flow-and-dsls.mdControl flow and your own constructsguideWhy unless is a function and how to write oneCONCEPT.md#blocks-and-control-flow, tour 08, tour 09
guide/modules-and-packages.mdModules and packagesguideHow a program is split into files and a projectCONCEPT.md#modules-and-packages
guide/a-small-program.mdPut it togetherguideOne small program that uses everything learnedThe examples

Package 2: syntax, values and types#

PathTitleKindAnswersSource
language/syntax/command-calls.mdCommand callsreferenceWhen a call is written without parenthesesdone
language/syntax/cheat-sheet.mdSyntax cheat sheetreferenceEvery form of the language on one pagedone
language/syntax/lexical-structure.mdLexical structurereferenceWhere a statement ends and what a comment isCONCEPT.md#lexical-structure
language/syntax/literals.mdLiteralsreferenceHow to write a number, a string, a characterCONCEPT.md#lexical-structure
language/syntax/string-interpolation.mdString interpolationreferenceWhat {...} in a string does and how to escape itCONCEPT.md#strings
language/syntax/multi-line-strings.mdMulti-line stringsreferenceHow """ is dedented, and the four rules of itCONCEPT.md#strings
language/syntax/naming.mdNamingreferenceWhich characters a name may contain, which case it starts with, and what is only a conventionCONCEPT.md#lexical-structure
language/syntax/generics-or-comparison.mdAngle brackets or comparisonreferenceHow f<T>(x) is told from a < bCONCEPT.md#lexical-structure
language/syntax/doc-comments.mdDoc commentsreferenceWhat /** */ attaches to and which headings it usesCONCEPT.md#doc-comments
language/values-and-types/bindings.mdBindingsreferenceWhat const and var decidedone
language/values-and-types/built-in-types.mdBuilt-in typesreferenceThe types every file has without an importCONCEPT.md#built-in-types
language/values-and-types/integers.mdIntegersreferenceThe widths, the defaults, and what overflow doesCONCEPT.md#built-in-types
language/values-and-types/floating-point.mdFloating-point numbersreferenceWhy == and compare disagree, and why floats are not HashCONCEPT.md#built-in-types
language/values-and-types/decimal.mdDecimalreferenceExact base-ten arithmetic, and its digits in JSON, YAML and TOMLCONCEPT.md#built-in-types
language/values-and-types/strings.mdStringsreferenceWhy a String has no length() and no text[i]CONCEPT.md#strings
language/values-and-types/tuples.mdTuplesreferencePositional and labelled tuples, and what a label is notCONCEPT.md#built-in-types
language/values-and-types/ranges.mdRangesreferenceThe three range types, and the Bounds traitCONCEPT.md#built-in-types
language/values-and-types/option.mdOptionreferenceHow absence is modelled without nullstd/core/src/option.trb
language/values-and-types/void-and-never.mdVoid and NeverreferenceThe one value void, and the type with noneCONCEPT.md#built-in-types
language/values-and-types/literal-types.mdLiteral typesreference"tcp" | "udp" and why only literals combine with |CONCEPT.md#literal-types
language/values-and-types/type-aliases.mdType aliasesreferencetype X = Y, and why there is no alias keywordCONCEPT.md#type-aliases
language/values-and-types/distinct-types.mdDistinct typesreferenceA single-field type plus by, instead of an opaque aliasCONCEPT.md#distinct-types-opaque-aliases
language/values-and-types/arrays.mdArrays and const parametersreferenceA size in the type, and what may stand in oneCONCEPT.md#const-parameters-and-array

Package 3: functions#

PathTitleKindAnswersSource
language/functions/declaring-a-function.mdDeclaring a functionreferenceThe form, hoisting, and when a result type is requiredCONCEPT.md#functions
language/functions/arguments.mdArguments and labelsreferencePositional, labelled, and the order ruleCONCEPT.md#arguments
language/functions/default-values.mdDefault valuesreferenceWhen a default is evaluated, and in which scopeCONCEPT.md#arguments
language/functions/variadics.mdVariadic parametersreference...rest, and why a collection never unpacks by itselfCONCEPT.md#arguments
language/functions/closures.mdClosuresreferenceThe one closure form and what it capturesCONCEPT.md#lambdas-and-closures
language/functions/trailing-closures.mdTrailing closuresreferenceWhen a brace can follow a call, and the implicit nameCONCEPT.md#trailing-closures
language/functions/parameter-modes.mdParameter modesreferencevar, lazy, receiver closures, ExpressionCONCEPT.md#parameter-modes
language/functions/quoted-expressions.mdQuoted expressionsreferenceWhat Expression<Value> hands a functionCONCEPT.md#quoted-expressions-expressionvalue

Package 4: types#

PathTitleKindAnswersSource
language/types/declaring-a-type.mdDeclaring a typereferenceFields, methods, and what is generateddone
language/types/fields.mdFieldsreferencevar, private, protected var, and the table of fourCONCEPT.md#visibility-and-encapsulation
language/types/construction.mdConstructionreferenceThe one generated constructor, and where logic goesCONCEPT.md#construction
language/types/data-or-capsule.mdData or capsulereferenceWhat a private field without a default closes, and the factory, accessors and conversion pair that take its placeCONCEPT.md#construction
language/types/copy-and-equality.mdCopy and equalityreferenceWhat copy, == and hash do without being writtenCONCEPT.md#values
language/types/generated-show.mdThe generated ShowreferenceThe exact text a value prints asCONCEPT.md#values
language/types/methods.mdMethods and static fnsreferencestatic and var fn, and the one member namespaceCONCEPT.md#members-a-method-is-a-constant-that-holds-a-closure
language/types/verbs-and-participles.mdVerbs and participlesreferencesort against sorted, and how to name a new pairCONCEPT.md#lexical-structure
language/types/var-paths.mdMutation and var pathsreferenceWhat has to be var from the binding downCONCEPT.md#var-paths-and-var-parameters
language/types/exclusivity.mdExclusivityreferenceWhich two accesses may not overlapCONCEPT.md#var-paths-and-var-parameters
language/types/shared-types.mdShared typesreferenceWhen a value has an identity insteadCONCEPT.md#identity-shared-type
language/types/conversions.mdConversionsreferenceFrom, Into, TryFrom, TryInto, and the four coercionsCONCEPT.md#conversions
language/types/property-commands.mdProperty commandsreferenceWhy a field is written only with =, and what a trailing block on a record field still doesCONCEPT.md#members-a-method-is-a-constant-that-holds-a-closure

Package 5: traits and generics#

PathTitleKindAnswersSource
language/traits/traits.mdTraitsreferenceWhat a trait is and how a type comes with onedone
language/traits/extend.mdextendreferenceAdding members afterwards, with and without a traitCONCEPT.md#traits
language/traits/supertraits.mdSupertraitsreferencetrait Compare with Equals, and what it requiresCONCEPT.md#traits
language/traits/trait-types.mdTraits as typesreferencefn draw(shape: Shape), and what it costsCONCEPT.md#traits
language/traits/intersections.mdTrait intersectionsreferenceShow & Encode as a type and as a boundCONCEPT.md#traits
language/traits/delegation.mdDelegation with byreferencewith Add & Subtract by value, and the one-field ruleCONCEPT.md#distinct-types-opaque-aliases
language/traits/coherence.mdCoherence and blanket implementationsreferenceWhich package may implement whatCONCEPT.md#traits
language/traits/operators.mdOperators are traitsreferenceWhich operator is which methodCONCEPT.md#traits
language/traits/object-safety.mdObject safetyreferenceWhich member cannot be called on a trait-typed valueCONCEPT.md#traits
language/generics/type-parameters.mdType parametersreferenceWhere they are declared, and their namesCONCEPT.md#traits
language/generics/bounds.mdBoundsreferencewhere, inline bounds, and a member's own whereCONCEPT.md#traits
language/generics/inference.mdInferencereferenceWhat is inferred and what has to be writtenCONCEPT.md#key-facts
language/generics/no-higher-kinded-types.mdNo higher-kinded typesreferenceThe shared vocabulary that replaces themCONCEPT.md#one-vocabulary-instead-of-higher-kinded-types
language/generics/witnesses.mdWitness tablesreferenceHow a generic member works on a trait-typed valueCONCEPT.md#traits

Package 6: pattern matching and errors#

PathTitleKindAnswersSource
language/pattern-matching/cases-and-match.mdCases and matchreferenceHow a case is written, and the bare imported casedone
language/pattern-matching/pattern-forms.mdPattern formsreferenceEvery pattern the language has, one per lineCONCEPT.md#algebraic-data-types-and-pattern-matching
language/pattern-matching/exhaustiveness.mdExhaustivenessreferenceWhy every match covers everything, and unreachable armsCONCEPT.md#algebraic-data-types-and-pattern-matching
language/pattern-matching/importing-cases.mdImporting casesreferenceuse Option.Some from "std/core" and what changesCONCEPT.md#modules-and-packages
language/pattern-matching/patterns-in-bindings.mdPatterns in bindings and conditionsreferenceconst Point(x, y) =, if const, while constCONCEPT.md#algebraic-data-types-and-pattern-matching
language/execution/loops.mdLoopsreferencefor, while, loop, break, continue, and why while true is an errorCONCEPT.md#blocks-and-control-flow
language/pattern-matching/if-var.mdif varreferenceBinding into a place instead of into a copyCONCEPT.md#algebraic-data-types-and-pattern-matching
language/errors/result.mdResultreferenceOk, Fail, and the vocabulary on themdone
language/errors/option-chaining.mdOptional chainingreferenceWhat ?. and ?? are, and where they do not applyCONCEPT.md#error-handling
language/errors/question-mark.mdThe question mark operatorreferenceEarly return, and the conversion it doesCONCEPT.md#error-handling
language/errors/the-error-trait.mdThe Error traitreferenceResult<Value, Error>, and cause()std/core/src/error.trb
language/errors/error-types.mdDeclaring an error typereferenceA type with cases, and the generated FromCONCEPT.md#algebraic-data-types-and-pattern-matching
language/errors/panic.mdpanicreferenceWhat is printed, the exit code, and what does not runCONCEPT.md#error-handling
language/errors/top-level-errors.mdErrors at the top levelreferenceWhat a ? in main prints, and the exit codeCONCEPT.md#error-handling

Package 7: collections, iteration, concurrency#

PathTitleKindAnswersSource
language/collections-and-iteration/collection-traits.mdThe collection traitsreferenceWhy the type is a trait and the implementation a nameCONCEPT.md#collections-and-iteration
language/collections-and-iteration/lists.mdListsreferenceThe literal, the implementations, the verb pairsstd/collections/src/list.trb
language/collections-and-iteration/maps-and-sets.mdMaps and setsreferenceThe literals, insertion order, and equalitystd/collections/src/map.trb
language/collections-and-iteration/stacks-and-queues.mdStacks and queuesreferencepush/pop, enqueue/dequeue and their participlesstd/collections/src/queue.trb
language/collections-and-iteration/slices.mdSlicesreferencelist[from..to] as a value and as a pathCONCEPT.md#collections-and-iteration
language/collections-and-iteration/iterating.mdIteratingreferencefor, Iterate, Iterator, and what is evaluated oncestd/iteration/src/iteration.trb
language/collections-and-iteration/pipelines.mdPipelinesreferenceSource, lazy stage, terminal operationCONCEPT.md#pipelines-and-collectors
language/collections-and-iteration/collectors.mdCollectorsreferencecollect, and how to write onestd/iteration/src/collectors.trb
language/concurrency-and-streams/tasks.mdTasksreferenceTask<Value>, await(), and where it is allowedCONCEPT.md#concurrency-draft
language/concurrency-and-streams/channels.mdChannelsreferenceWhat crosses a task boundaryCONCEPT.md#concurrency-draft
language/concurrency-and-streams/streams.mdStreamsreferenceSources, stages and accumulators over timedocs/design/STREAMS.md

The three pages of concurrency-and-streams/ are status: planned until the runtime has them. A planned page carries the planned banner and is left out of the generated skill.

Package 8: modules, reflection, configuration, execution, extensibility#

PathTitleKindAnswersSource
language/modules-and-packages/use.mdusereferenceEvery import form, and what follows fromCONCEPT.md#modules-and-packages
language/modules-and-packages/visibility.mdVisibilityreferenceWhat public means at the top levelCONCEPT.md#visibility-and-encapsulation
language/modules-and-packages/the-prelude.mdThe preludereferenceWhat is in scope everywhere, and what deliberately is notstd/prelude/src/lib.trb
language/modules-and-packages/packages.mdPackagesreferenceowner/name, src/lib.trb, and the dependency rulesCONCEPT.md#packages-and-the-supply-chain
language/modules-and-packages/workspaces.mdWorkspacesreferenceOne root, many projects, one lock fileCONCEPT.md#workspaces
language/modules-and-packages/top-level-code.mdTop-level codereferenceWhich files may have it, and the compile-time constantsCONCEPT.md#modules-and-packages
language/modules-and-packages/cyclic-imports.mdCyclic importsreferenceWhy a cycle is allowed and what it cannot doCONCEPT.md#modules-and-packages
language/reflection/no-reflection.mdThere is no reflectionreferenceWhich bridges between type and value existCONCEPT.md#types-values-and-reflection
language/reflection/encode-and-decode.mdEncode and DecodereferenceThe generated pair that replaces reflectionCONCEPT.md#types-values-and-reflection
language/reflection/encoders.mdEncoder and DecoderreferenceThe four shapes and the six scalarsstd/encoding
language/configuration/receiver-closures.mdReceiver closuresreferenceA closure whose names resolve against a receiverCONCEPT.md#configuration-dsl
language/configuration/builders.mdBuilders and DSLsreferenceHow a configuration block is typedCONCEPT.md#configuration-dsl
language/configuration/receiver-scripts.mdReceiver scriptsreferenceA file as the body of a receiver closureCONCEPT.md#receiver-scripts-and-the-sandbox
language/configuration/the-sandbox.mdThe sandboxreferenceWhat a script may reach, and how it is grantedCONCEPT.md#receiver-scripts-and-the-sandbox
language/execution/evaluation-order.mdEvaluation orderreferenceThe order a reader sees, spelled outCONCEPT.md#execution-model
language/execution/copies.mdWhat a copy costsreferenceWhich shape is copied and which shares storageCONCEPT.md#execution-model
language/execution/tail-calls.mdTail calls and stack overflowreferenceWhat is guaranteed, and when the stack overflowsCONCEPT.md#execution-model
language/execution/destructors.mdDestructors - close() runs at the last release, a binding that holds one ends with its blockreferenceclose() as the destructor, using as a binding, the release orderdocs/design/DESTRUCTORS.md
language/extensibility/control-structures.mdControl structures are functionsreferencedo, unless, retry, using, and how to add oneCONCEPT.md#extensibility
language/extensibility/expression-trees.mdReading code instead of running itreferenceWhat a query provider gets, and what it cannot getCONCEPT.md#quoted-expressions-expressionvalue
language/extensibility/foreign-functions.mdForeign functionsreferenceforeign, the C ABI, and what a sandbox never grantsCONCEPT.md#foreign-functions-draft

Package 9: standard library#

One page per package of std/, each kind: package, each with the Declarations section between the generator markers so that milestone 8's torb doc can fill it.

PathTitleAnswersSource
standard-library/core.mdstd/coreThe bottom of the librarydone
standard-library/text.mdstd/textChar and Stringstd/text/src/lib.trb
standard-library/number.mdstd/numberEvery numeric type and Bitsstd/number
standard-library/collections.mdstd/collectionsThe collection traits and implementationsstd/collections
standard-library/iteration.mdstd/iterationIterate, the stages, the collectorsstd/iteration
standard-library/encoding.mdstd/encodingEncode, Decode, the encodersstd/encoding
standard-library/expression.mdstd/expressionQuotations, assert, nameOfstd/expression
standard-library/task.mdstd/taskTasks and channelsstd/task
standard-library/console.mdstd/consoleprint and printErrorstd/console
standard-library/json.mdstd/jsonJson, JsonValuestd/json
standard-library/time.mdstd/timeDuration, Instant, Clockstd/time
standard-library/fs.mdstd/fsFile and IoErrorstd/fs
standard-library/io.mdstd/ioStandard input and the streamsstd/io
standard-library/process.mdstd/processArguments, exit, running a programstd/process
standard-library/os.mdstd/osThe environment, the system, the well-known directoriesstd/os
standard-library/test.mdstd/testtest, group, assertstd/test
standard-library/http.mdstd/httpRequests and responsesstd/http
standard-library/sandbox.mdstd/sandboxSandbox, Script, the capabilitiesstd/sandbox
standard-library/project.mdstd/projectThe receiver type of project.trbstd/project
standard-library/prelude.mdstd/preludeWhat is in scope everywherestd/prelude
standard-library/stream.mdstd/streamStreams over timestd/stream

Package 10: how-to#

PathTitleAnswersSource
how-to/read-a-file.mdRead a filedonedone
how-to/write-a-configuration-file.mdWrite a configuration filedonedone
how-to/define-an-error-type.mdDefine an error typeOne type with cases that every layer can hand upCONCEPT.md#error-handling
how-to/parse-text-into-a-type.mdParse text into a typeA private field plus TryFrom<String, _>CONCEPT.md#construction
how-to/write-a-test.mdWrite a testtest, group, assert and where the file goesstd/test
how-to/build-a-native-binary.mdBuild a native binarytorb build, the C back end, the output pathcompiler/src/cli/build.trb
how-to/add-a-dependency.mdAdd a dependencyproject.trb, the lock file, the capabilitiesCONCEPT.md#packages-and-the-supply-chain
how-to/use-a-type-as-a-map-key.mdUse a type as a map keyWhich traits have to hold, and which cannotCONCEPT.md#values
how-to/convert-between-types.mdConvert between typesFrom, Into, TryFrom, to<Target>()CONCEPT.md#conversions
how-to/collect-a-pipeline.mdCollect a pipeline into what you needThe terminal operations and the collectorsstd/iteration
how-to/sort-by-more-than-one-key.mdSort by more than one keyA tuple key, and why a type has no generated orderCONCEPT.md#values
how-to/write-a-builder.mdWrite a builderA receiver closure and property commandsCONCEPT.md#configuration-dsl
how-to/read-and-write-json.mdRead and write JSONJson().encode, Json().decode<T>, the naming option, and hand-written pairsstd/json
how-to/set-up-a-workspace.mdSet up a workspaceThe root manifest and the membersCONCEPT.md#workspaces

Package 11: explanation#

Distilled from the Decision Log of CONCEPT.md. Each page takes one decision, gives the argument, and says what a reader has to do differently. These pages matter most for a model: a wrong mental model produces code that compiles and means something else.

PathTitleAnswersSource
explanation/why-values-instead-of-references.mdWhy values instead of referencesdonedone
explanation/mistakes-models-make.mdWhat a model trained on other languages gets wrongdonedone
explanation/why-no-null.mdWhy there is no nullOption, the wrap into Some, and the absence of an implicit unwrapDecision Log
explanation/why-no-exceptions.mdWhy there are no exceptionsResult, ?, and what a panic is forDecision Log
explanation/why-cases-are-never-bare.mdWhy a case is never bareThe import rule, and the trap it closesDecision Log
explanation/why-commands.mdWhy a call is written as a commandThe canon, and what it buysCONCEPT.md#formatter-canon
explanation/why-verbs-and-participles.mdWhy verbs and participlessort against sorted, and the rejected alternativesDecision Log
explanation/why-no-getters.mdWhy there are no propertiesFields, methods, and what () tells a readerDecision Log
explanation/why-dead-changes-are-errors.mdWhy a change that cannot be seen is an errorThe copy trap, and the one rule behind itDecision Log
explanation/why-no-higher-kinded-types.mdWhy there are no higher-kinded typesOne vocabulary, and what it costsDecision Log
explanation/why-no-macros.mdWhy there are no macrosName resolution needs types, and quotations insteadCONCEPT.md#extensibility
explanation/why-no-reflection.mdWhy there is no reflectionTwo back ends, and the generated pair insteadDecision Log
explanation/why-bit-operators-bind-like-arithmetic.mdWhy the bit operators bind like arithmeticBits, the precedence of Go and Swift, and wrapping arithmeticDecision Log
explanation/why-traits-instead-of-inheritance.mdWhy traits instead of inheritanceComposition, delegation, and no base classesDecision Log
explanation/why-one-member-namespace.mdWhy a method is a constantOne namespace, and what property commands needDecision Log
explanation/why-exhaustive-matches.mdWhy every match is exhaustiveA public ADT as a promise, and how to stay free to addDecision Log

Package 12: the contrast pages#

Four pages, each kind: contrast, each titled Coming from <language>. They are the highest-value pages for a model, because the failure is not ignorance but the habits of a language it does know.

PathTitleThe three or four differences that bite
explanation/coming-from-rust.mdComing from Rustdone
explanation/coming-from-swift.mdComing from Swiftlet against const, no mutating, cases are imported not inferred, no protocols with associated types
explanation/coming-from-kotlin.mdComing from KotlinNo nullable types with ?: semantics, val/var against const/var, no data classes, no extension receivers without a type
explanation/coming-from-typescript.mdComing from TypeScriptNo structural typing, no unions of types, no any, no null/undefined, generics are declarative

Package 13: tooling#

PathTitleAnswersSource
tooling/the-torb-command.mdThe torb commanddonedone
tooling/verifying-your-work.mdVerify your workdonedone
tooling/torb-check.mdtorb checkWhat it checks, what the flags docompiler/src/main.trb
tooling/torb-run.mdtorb runRunning a project and a single filecompiler/src/main.trb
tooling/torb-build.mdtorb buildThe C back end, the flags, the outputcompiler/src/cli/build.trb
tooling/torb-test.mdtorb testWhere tests live and how they runstd/test
tooling/torb-canon.mdtorb canonThe deprecated command, and every rule of the canon in one placecompiler/src/canon/command.trb
tooling/project-trb.mdproject.trbEvery field of the manifeststd/project
tooling/project-lock-trb.mdproject.lock.trbWhat is pinned, and who may write itCONCEPT.md#packages-and-the-supply-chain
tooling/torb-doc.mdtorb docDocumentation from doc commentsCONCEPT.md#toolchain
tooling/torb-format.mdtorb formatThe formatter: the canon, then the layoutcompiler/src/format/command.trb
tooling/torb-lint.mdtorb lintThe rules of style, their ids and their fixescompiler/src/lint/command.trb

torb doc is status: planned.

Consequences#

For a writer taking a package:

  1. Read How to write here and the front matter first. They are short and they are the whole contract.
  2. Copy a template from Add a page, and copy the tone from the page marked done in your package. A page written like page 4 is the goal; a page written in a new style is a defect even when it is correct.
  3. Take every fact from the source column. Read the section of CONCEPT.md and the std/ file, and run the example through the toolchain. Never write a snippet from memory.
  4. Create the folder's index.md together with your first page, with a ## What belongs here section that says what does not belong in it.
  5. Add every term your pages use to the glossary, in alphabetical order, at most two sentences.
  6. Run docs index and then docs check, both green, before you are done.
  7. Report what you could not decide. Where CONCEPT.md is silent, ambiguous, or contradicted by the compiler, say so in your report instead of choosing. That list is more valuable than a page that guesses.
Esc