What's Changed?
This release introduces numerous improvements to the new solver's non-strict mode that should begin to make it more useful - we warn on Unknown Symbols and correctly visit the whole program now. We've also fixed a number of bugs in the new solver as well as made progress on the new round-trippable AST.
Roundtrippable AST
- Add a new
AstNode
,AstGenericType
- Retain source information for
AstExprTypeAssertion
New Type Solver
- New non-strict mode will report unknown symbol errors, e.g
foo = 5
local wrong1 = foob <- issue warning
- Fixed a bug where new non-strict mode failed to visit large parts of the program.
- We now infer the types of unnanotated local variables in statements with multiple assignments, e.g.
local x: "a", y, z = "a", f()
- Fixed bugs in constraint dispatch ordering.
- Fixed a bug that caused an infinite loop between
Subtyping
,OverloadResolution
, andType Function Reduction
, by preventing calls toType Function Reduction
being re-entrant. - Fixed a crash in bidirectional type inference caused by asserting read and write properties on a type that was readonly.
Runtime
- Fix a stack overflow caused by
luaL_checkstack
consuming stack space even if the function fails to reserve memory. - Using '%c' with a 0 value in Luau string.format will append a '\0'. Resolves #1650
Full Changelog: 0.660...0.661
Co-authored-by: Ariel Weiss [email protected]
Co-authored-by: Hunter Goldstein [email protected]
Co-authored-by: Talha Pathan [email protected]
Co-authored-by: Varun Saini [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]