backupRoswaal has moved to roswaal.app. These pages are a backup copy.Go to roswaal.app

0.66.x✎

Lune's standard library, callable.

0.66.x2026-09-16

FeatureChangeBugfixEditorDocs

Lune's standard library, callable.

Releases

  1. 0.66.2Aliases suggest themselves, and Roblox types tell the truth in Lune.New2026-09-16
  2. 0.66.1A node says when it needs attention.New2026-09-16
  3. 0.66.0Lune's standard library, callable.New2026-09-16

Warning

Worth knowing before you upgrade.
  • 0.66.1A warning marks the node only when it is about the node. Most are about where a node sits — "not connected to anything that runs" is true of every node the moment you drop it — and marking those would put a pip on each one while you were still building the graph.
  • 0.66.0A Lune Function node never writes its own require. @lune/fs is Lune's own and always available, which is the strongest case there is for an exception, and it is still not one: a file that quietly gained a require because you dropped a node is a file whose dependencies are not what its author can see.
  • 0.66.0Signatures come from Lune 0.10.5, read out of the type definitions that ship with it. Moving to a new Lune is one command and the diff is the API change.

Added

  • 0.66.2A specifier field offers what the project defines. Every alias a .luaurc above the graph declares, then the runtime's own prefixes — @lune/* for a Lune graph, @self/ and @game/ for a Roblox one — then ./ and ../. A suggestion rather than a gate: anything else is still typed, because the set of things a require can name is still moving.
  • 0.66.2Which aliases are offered depends on where the graph is, since a .luaurc in src/ui defines aliases for src/ui and below. It asks the same function the compiler resolves by, so a field cannot offer a name the compiler would then refuse.
  • 0.66.1A yellow mark in a node's corner when something about it needs looking at — a Lune call whose module nothing requires, where the Inspector has the button that fixes it. The corner the error count already uses, and never both at once: an error is the more urgent of the two and says how many.
  • 0.66.1An unwired Lune call says so too. The compiler refuses an undeclared module, but only for a node it reaches — so one dropped on the canvas and not yet wired said nothing, while the Inspector was already saying it.
  • 0.66.0Files, networking, processes and the rest. All 61 functions of Lune's standard library, as two nodes: Lune Function for a call that does something, Lune Function (Value) for one that answers something. The palette lists every function by name — type readFile and what you get is a node already set to fs.readFile, with its arguments named and typed from Lune's own signature.
  • 0.66.0A page about it, at Lune's standard library: what is in each module, how arguments and results are typed, and which Lune the signatures come from.
  • 0.66.0The Inspector offers the require. A call whose module is not declared says so and gives you a button that declares it — said and offered, never done.

Changed

  • 0.66.0The type picker knows which runtime it is picking for. A Lune graph is offered Lune's own types — DateTime, Regex, WebSocket — instead of Roblox's datatypes and Instance classes. Roblox's come back the moment the graph requires @lune/roblox, because that module genuinely provides them and a require you wrote is the only thing that should make them appear.
  • 0.66.0buffer, thread and nil are offered as types in both runtimes. All three are Luau's and none was on a list written by hand.
  • 0.66.0The Roblox categories say Roblox again, rather than Engine and Engine Types. Unambiguous was easy while there was one engine; a graph compiles for one of two runtimes now. Roblox Corporation owns the name and Roswaal claims no rights in it — see Attributions.

Fixed

  • 0.66.2A Lune graph is no longer offered Roblox datatypes @lune/roblox cannot make. The module implements 27 of them and TweenInfo is not one, so offering the whole group was offering a constructor the runtime has not got. The list is read from the module's own source rather than assumed from the Roblox side.