Skip to the text
RoswaalTechnical specification
Draft 0.1 · frozen
Try Roswaal

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

Anything here can still change, and nothing is promised until version 1.0. It is published so it can be read and argued with while the design settles, not so it can be built against as though it were fixed.

Three parts

PartWhat it coversChapters
I · PrinciplesEverything 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 · ProfilesWhat 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 processHow 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.