Releases: luau-lang/luau
0.572
Analysis Changes
- Fixed exported types not being suggested in autocomplete
T...
is now convertible to...any
#767- Fixed issue with
T?
not being convertible toT | T
orT?
(sometimes when internal pointer identity is different) - Fixed potential crash in missing table key error suggestion to use a similar existing key
API changes
- Add lua_getuserdatadtor by @petrihakkinen in #870
lua_topointer
now returns a pointer for strings
For extra notes about internal development, you can read #899
0.571
What's Changed
table.sort
was improved further. It now guarentees N*log(N) time complexity in the worst case.- Fix #880
Full Changelog: 0.570...0.571
0.570
What's Changed
- Sync to upstream/release/570 by @vegorov-rbx in #885
0.569
- Sync to upstream/release/569 by @andyfriesen in #878
0.568
Analysis Changes
- A small subset of control-flow refinements have been added to recognize type options that are unreachable after a conditional/unconditional code block. (Fixes #356).
Some examples:
local function f(x: string?)
if not x then return end
-- x is 'string' here
end
Throwing calls like error
or assert(false)
instead of 'return' are also recognized.
Existing complex refinements like type/typeof and tagged union checks are expected to work, among others.
To enable this feature, LuauTinyControlFlowAnalysis
exclusion has to be removed from ExperimentalFlags.h
.
If will become enabled unconditionally in the future.
-
Linter has been integrated into the typechecker analysis so that type-aware lint warnings can work in any mode
Frontend::lint
methods were deprecated,Frontend::check
has to be used instead withrunLintChecks
option set.
Resulting lint warning are located insideCheckResult
. -
Part of Type error suppression RFC was implemented making subtyping checks with
any
type transitive.
Runtime Changes
- Fixed large performance drop and increased memory consumption when array is filled at an offset (Fixes #590)
For extra notes about internal development, you can read #865
0.567
What's Changed
- Fixed lerp() duplicate when compiling for C++20 by @niansa in #851
- Fixed LUAU_ASSERT failure in luaG_getline if called from lua_Alloc #850
- Recover AST of a declarations file #817
- Optimize math.floor/ceil/round with SSE4.1
- Results in a ~7-9% speedup on the math-cordic benchmark.
- Optimized table.sort.
- table.sort is now ~4.1x faster (when not using a predicate) and ~2.1x faster when using a simple predicate. Performance may improve further in the future.
- Reorganize the memory ownership of builtin type definitions.
- This is a small initial step toward affording parallel typechecking.
New Contributors
Full Changelog: 0.566...0.567
0.566
Analysis Changes
- DeprecatedApi lint can report some issues without type inference information
- Marked
table.getn
/foreach
/foreachi
as deprecated (RFC: Deprecate table.getn/foreach/foreachi)
Runtime Changes
- With -O2 optimization level, we now optimize builtin calls based on known argument/return count.
Note that this change can be observable ifgetfenv/setfenv
is used to substitute a builtin, especially if arity is different.
Fastcall heavy tests show a 1-2% improvement.
Other changes
- Fixed incorrect lexeme generated for string parts in the middle of an interpolated string (Fixes #744)
- Luau can now be built with clang-cl (Fixes #736)
- Fixed performance of autocomplete requests when suggestions have large intersection types (Solves https://github.com/Roblox/luau/discussions/847)
For extra notes about internal development, you can read #853
0.565
0.564
What's Changed
- Sync to upstream/release/564 by @vegorov-rbx in #841
0.563
What's Changed
- Fix comments on jump instructions with AUX by @EpixScripts in #808
- Fix a bug where reading a property from an unsealed table caused inference to improperly infer the existence of that property.
- Fix unknown global cannot be identified when using type and typeof #827
New Contributors
- @EpixScripts made their first contribution in #808