Skip to content

0.568

Compare
Choose a tag to compare
@github-actions github-actions released this 17 Mar 21:23
42a2805

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