Skip to content

0.603

Compare
Choose a tag to compare
@github-actions github-actions released this 10 Nov 21:22
c2ba105

What's changed?

  • Record the location of properties for table types (closes #802)
  • Implement stricter UTF-8 validations as per the RFC (luau-lang/rfcs#1)
  • Implement buffer as a new type in both the old and new solvers.
  • Changed errors produced by some buffer builtins to be a bit more generic to avoid platform-dependent error messages.
  • Fixed a bug where Unifier would copy some persistent types, tripping some internal assertions.
  • Type checking rules on relational operators is now a little bit more lax.
  • Improve dead code elimination for some if statements with complex always-false conditions

New type solver

  • Dataflow analysis now generates phi nodes on exit of branches.
  • Dataflow analysis avoids producing a new definition for locals or properties that are not owned by that loop.
  • If a function parameter has been constrained to never, report errors at all uses of that parameter within that function.
  • Switch to using the new Luau::Set to replace std::unordered_set to alleviate some poor allocation characteristics which was negatively affecting overall performance.
  • Subtyping can now report many failing reasons instead of just the first one that we happened to find during the test.
  • Subtyping now also report reasons for type pack mismatches.
  • When visiting if statements or expressions, the resulting context are the common terms in both branches.

Native codegen

  • Implement support for buffer builtins to its IR for x64 and A64.
  • Optimized table.insert by not inserting a table barrier if it is fastcalled with a constant.