What's Changed
This release introduces initial work on a Roundtrippable AST for Luau, and numerous fixes to the new type solver, runtime, and fragment autocomplete.
Roundtrippable AST
To support tooling around source code transformations, we are extending the parser to retain source information so that we can re-emit the initial source code exactly as the author wrote it. We have made numerous changes to the Transpiler, added new AST types such as AstTypeGroup
, and added source information to AST nodes such as AstExprInterpString
, AstExprIfElse
, AstTypeTable
, AstTypeReference
, AstTypeSingletonString
, and AstTypeTypeof
.
New Type Solver
- Implement
setmetatable
andgetmetatable
type functions. - Fix handling of nested and recursive union type functions to prevent the solver from getting stuck.
- Free types in both old and new solver now have an upper and lower bound to resolve mixed mode usage of the solvers in fragment autocomplete.
- Fix infinite recursion during normalization of cyclic tables.
- Add normalization support for intersections of subclasses with negated superclasses.
Runtime
- Fix compilation error in Luau buffer bit operations for big-endian machines.
Miscellaneous
- Add test and bugfixes to fragment autocomplete.
- Fixed
clang-tidy
warnings inSimplify.cpp
.
Full Changelog: 0.659...0.660
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]