0.658
What's Changed
General
- Allow types of tables to diverge after using
table.clone
(fixes #1617). - Allow 2-argument vector.create in Luau.
- Fix a crash when suggesting autocomplete after encountering parsing errors.
- Add lua_tolstringatom C API which returns the string length (whether or not the atom exists) and which extends the existing lua_tostringatom function the same way lua_tolstring/lua_tostring do.
- Luau now retains the DFGs of typechecked modules.
- Fix math.map/math.lerp merge fallout by @zeux in #1621
- Fixup desync between internal and external codebases by @vegorov-rbx in #1622
Magic Functions Migration Note
We've made a change to the API used to define magic functions.
Previously, we had a set of function pointers on each FunctionType
that would be invoked by the type inference engine at the correct point.
The problem we'd run into is that they were all std::function
s, we'd grown quite a few of them, and Luau allocates tens of thousands of types as it performs type inference. This adds up to a large amount of memory for data that isn't used by 99% of types.
To slim things down a bit, we've replaced all of those std::function
s with a single shared_ptr
to a new interface called MagicFunction
. This slims down the memory footprint of each type by about 50 bytes.
The virtual methods of MagicFunction
have roughly 1:1 correspondence with the old interface, so updating things should not be too difficult:
FunctionType::magicFunction
is nowMagicFunction::handleOldSolver
FunctionType::dcrMagicFunction
is nowMagicFunction::infer
FunctionType::dcrMagicRefinement
is nowMagicFunction::refine
FunctionType::dcrMagicTypeCheck
is nowMagicFunction::typeCheck
Full Changelog: 0.657...0.658
Co-authored-by: Andy Friesen [email protected]
Co-authored-by: Ariel Weiss [email protected]
Co-authored-by: Aviral Goel [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]