Skip to content

Releases: luau-lang/luau

0.635

19 Jul 18:32
a7299c3
Compare
Choose a tag to compare

What's Changed?

New Solver

  • Equality graphs(E-Graphs) data structures were added
  • Refactored even more instances of "type family" with "type function"
  • table.insert no longer spuriously warns while selecting an overload for reasonable arguments.
  • Add time tracing for the new solver
  • Miscellaneous fixes to unit tests

Internal Contributors

Co-authored-by: Aaron Weiss aaronweiss@roblox.com
Co-authored-by: Alexander McCord amccord@roblox.com
Co-authored-by: Jeremy Yoo jyoo@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com


Full Changelog: 0.634...0.635

0.634

12 Jul 17:13
b6b74b4
Compare
Choose a tag to compare

What's Changed?

  • Performance improvement in the old solver
  • Bugfixes in the new solver
  • Keep commentLocations on SourceModule for definition files by @JohnnyMorganz in #1314
  • Fix incorrect comment in Bytecode.h by @mttsner in #1315

Old Solver

  • Mark types that do not need instantiation when being exported to
    prevent unnecessary work from being done

New Solver

  • Index-out-of-bounds bug fix in the resolution resolver
  • Subtyping reasonings are merged only if all failed

Internal Contributors

Co-authored-by: Aaron Weiss aaronweiss@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com

New Contributors


Full Changelog: 0.633...0.634

0.633

08 Jul 22:01
a7be4fc
Compare
Choose a tag to compare

What's Changed?

  • Mostly stability and bugfixes with the new solver.

New Solver

  • Typechecking with the new solver should respect the no-check hot comment.
  • Record type alias locations and property locations of table assignments
  • Maintain location information for exported table types
  • Stability fixes for normalization
  • Report internal constraint solver errors.

Internal Contributors

Co-authored-by: Aaron Weiss aaronweiss@roblox.com
Co-authored-by: Alexander McCord amccord@roblox.com
Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com


Full Changelog: 0.632...0.633

0.632

29 Jun 00:38
0d26888
Compare
Choose a tag to compare

What's Changed?

  • Fix #1137 by appropriately retaining additional metadata from definition files throughout the type system.
  • Improve Frontend for LSPs by appropriately allowing the cancellation of typechecking while running its destructor.

New Solver

  • Added support for the rawget type function.
  • Reduced overall static memory usage of builtin type functions.
  • Fixed a crash where visitors could mutate a union or intersection type and fail to invalidate iteration over them in doing so.
  • Revised autocomplete functionality to not rely on a separate run of the type solver when using the new solver.
  • Implemented a more relaxed semantic rule for casting.
  • Fixed some smaller crashes in the new solver.

Native Code Generation

  • Add additional codegen specialization for math.sign
  • Cleaned up a large number of outstanding fflags in the code.

Internal Contributors

Co-authored-by: Aaron Weiss aaronweiss@roblox.com
Co-authored-by: Alexander McCord amccord@roblox.com
Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: James McNellis jmcnellis@roblox.com
Co-authored-by: Jeremy Yoo jyoo@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com


Full Changelog: 0.631...0.632

0.631

20 Jun 23:47
caee04d
Compare
Choose a tag to compare

What's new

  • Added lint warning for using redundant @native attributes on functions inside a --!native module
  • Improved typechecking speed in old solver for modules with large types

New Solver

  • Fixed the length type function sealing the table prematurely
  • Fixed crashes caused by general table indexing expressions

VM

  • Added support for a specialized 3-argument fast-call instruction to improve performance of vector constructor, buffer writes and a few bit32 methods

Full Changelog: 0.630...0.631

0.630

14 Jun 20:38
7d40330
Compare
Choose a tag to compare

