Releases: luau-lang/luau
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 [email protected]
Co-authored-by: Andy Friesen [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
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 [email protected]
Co-authored-by: Andy Friesen [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
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 [email protected]
Co-authored-by: Jeremy Yoo [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
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 [email protected]
Co-authored-by: Andy Friesen [email protected]
Co-authored-by: Dibri Nsofor [email protected]
Co-authored-by: Jeremy Yoo [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
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 [email protected]
Co-authored-by: Alexander McCord [email protected]
Co-authored-by: Andy Friesen [email protected]
Co-authored-by: Dibri Nsofor [email protected]
Co-authored-by: Jeremy Yoo [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
New Contributors
- @kalrnlo made their first contribution in #1330
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 [email protected]
Co-authored-by: Alexander McCord [email protected]
Co-authored-by: Jeremy Yoo [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
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 [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
New Contributors
Full Changelog: 0.633...0.634
0.633
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 [email protected]
Co-authored-by: Alexander McCord [email protected]
Co-authored-by: Andy Friesen [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
Full Changelog: 0.632...0.633
0.632
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 [email protected]
Co-authored-by: Alexander McCord [email protected]
Co-authored-by: Andy Friesen [email protected]
Co-authored-by: James McNellis [email protected]
Co-authored-by: Jeremy Yoo [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
Full Changelog: 0.631...0.632
0.631
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 fewbit32
methods
Full Changelog: 0.630...0.631