Skip to content

0.707

Choose a tag to compare

@github-actions github-actions released this 30 Jan 21:15
Immutable release. Only release title and notes can be modified.
544d3ff

Hello Luaunators! This release comes with an API change for users of Luau.Require and some nice improvements for the bytecode compiler and native codegen!

Require Library

For users of Luau.Require's RequireNavigator: getRequirerIdentifier and reset have been merged into a single resetToRequirer API. This reflects existing usage, where the identifier returned by getRequirerIdentifier was always immediately passed to reset. The API surface is simpler, and this eliminates the artificial bottleneck of communicating requirer state via a std::string identifier.

Runtime

  • Inlining at bytecode compile time now retains information about builtin symbols, so FASTCALLs can be emitted when appropriate, such as in:
local function tryWithZero(f, x)
    return f(x, 0)
end

return function (n)
    -- If we inline `tryWithZero`, we'll be able to emit a
    -- FASTCALL opcode when compiling the now inlined 
    -- `math.max(n, 0)`
    return tryWithZero(math.max, n)
end
  • NCG: Fixed a crash resulting from partially eliminated dead store instructions: we would incidentally mark a floating point value as a potential pointer into the heap, which could crash during garbage collection.
  • NCG: Add vectorized instruction support for min, max, floor, ceil, and abs
  • NCG: Fixed a crash when constant folding a buffer access using an offset outside the representable range of integers.
  • Add support for constant folding vector component access at bytecode compile time.

Co-authored-by: Andy Friesen afriesen@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