Skip to content

Releases: luau-lang/luau

0.568

17 Mar 21:23
42a2805
Compare
Choose a tag to compare

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 with runLintChecks option set.
    Resulting lint warning are located inside CheckResult.

  • 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

10 Mar 20:37
1fa8311
Compare
Choose a tag to compare

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

03 Mar 20:38
140e5a1
Compare
Choose a tag to compare

Analysis Changes

Runtime Changes

  • With -O2 optimization level, we now optimize builtin calls based on known argument/return count.
    Note that this change can be observable if getfenv/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

24 Feb 22:09
d2ab5df
Compare
Choose a tag to compare

What's Changed

  • docs: update readme installation guide by @bmg817 in #792
  • Improve stack consumption when typechecking nested method calls
  • Remove redundant jump instructions in code using conditional break and continue statements.

New Contributors

0.564

17 Feb 23:50
b570ff0
Compare
Choose a tag to compare

What's Changed

0.563

10 Feb 21:39
c5089de
Compare
Choose a tag to compare

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

0.562

03 Feb 19:55
c5555c6
Compare
Choose a tag to compare

Language Changes

A new language feature - string interpolation, is now stable and available for use in default configuration.
Read more about it in the announcement.

Analysis Changes

  • Fixed rare use-after-free in analysis during table unification

For extra notes about internal development, you can read #828

0.561

27 Jan 22:54
f763f4c
Compare
Choose a tag to compare

What's Changed

  • Fix a potential debugger crash by adding checks for invalid stack index values

0.560

20 Jan 20:45
4a2e801
Compare
Choose a tag to compare

Autocomplete Changes

  • Additional information is included in Scope for type alias name locations and names of imported modules
  • Improved suggestions in 'for' and 'while' loop headers

Analysis Changes

  • String match functions return types are now optional strings and numbers because match is not guaranteed at runtime

Runtime Changes

  • Fix lua_*upvalue() when upvalue names aren't in debug info by @HaroldCindy in #787

Other Changes

  • Fixed build issue on gcc 11 and up (Fixes #806)

0.559

13 Jan 22:19
a5c6a38
Compare
Choose a tag to compare

Autocomplete Changes

  • Fix autocompletion of if-then-else expressions
  • Pass string content to autocomplete callback by @JohnnyMorganz in #800
  • Attach definition location to TableType by @JohnnyMorganz in #801

Runtime Changes

  • Fix a potential crash surrounding improper use of %* in a string format specifier
  • Improved error handling for string interpolation with too many arguments

Other Changes

  • All Python scripts now invoke Python via python3 rather than python