Skip to content
AsHyAmS
Network state observed every site read A snapshot, not live telemetry.

Updateschanged

l3i stable 2.0.2 → 2.0.3

Published by l3i. release migration artifacts

Channel stable

  • changed: stable head 2.0.2 → 2.0.3

stable: Artifacts

  • changed: Artifact crate size 2394884 bytes → 2395447 bytes

Releases

  • added: Release 2.0.3stable, available, dated 2026-10-14 by its publisher

Publisher's notes for 2.0.3 stable

Analysis checks a buffer slice generator as a buffer with the default options, and in the modules a checked module requires.

Fixed

  • A slice generator over a buffer ([for byte in data[1:4] => byte], any[for byte in data[1:n] => byte ~= 0]) is lowered for analysis as a table slice until Luau has inferred its source, then as a buffer. That second step read the types Luau inferred, which a module keeps only with its full type graph, so with retain_full_type_graphs off, the default, every buffer slice generator was checked as a table: Expected type table, got 'buffer' instead and two operator errors at each one. It also ran for the module named in the check only, so a required module's buffer slices were checked as tables whatever the options. A check now keeps each module's type graph, and specializes every module it reaches.

Migration

Nothing to change. A strict package that reported the three errors above at its buffer slice generators reports none.

Known, and not l3i's to fix: under Luau's new solver, a function literal inside an if condition has its returns checked against the declared return type of the function holding the if. A reducer is lowered for analysis to such a literal, so if any[for value in values => value > 2] then inside a function declared to return, say, buffer? reports Expected this to be 'buffer?', but got 'boolean' twice. The code is correct and runs as written. To check clean, bind the reducer to a local before the if: local found = any[...], then if found then.

Written by the publisher and shown verbatim, rendered through a sanitizer.