luau/VM/src
Vighnesh-V a2303a6ae6
Sync to upstream/release/670 (#1779)
# General 
This week has been focused primarily on bugfixes, with a ton of
usability improvements to the new solver, fragment autocomplete, and the
concrete syntax tree project.

## Runtime
- Fix an assertion caused by failing to allocate native code pages.
- Expose a `lua_pushrequire` function, which performs the same
initialization steps as `luaopen_require` but does not register require
globally. This lets users create specialized, custom `requires`.

# New Solver
- Fix a bug in simplification of types caused by combinatorial explosion
of intersection and union types.
- Fix a memory leak in fragment autocomplete
- Improve the isolation of modules in fragment autocomplete
- Throw errors when users define a type function with the name `typeof`
- Continue to narrow intersection types which might be `never`.
- Major rework of generalization continues - we are blazing a new path
with eager + non-reentrant generalization and actively working to make
these more performant and less error prone.
- Improve the ability of `and/or` type functions to reduce, even when
their arguments are generic.
- Report arity mismatches for undersaturated calls with unknown
parameters

# New Non-Strict
- Extends the new non-strict mode to report unknown symbols in types 

# Old Solver
- Fix a crash caused by excessive stack usage during typechecking

# Misc
- Improvements to Concrete Syntax Tree location tracking for string
table props.

---
Co-authored-by: Andy Friesen <afriesen@roblox.com>
Co-authored-by: Ariel Weiss <aaronweiss@roblox.com>
Co-authored-by: Aviral Goel <agoel@roblox.com>
Co-authored-by: Hunter Goldstein <hgoldstein@roblox.com>
Co-authored-by: Sora Kanosue <skanosue@roblox.com>
Co-authored-by: Talha Pathan <tpathan@roblox.com>
Co-authored-by: Varun Saini <vsaini@roblox.com>
Co-authored-by: Vighnesh Vijay <vvijay@roblox.com>
Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com>
2025-04-18 13:44:39 -07:00
..
lapi.cpp Sync to upstream/release/665 (#1732) 2025-03-14 13:11:24 -07:00
lapi.h Sync to upstream/release/501 (#20) 2021-11-01 14:52:34 -07:00
laux.cpp Sync to upstream/release/661 (#1664) 2025-02-14 13:57:46 -08:00
lbaselib.cpp Sync to upstream/release/539 (#625) 2022-08-04 15:35:33 -07:00
lbitlib.cpp Sync to upstream/release/637 (#1354) 2024-08-02 07:30:04 -07:00
lbuffer.cpp Sync to upstream/release/600 (#1076) 2023-10-20 18:10:30 -07:00
lbuffer.h Sync to upstream/release/600 (#1076) 2023-10-20 18:10:30 -07:00
lbuflib.cpp Sync to upstream/release/663 (#1699) 2025-02-28 14:42:30 -08:00
lbuiltins.cpp Sync to upstream/release/663 (#1699) 2025-02-28 14:42:30 -08:00
lbuiltins.h Sync to upstream/release/551 (#727) 2022-10-28 03:37:29 -07:00
lbytecode.h Sync to upstream/release/529 (#505) 2022-05-26 15:08:16 -07:00
lcommon.h Sync to upstream/release/539 (#625) 2022-08-04 15:35:33 -07:00
lcorolib.cpp Sync to upstream/release/669 (#1770) 2025-04-11 17:44:21 -07:00
ldblib.cpp Sync to upstream/release/659 (#1637) 2025-01-31 18:58:36 -08:00
ldebug.cpp Sync to upstream/release/658 (#1625) 2025-01-24 12:15:19 -08:00
ldebug.h Sync to upstream/release/658 (#1625) 2025-01-24 12:15:19 -08:00
ldo.cpp Sync to upstream/release/670 (#1779) 2025-04-18 13:44:39 -07:00
ldo.h Sync to upstream/release/656 (#1612) 2025-01-10 11:34:39 -08:00
lfunc.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
lfunc.h Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
lgc.cpp Sync to upstream/release/668 (#1760) 2025-04-04 14:11:51 -07:00
lgc.h Sync to upstream/release/668 (#1760) 2025-04-04 14:11:51 -07:00
lgcdebug.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
linit.cpp Sync to upstream/release/650 (#1502) 2024-11-01 12:06:07 -07:00
lmathlib.cpp Sync to upstream/release/663 (#1699) 2025-02-28 14:42:30 -08:00
lmem.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
lmem.h Sync to upstream/release/622 (#1232) 2024-04-19 14:48:02 -07:00
lnumprint.cpp Sync to upstream/release/615 (#1175) 2024-03-01 10:45:26 -08:00
lnumutils.h Sync to upstream/release/650 (#1502) 2024-11-01 12:06:07 -07:00
lobject.cpp Sync to upstream/release/652 (#1525) 2024-11-15 14:29:30 -08:00
lobject.h Sync to upstream/release/670 (#1779) 2025-04-18 13:44:39 -07:00
loslib.cpp Sync to upstream/release/603 (#1097) 2023-11-10 13:10:07 -08:00
lperf.cpp Make os.clock use clock_gettime on FreeBSD (#1364) 2024-08-14 08:31:59 -07:00
lstate.cpp Sync to upstream/release/656 (#1612) 2025-01-10 11:34:39 -08:00
lstate.h Sync to upstream/release/670 (#1779) 2025-04-18 13:44:39 -07:00
lstring.cpp Sync to upstream/release/611 (#1160) 2024-02-02 13:32:42 -08:00
lstring.h Sync to upstream/release/539 (#625) 2022-08-04 15:35:33 -07:00
lstrlib.cpp Sync to upstream/release/661 (#1664) 2025-02-14 13:57:46 -08:00
ltable.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
ltable.h Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
ltablib.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
ltm.cpp Sync to upstream/release/670 (#1779) 2025-04-18 13:44:39 -07:00
ltm.h Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
ludata.cpp Add lua_getuserdatadtor (#870) 2023-04-11 12:46:55 -07:00
ludata.h Sync to upstream/release/539 (#625) 2022-08-04 15:35:33 -07:00
lutf8lib.cpp Sync to upstream/release/637 (#1354) 2024-08-02 07:30:04 -07:00
lveclib.cpp Sync to upstream/release/663 (#1699) 2025-02-28 14:42:30 -08:00
lvm.h Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
lvmexecute.cpp Sync to upstream/release/669 (#1770) 2025-04-11 17:44:21 -07:00
lvmload.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
lvmutils.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00