What's new

  • A bug in exception handling in GCC(11/12/13) on MacOS prevents our test suite from running.
  • Parser now supports leading | or & when declaring Union and Intersection types (#1286)
  • We now support parsing of attributes on functions as described in the rfc
    • With this change, expressions such as local x = @native function(x) return x+1 end and f(@native function(x) return x+1 end) are now
      valid.
  • Added support for @native attribute - we can now force native compilation of individual functions if the @native attribute is specified before the function keyword (works for lambdas too).

New Solver

  • Many fixes in the new solver for crashes and instability
  • Refinements now use simplification and not normalization in a specific case of two tables
  • Assume that compound assignments do not change the type of the left-side operand
  • Fix error that prevented Class Methods from being overloaded

VM

  • Updated description of Garbage Collector invariant

Internal Contributors

Co-authored-by: Aaron Weiss aaronweiss@roblox.com
Co-authored-by: Alexander McCord amccord@roblox.com
Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: Aviral Goel agoel@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com


Full Changelog: 0.629...0.630

0.629

07 Jun 17:56
0fa6a51
Compare
Choose a tag to compare

What's Changed

  • Fix edge case in 'findBindingAtPosition' when looking up global binding at start of file by @JohnnyMorganz in #1254
  • implement leading bar and ampersand in types by @jackdotink in #1286
  • Fix incorrect comment in lgc.h by @zeux in #1288
  • tests: Adjust conformance tests to account for array invariant by @zeux in #1289
  • Implemented parsing logic for attributes
  • Added lua_setuserdatametatable and lua_getuserdatametatable C API methods for a faster userdata metatable fetch compared to luaL_getmetatable. Note that metatable reference has to still be pinned in memory!

New Solver

  • Further improvement to the assignment inference logic
  • Fix many bugs surrounding constraint dispatch order

Native Codegen

  • Add IR lowering hooks for custom host userdata types
  • Add IR to create new tagged userdata objects
  • Remove outdated NativeState

Internal Contributors

Co-authored-by: Aaron Weiss aaronweiss@roblox.com
Co-authored-by: Alexander McCord amccord@roblox.com
Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: Aviral Goel agoel@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com

New Contributors

Full Changelog: 0.628...0.629

0.628

31 May 19:25
daf7932
Compare
Choose a tag to compare

What's new?

  • Remove a case of unsound table.move optimization
  • Add Luau stack slot reservations that were missing in REPL (fixes #1273)

New Type Solver

  • Assignments have been completely reworked to fix a case of cyclic constraint dependency
  • When indexing, if the fresh type's upper bound already contains a compatible indexer, do not add another upper bound
  • Distribute type arguments over all type families sans eq, keyof, rawkeyof, and other internal type families
  • Fix a case where buffers component weren't read in two places (fixes #1267)
  • Fix a case where things that constitutes a strong ref were slightly incorrect
  • Fix a case where constraint dependencies weren't setup wrt for ... in statement

Native Codegen

  • Fix an optimization that splits TValue store only when its value and its tag are compatible
  • Implement a system to plug additional type information for custom host userdata types

Internal Contributors

Co-authored-by: Aaron Weiss aaronweiss@roblox.com
Co-authored-by: Alexander McCord amccord@roblox.com
Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com


Full Changelog: 0.627...0.628

0.627

26 May 17:13
c8fe77c
Compare
Choose a tag to compare

What's new?

New Type Solver

  • Improved error messages for type families to describe what's wrong in more detail, and ideally without using the term type family at all.
  • Change boolean and string singletons in type checking to report errors to the user when they've gotten an impossible type (indicating a type error from their context).
  • Split debugging flags for type family reduction (DebugLuauLogTypeFamilies) from general solver logging (DebugLuauLogSolver).
  • Improve type simplification to support patterns like (number | string) | (string | number) becoming number | string.

Native Code Generation

  • Use templated luaV_doarith to speedup vector operation fallbacks.
  • Various small changes to better support arm64 on Windows.

Internal Contributors

Co-authored-by: Aaron Weiss aaronweiss@roblox.com
Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: James McNellis jmcnellis@roblox.com
Co-authored-by: Vighnesh Vijay vvijay@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com


Full Changelog: 0.626...0.627

0.626

16 May 23:41
fe0a819
Compare
Choose a tag to compare

What's changed?

New Type Solver

  • Fixed crash in numeric binary operation type families
  • Results of an indexing operation are now comparable to nil without a false positive error
  • Fixed a crash when a type that failed normalization was accessed
  • Iterating on a free value now implies that it is iterable

Full Changelog: 0.625...0.626