Repository navigation
0.740
Immutable
release. Only release title and notes can be modified.
Language
- Introducing an experimental feature to make tables "exact" by default. See luau-lang/rfcs#11 for full details, but the gist is to differentiate between tables that may have extraneous fields and tables that do not. We believe that this behavior better aligns with user expectations, and allows us to make the type system more predictable.
-- This table may have extra fields
type Inexact = { x: number, y: number, ... }
-- This table _does not_ have extra fields
type Exact = { x: number, y: number }
local _: Inexact = { x = 3, y = 4, foo = "spooky" } -- OK!
local _: Exact = { x = 3, y = 4, foo = "spooky" } -- Not OK!if localis still experimental but is moving closer to a full release.
Analysis
- Removed
Luau::Set, now entirely subsumed by the newDenseHashSetimplementation. - Fixed an internal error that could occur when processing exceptionally large types ("Internal recursion counter limit exceeded in ReferenceCountInitializer").
- Fixed a bug in function normalization that meant we'd use argument types as return types:
function g(x : (() -> string | number) & (() -> number | boolean))
local z : () -> () = x -- This should not be allowed
endRuntime
- Fixed an issue where OOMing during table re-hashing or freezing could leave the underlying table in an unexpected state.
- When dumping bytecode, upvalues are now prefixed with
U - Fixed
integer.idiv(x, y)not being floored in some configurations, resulting in differing behavior across the interpreter, NCG backends, and constant folding. - Add array iteration fast-path to A64
FORGLOOPlowering by @green-real in #2683 - Freeze
vectormetatable inluaL_sandboxif it is set by @PhoenixWhitefire in #2583 - Fix optional tagged userdata types not being remapped at load time by @green-real in #2699
- Optimize string.split by @gemtool in #2981
- Fix x64 regalloc converting a stack spill on reload by @green-real in #2987
Etc.
- Add CMake options for four-wide and double-precision vectors. by @xCynDev in #2622
- Fix missing direct includes by @Aesthete in #2687
- Fix CMake configuration when tests are disabled on MSVC by @mrcjkb in #2980
New Contributors
- @xCynDev made their first contribution in #2622
- @Aesthete made their first contribution in #2687
- @mrcjkb made their first contribution in #2980
- @gemtool made their first contribution in #2981
Co-authored-by: Andreas Haeberlen andreas.haeberlen@roblox.com
Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: Annie Tang annietang@roblox.com
Co-authored-by: Ariel Weiss arielweiss@roblox.com
Co-authored-by: Hunter Goldstein hgoldstein@roblox.com
Co-authored-by: Ilya Rezvov irezvov@roblox.com
Co-authored-by: Sora Kanosue skanosue@roblox.com
Co-authored-by: Thomas Schollenberger tschollenberger@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com
Full Changelog: 0.739...0.740