Skip to content

0.738

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Sep 22:07
Immutable release. Only release title and notes can be modified.
c54f558

Hey all!

We've got a bunch of bugfixes and some initial prototypes for upcoming features and experiments.

Analysis

  • Improve type generalization by ensuring that free types are associated with the enclosing function scope, not just the block scope.
  • Prototype code for an upcoming experiment: Requiring top-level functions to be annotated
  • Improve inference of read-only table indexers. Fixes #2669
  • Expose integer types to UDTFs #2618
  • The logic to replace generics by unknown was overly aggressive. This simplification is only valid when the generic occurs exactly once in negative position. This is now fixed.
local function get(model)
    model:Find("leg")
end

-- Previously:
-- (t1) -> () where t1 = { read Find: (t1, string) -> (unknown, ...unknown) }
--
-- Now:
-- <T...>(t1) -> () where t1 = { read Find: (t1, string) -> T... }
  • Retain type function state when cloning type function instances. Fixes #2707 and #2273
  • The linter now properly reports deprecation warnings for deprecated APIs that occur within intersection and union types.
  • Special handling for bidirectional inference of table literals that are passed to setmetatable. eg
type A = setmetatable<{}, { test: DateTime? }>;
local x: A = setmetatable({}, { test = nil })

VM

  • Add initial embedder support for isolated heaps.
  • Fix luaV_equalval passing t1's metatable twice for TOBJECT __eq. See #2727
  • Improvement to the Luau SCCP pass
  • Adjust local debug and type info range after undoEmit
  • Prototype coroutine.finally implementation on the Luau VM side. See luau-lang/rfcs#187
  • Add local names to the Dump_Locals output in the Luau compiler
  • Fix off-by-one bug in BytecodeBuilder::expandJumps
  • Unrolling of loops with a trip count of zero should be zero cost

Native Codegen

  • Fixed incorrect tag propagation to the entry block. This could cause incorrect optimization.

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: Sora Kanosue skanosue@roblox.com
Co-authored-by: Thomas Schollenberger tschollenberger@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