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

0.85.x✎

The first half of a Luau parser: a lexer.

0.85.x2026-09-23

FeatureChangeBugfixEditor

The first half of a Luau parser: a lexer.

Releases

  1. 0.85.4A refused wire's types are in bold.New2026-09-23
  2. 0.85.3A refused cast names both classes.New2026-09-23
  3. 0.85.2The Players nodes say what they hand back.New2026-09-23
  4. 0.85.1The second half of a Luau parser: the grammar, types included.New2026-09-23
  5. 0.85.0The first half of a Luau parser: a lexer.New2026-09-23

Added

  • 0.85.1A Luau parser on the lexer: statements, expressions with Luau's own precedence, ::, if-expressions, interpolated strings, attributes, and the whole type language — unions, optionals, table types with indexers, function types, generics and packs, typeof. Every node knows where it is in the source, and a mistake is reported where it is and read past, so one does not hide the next. Nothing uses it yet.
  • 0.85.0A Luau lexer that every later reader of hand-written code will share: every token Luau has — long brackets at any level, interpolated strings with holes, 0b and _ numbers, //= and :: — with nothing lost, so the tokens give back the source byte for byte. Nothing uses it yet.

Changed

  • 0.85.4The types in a refused wire's message are bold: "Humanoid cannot be cast to Model due to incompatible classes."
  • 0.85.3A wire refused between two unrelated classes now reads "Humanoid cannot be cast to Model due to incompatible classes."

Fixed

  • 0.85.2Local Player and Get Player From Character hand back a Player, and Local Character a Model, rather than an Instance — so a Get Member on them offers UserId, Character, PrimaryPart and the rest.