Skip to content

0.658

Compare
Choose a tag to compare
@github-actions github-actions released this 24 Jan 20:22
c13b5b7

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::functions, 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::functions 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 now MagicFunction::handleOldSolver
  • FunctionType::dcrMagicFunction is now MagicFunction::infer
  • FunctionType::dcrMagicRefinement is now MagicFunction::refine
  • FunctionType::dcrMagicTypeCheck is now MagicFunction::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]