Skip to content

Releases: luau-lang/luau

0.547

29 Sep 22:55
937ef2e
Compare
Choose a tag to compare

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 faster
  • tools/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

23 Sep 19:44
59fd9de
Compare
Choose a tag to compare

Runtime changes

  • Add lua_rawiter for faster table iteration from C (~2x faster than lua_next, results in the same iteration order if the table isn't modified during traversal)

Community contributions

0.545

15 Sep 23:46
3d74a8f
Compare
Choose a tag to compare

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

0.544

08 Sep 23:45
ce2c3b3
Compare
Choose a tag to compare

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 to coroutine.status)
  • Improve GC sweeping performance (2-10% improvement on allocation-heavy benchmarks)

Community contributions

None this week; PRs are always welcome!

0.543

01 Sep 23:22
ae35ada
Compare
Choose a tag to compare

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

0.542

25 Aug 23:41
e84bccc
Compare
Choose a tag to compare

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

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

18 Aug 22:10
be2769a
Compare
Choose a tag to compare

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

  • Fix lint.md formatting by @Mactavsin in #637
  • Prevent overflow in lua_newuserdatadtor by @XmiliaH in #639

0.540

11 Aug 21:25
8b390a3
Compare
Choose a tag to compare

Analysis changes

  • Add ComparisonPrecedence lint to warn about erroneous use of not with comparisons, e.g not a == b where a ~= 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

0.539

04 Aug 22:44
1b20fcd
Compare
Choose a tag to compare

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

0.538

29 Jul 04:33
d3b566c
Compare
Choose a tag to compare

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