You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We skipped the release last week, but we're back today with some new
additions to the VM and Native Code Generation (and as always,
improvements to typechecking).
## Analysis
- Fixed some instances of "unreduced table types" like { x: number } | {
x: number }, especially for data-like arrays (extremely large tables
that have the same element of a given type).
```luau
-- Prior, hovering would claim `t: {{number} | {number}}`, and now
-- we will claim it is a `{{number}}`
local t = {
{1, 2, 3},
{4, 5, 6}
}
```
- Fixed a bug where user defined type function could crash if passed too
many arguments.
- Enables autocomplete to use type information for function arguments to
suggest results when those types are variadic. For example:
```luau
local function foo(...: "Val1") end
foo(@1)
```
will now suggest "Val1"
- Partially annotated local statements with type packs on the
right-hand-side (see example) are now correctly inferred. Prior, we
mishandled this case in a way that caused subsequent assignments to
assume the first element of the type pack corresponded to the first
unannotated element:
```luau
local function foo(): (number, boolean, string)
return 1, true "three"
end
-- Prior to this fix, we inferred that `y: number` for this statement ...
local x: number, y, z: string = foo()
-- ... similarly, this would have inferred `z: number` ...
local x: number, y: boolean, z = foo()
-- ... and this would have inferred `y: number` and `z: boolean`
local x: number, y, z = foo()
```
## VM
- Fix a use-after-free in `table.find`.
## Native Code Generation
- Fix a bug in NCG caused by using an incorrect operand in a buffer
length check.
- NCG now unmaps executable pages when functions are garbage-collected.
- Provide a native implementation for `math.isnan`
---
Co-authored-by: Hunter Goldstein <hgoldstein@roblox.com>
Co-authored-by: Ilya Rezvov <irezvov@roblox.com>
Co-authored-by: Sora Kanosue <skanosue@roblox.com>
Co-authored-by: Varun Saini <vsaini@roblox.com>
Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com>
---------
Co-authored-by: Hunter Goldstein <hgoldstein@roblox.com>
Co-authored-by: Varun Saini <61795485+vrn-sn@users.noreply.github.com>
Co-authored-by: Alexander Youngblood <ayoungblood@roblox.com>
Co-authored-by: Menarul Alam <malam@roblox.com>
Co-authored-by: Aviral Goel <agoel@roblox.com>
Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com>
Co-authored-by: Ariel Weiss <aaronweiss@roblox.com>
Co-authored-by: Andy Friesen <afriesen@roblox.com>
Co-authored-by: Ilya Rezvov <irezvov@roblox.com>
Co-authored-by: Ariel Weiss <arielweiss@roblox.com>
Co-authored-by: Sora Kanosue <skanosue@roblox.com>
Co-authored-by: Varun Saini <vsaini@roblox.com>
0 commit comments