0.589
Analysis Changes
- Progress toward a diffing algorithm for types. We hope that this will be useful for writing clearer error messages.
- Add a missing recursion limiter in
Unifier::tryUnifyTables
. This was causing a crash in certain situations.
Runtime Changes
- Luau heap graph enumeration improvements:
- Weak references are not reported
- Added tag as a fallback name of non-string table links
- Included top Luau function information in thread name to understand where thread might be suspended
- Constant folding for
math.pi
andmath.huge
at -O2 - Optimize
string.format
and%*
- This change makes string interpolation 1.5x-2x faster depending on the number and type of formatted components, assuming a few are using primitive types, and reduces associated GC pressure.
Other changes
New type checker
- Initial work toward tracking the upper and lower bounds of types accurately.
Native code generation (JIT)
- Add IrCmd::CHECK_TRUTHY for improved assert fast-calls
- Do not compute type map for modules without types
- Capture metatable+readonly state for NEW_TABLE IR instructions
- Replace JUMP_CMP_ANY with CMP_ANY and existing JUMP_EQ_INT
- Add support for exits to VM with reentry lock in VmExit
New Contributors
Full Changelog: 0.588...0.589