0.710
Immutable
release. Only release title and notes can be modified.
Hello! Another week with updates to type analysis and fixes in compiler and native code generation.
Breaking C API change: the useratom callback function now has an extra argument for lua_State pointer. If you are using string atom identifiers, add an argument in your handler.
Analysis
- Table types are treated as shape types when normalizing against an extern type. This allows intersections against extern types to provide information on additional properties not declared in an extern type, but present for that particular value:
function take(thing: Instance & { Brushes: Instance })
print(thing)
print(thing.Brushes.Name)
end- Fixed another crash which could happen when auto-complete visits a table with write-only properties
Require library
- During path resolution, we now reset to the requirer's context before
to_alias_overrideis called, enabling embedders to implement context-sensitive alias overrides
Compiler
- In a fast-call fallback sequence,
GETGLOBAL/GETUPVALwill never use extra registers (Fixes #2248)
Native Code Generation
- A counter system has been added which is used by native execution to report regular/fallback block execution and VM side exit statistics. When using
--codegentogether with--countersin Luau REPL,callgrind.outfile is written containing the counter data to view in callgrind/cachegrind tools - Fixed an issue where
setfenvchange could have been ignored, executing fast-paths for longer than is allowed - Stability improvements
Community Contributions
- Pass a state parameter to
useratomby @jackdotink in #2256
Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: Ariel Weiss arielweiss@roblox.com
Co-authored-by: Sora Kanosue skanosue@roblox.com
Co-authored-by: Varun Saini vsaini@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com
Full Changelog: 0.709...0.710