Releases: luau-lang/luau
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
0.630
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 declaringUnion
andIntersection
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
andf(@native function(x) return x+1 end)
are now
valid.
- With this change, expressions such as
- Added support for
@native
attribute - we can now force native compilation of individual functions if the@native
attribute is specified before thefunction
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 [email protected]
Co-authored-by: Alexander McCord [email protected]
Co-authored-by: Andy Friesen [email protected]
Co-authored-by: Aviral Goel [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
Full Changelog: 0.629...0.630
0.629
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
andlua_getuserdatametatable
C API methods for a faster userdata metatable fetch compared toluaL_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 [email protected]
Co-authored-by: Alexander McCord [email protected]
Co-authored-by: Andy Friesen [email protected]
Co-authored-by: Aviral Goel [email protected]
Co-authored-by: Vighnesh Vijay [email protected]
Co-authored-by: Vyacheslav Egorov [email protected]
New Contributors
- @jackdotink made their first contribution in #1286
Full Changelog: 0.628...0.629