About the specification
Technical specification
Roswaal's design as an open standard for visual scripting: the principles first, then each language's profile. Draft 0.1.
InformativeDraft 0.1
This is Roswaal's design written down as a specification: what a graph is, how it is drawn and used, what it means when it runs, and how it is stored, in words another implementation can be held to. Roswaal is the reference implementation, and the specification describes it as it is. Where the two disagree, that is a bug in one of them, and which one is a question for the process.
This is Draft 0.1
Three parts
| Part | What it covers | Chapters |
|---|---|---|
| I · Principles | Everything that is the same in every language: the principles, the abstractions, how a graph is used, how it is drawn, its types, what it means when it runs, and its file format. | 1 Overview · 2 Principles · 3 Abstractions · 4 Interaction · 5 Visual grammar · 6 Types · 7 Execution · 8 Accessibility · 9 File format |
| II · Profiles | What one language adds: its types, its library of nodes, and what each node compiles to. | 10 Writing a profile · 11 Luau for Roblox · 12 Luau for Lune |
| III · Conformance and process | How an implementation shows it follows the specification, and how the specification changes. | 13 Conformance · 14 Process |
Part I never depends on a language. Where it needs an example, the example is Luau's and is marked as coming from the Luau profiles. A new language starts at Writing a profile, and reads Part I first: the principles are what a profile has to keep.
Reading a page
- Normative pages say what an implementation must do. MUST, MUST NOT, SHOULD, SHOULD NOT and MAY mean what RFC 2119 and RFC 8174 say, and only when written in capitals.
- Informative pages explain, give reasons and examples, and require nothing.
- A table that says it is generated is built from Roswaal's own source each time these pages are, so it cannot drift from the editor. The file it comes from is named beside it.
- Sections are numbered, and a number is how one part of the specification refers to another: §5.8 is section 8 of chapter 5.
Versions
The specification has a version of its own, separate from Roswaal's. Draft 0.1 describes Roswaal 0.162, the first release to carry it; how a node is drawn settled the release before. Process says what each version will promise once there is a 1.0.
Where it is published
At spec.roswaal.app, a site of its own that loads nothing of the editor's, and here in Roswaal's documentation, offline in the Docs panel. Both are built from the same pages. On the site, the latest draft is at the root and each draft also keeps an address of its own, such as spec.roswaal.app/0.1/, which does not change once a newer draft is the latest: cite that one.