Releases: luau-lang/luau
0.643
What's Changed
- keyof - fix LUAU_ASSERT when there's only one key entry by @karl-police in #1388
- Add default "out" folder for CMake Project Visual Studio by @karl-police in #1394
- Fix crash with the index type function, where it would stack overflow due to not waiting for a pending-expansion by @karl-police in #1407
New Solver
- We now unconditionally generalize functions with explicit generics
- Bugfixes for how we run builtin tests
VM
- Fixed running Luau conformance tests in LUA_VECTOR_SIZE == 4 configuration
New Contributors
- @karl-police made their first contribution in #1388
Full Changelog: 0.642...0.643
Internal Contributors:
Co-authored-by: Hunter Goldstein hgoldstein@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
0.642
What's Changed
New Solver
- The type functions
keyof
andindex
now also walk the inheritance chain when they are used on class types like Roblox instances.
Full Changelog: 0.641...0.642
0.641
What's new
- Light update this week, mostly fast flag cleanups.
New Solver
- Rename flag to enable new solver from
DebugLuauDeferredConstraintResolution
toLuauSolverV2
- Added support for magic functions for the new type checker (as opposed to the type inference component)
- Improved handling of
string.format
with magic function improvements - Cleaning up some of the reported errors by the new type checker
- Minor refactoring of
TypeChecker2.cpp
that happens to make the diff very hard to read.
Internal Contributors
Co-authored-by: Aaron Weiss aaronweiss@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
0.640
What's Changed
- Fixed many of the false positive errors in indexing of table unions and table intersections
- It is now possible to run custom checks over Luau AST during typechecking by setting
customModuleCheck
inFrontendOptions
- Fixed codegen issue on arm, where number->vector cast could corrupt that number value for the next time it's read
New Solver
error
type now behaves as the bottom type during subtyping checks- Fixed the scope that is used in subtyping with generic types
- Fixed
astOriginalCallTypes
table often used by LSP to match the old solver
Internal Contributors
Co-authored-by: Aaron Weiss aaronweiss@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.639...0.640
0.639
What's Changed
- Fix size of userdata metatable array by @petrihakkinen in #1366
- Make
os.clock
useclock_gettime
on FreeBSD by @Ketasaja in #1364 - Variety of bugfixes in the new solver
- Fix a bug in lua_resume where too many values might be removed from stack when resume throws an error
New Solver
- Fix an issue where we would hit a recursion limit when applying long chains of type refinements.
- Weaken the types of
table.freeze
andtable.clone
in the new solver so we can accept common code patterns likelocal a = table.freeze({x=5, x=0})
at the expense of accepting code liketable.freeze(true)
. - Don't warn when the # operator is used on a value of type never
Full Changelog: 0.638...0.639
Internal Contributors
Co-authored-by: Aaron Weiss aaronweiss@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
0.638
What's Changed
New Solver
- Fix some type inference issues surrounding updates to upvalues eg
local x = 0
function f()
x = x + 1
end
- User-defined type function progress
- Bugfixes for normalization of negated class types. eg
SomeClass & (class & ~SomeClass)
- Fixes to subtyping between tables and the top
table
type.
Internal Contributors
Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: Jeremy Yoo jyoo@roblox.com
Co-authored-by: Vyacheslav Egorov vegorov@roblox.com
Full Changelog: 0.637...0.638
0.637
What's Changed?
- Bug fixes fixes in the new solver
New Solver
- Simplification of two completely disjoint tables combines them into a single table that inherits all properties / indexers
- Refining a
never & <anything>
does not produce type family types nor constraints - Silence "inference failed to complete" error when it is the only error reported
Internal Contributors
Co-authored-by: Aaron Weiss aaronweiss@roblox.com
Co-authored-by: Andy Friesen afriesen@roblox.com
Co-authored-by: Dibri Nsofor dnsofor@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
New Contributors
Full Changelog: 0.636...0.637
0.636
What's Changed?
- Telemetry support for usage of any type in old/new solver
- Bug fixes in the new solver
New Solver
- Fixed constraint ordering bug to infer types more accurately
- Improved inferring a call to
setmetatable()
VM
- Restored global metatable lookup for
typeof
on lightuserdata to fix
unintentional API change (Fixes #1335)
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: Dibri Nsofor dnsofor@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
New Contributors
Full Changelog: 0.635...0.636
0.635
What's Changed?
- Bugfixes in the new solver
- Store
definitionLocation
in ClassType by @JohnnyMorganz in #1313 - Optimizations for UnionFind by @birds3345 in #1334
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
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