Skip to content

0.740

Choose a tag to compare

@github-actions github-actions released this 25 Sep 19:22
Immutable release. Only release title and notes can be modified.
c0e346e

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 local is still experimental but is moving closer to a full release.

Analysis

  • Removed Luau::Set, now entirely subsumed by the new DenseHashSet implementation.
  • 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
end

Runtime

  • 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 FORGLOOP lowering by @green-real in #2683
  • Freeze vector metatable in luaL_sandbox if 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


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