Releases: luau-lang/luau
Releases · luau-lang/luau
0.547
Analysis changes
- Type aliases can no longer override primitive types; attempts to do that will result in a type error
- Fix misleading type error messages for mismatches in expression list length during assignment
- Fix incorrect type name display in certain cases
Runtime changes
setmetatable
/getmetatable
are now ~2x fastertools/perfstat.py
can be used to display statistics about profiles captured via--profile
switch
Community contributions
None this week; PRs are always welcome!
0.546
0.545
Analysis changes
- Improve type error messages for argument count mismatch in certain cases
- Fix type checking variadic returns when the type is incompatible which type checked in certain cases
Runtime changes
- Reduce size of upvalue objects by 8 bytes on 64-bit platforms
- Reduce I$ footprint of interpreter by 1.5 KB by removing support for bytecode v2
- Reduce GC pause during atomic stage for programs with a lot of threads
Community contributions
- Add lua_rawsetfield by @petrihakkinen in #671
0.544
Analysis changes
- Remove type definitions of
utf8.nfcnormalize
/nfdnormalize
/graphemes
that aren't supported by standalone Luau library
Runtime changes
- Add
lua_costatus
to retrieve extended thread status (similar tocoroutine.status
) - Improve GC sweeping performance (2-10% improvement on allocation-heavy benchmarks)
Community contributions
None this week; PRs are always welcome!
0.543
Analysis changes
- Improve type checking stability
- Improve ComparisonPrecedence lint suggestions for three-way comparisons (X < Y < Z)
- Improve location information for errors when parsing invalid type annotations
Runtime changes
- Compiler can no longer be configured to generate bytecode version 2; runtime support for version 2 will be removed in a future release
- Improve performance of comparisons against numeric constants on AArch64
Community contributions
- Fix overloaded metamethod in class definitions by @JohnnyMorganz in #653
0.542
Analysis changes
- Fix DeprecatedGlobal warning text in cases when the global is deprecated without a suggested alternative
- Fix an off-by-one error in type error text for incorrect use of string.format
- Reduce stack consumption further during parsing, hopefully eliminating stack overflows during parsing/compilation
Runtime changes
- Simplify garbage collection treatment of upvalues, reducing cache misses during sweeping stage and reducing the cost of upvalue assignment (SETUPVAL)
- Simplify garbage collection treatment of sleeping and alive threads, reducing cache misses during sweeping stage
- Simplify management of string buffers, removing redundant linked list operations
Community contributions
- Pass environment scope to autocomplete typechecker by @JohnnyMorganz in #610
- String interpolation by @Kampfkarren in #614
Note on interpolated strings
Support for interpolated strings is marked as experimental in this release as the syntax is being validated for compatibility with editors and future proposals; to use it in command-line tools, pass --fflags=LuauInterpolatedStringBaseSupport
to enable it early.
0.541
Analysis changes
- Fix autocomplete not suggesting globals defined after the cursor (fixes #622)
- Improve type checker stability
Runtime changes
- Reduce parser C stack consumption which fixes some stack overflow crashes on deeply nested sources
- Improve performance of
bit32.extract
/replace
when width is implied (~3% faster chess) - Improve performance of
bit32.extract
when field/width are constants (~10% faster base64) - Heap dump now annotates thread stacks with local variable/function names
Community contributions
0.540
Analysis changes
- Add ComparisonPrecedence lint to warn about erroneous use of
not
with comparisons, e.gnot a == b
wherea ~= b
was intended - Several stability and performance improvements in the type checker
Runtime changes
- Bytecode compiler now emits optimized instruction sequences for multiple assignments, accelerating some benchmarks by 10%
- Fix reachability analysis for weak keys/values in heapgraph.py
- Fix CodeGen test failures on big endian architectures
Community contributions
- Add autocomplete context to result by @JohnnyMorganz in #611
0.539
Analysis changes
- Introduce IntegerParsing lint that warns on uses of integer literals that exceed 2^64 (fixes #518)
- Fix minor inconsistencies in synthesized names for types with metatables
Runtime changes
- Comparisons with constants are now significantly faster when using clang as a compiler (10-50% gains on internal benchmarks)
- Luau compiler now emits bytecode with version 3; version 2 is still supported but will be removed in about a month
- When calling non-existent methods on tables or strings, foo:bar now produces a more precise error message (fixes #255)
Community contributions
- Add Ctrl-C handling to the REPL by @jaykru in #537
- Add %* format specifier by @Kampfkarren in #619
0.538
Analysis changes
- Improve autocomplete behavior in certain cases for : calls
Runtime changes
- Fix warnings on Xcode 14 beta due to use of sprintf
- Improve
debug.traceback
performance by 1.15-1.75x depending on the platform - Fix a corner case with table assignment semantics when key didn't exist in the table and
__newindex
was defined: we now use Lua 5.2 semantics and call__newindex
, which results in less wasted space, support for NaN keys in__newindex
path and correct support for frozen tables (see #380, #565)
Community contributions
- Store AstExprFunction in astTypes for stats by @JohnnyMorganz in #612