Skip to content

0.663

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 28 Feb 22:49
640ebbc

What's Changed

Hey folks, another week means another Luau release! This one features a number of bug fixes in the New Type Solver including improvements to user-defined type functions and a bunch of work to untangle some of the outstanding issues we've been seeing with constraint solving not completing in real world use. We're also continuing to make progress on crashes and other problems that affect the stability of fragment autocomplete, as we work towards delivering consistent, low-latency autocomplete for any editor environment.

  • Chore: update applicable .lua files to .luau by @Ramdoys in #1560

New Type Solver

  • Fix a bug in user-defined type functions where print would incorrectly insert \1 a number of times.
  • Fix a bug where attempting to refine an optional generic with a type test will cause a false positive type error (fixes #1666)
  • Fix a bug where the refine type family would not skip over *no-refine* discriminants (partial resolution for #1424)
  • Fix a constraint solving bug where recursive function calls would consistently produce cyclic constraints leading to incomplete or inaccurate type inference.
  • Implement readparent and writeparent for class types in user-defined type functions, replacing the incorrectly included parent method.
  • Add initial groundwork (under a debug flag) for eager free type generalization, moving us towards further improvements to constraint solving incomplete errors.

Fragment Autocomplete

  • Ease up some assertions to improve stability of mixed-mode use of the two type solvers (i.e. using Fragment Autocomplete on a type graph originally produced by the old type solver)
  • Resolve a bug with type compatibility checks causing internal compiler errors in autocomplete.

Lexer and Parser

  • Improve the accuracy of the roundtrippable AST parsing mode by correctly placing closing parentheses on type groupings.
  • Add a getter for offset in the Lexer by @aduermael in #1688
  • Add a second entry point to the parser to parse an expression, parseExpr

New Contributors

Full Changelog: 0.662...0.663

Internal Contributors

Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: Ariel Weiss aaronweiss@roblox.com
Co-authored-by: Aviral Goel agoel@roblox.com
Co-authored-by: Hunter Goldstein hgoldstein@roblox.com
Co-authored-by: James McNellis jmcnellis@roblox.com
Co-authored-by: Talha Pathan tpathan@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com