luau/VM/src
vegorov-rbx 68cdcc4a3a
Sync to upstream/release/677 (#1872)
# What's Changed?

This week comes with many improvements to the new type solver and an important fix to the garbage collection to make it more robust in memory constrained scenarios.

# Runtime
- Garbage collection will no longer run out of memory itself, which could have happened when resizing arrays to a smaller size

# New Type Solver
- Type refinements on external types should now work and should no longer normalize the type into `never`
- Improved error reporting when `string.format` is used with a dynamic format string
- Updated type signature of `getmetatable` library function to use the corresponding type function and produce better type inference
- Restored a type mismatch error when converting function types with different number of generic parameters, like `() -> ()` into `<T>() -> ()`
- Types resulting from compound assignments have been simplified, reducing cyclic type introduction and inference failures
- Fixed function generic types leaking into tables during bidirectional type inference (Fixes #1808 and #1821 )
- Stability and performance improvements (Fixes #1860 )

# Internal Contributors

Co-authored-by: Andy Friesen <afriesen@roblox.com>
Co-authored-by: Ariel Weiss <aaronweiss@roblox.com>
Co-authored-by: Hunter Goldstein <hgoldstein@roblox.com>
Co-authored-by: Sora Kanosue <skanosue@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-06-06 11:52:47 -07:00
..
lapi.cpp Sync to upstream/release/676 (#1856) 2025-05-30 11:17:49 -07:00
lapi.h Sync to upstream/release/501 (#20) 2021-11-01 14:52:34 -07:00
laux.cpp Sync to upstream/release/673 (#1812) 2025-05-09 16:35:47 -07:00
lbaselib.cpp Sync to upstream/release/671 (#1787) 2025-04-25 14:19:27 -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/674 (#1832) 2025-05-16 12:39:58 -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/674 (#1832) 2025-05-16 12:39:58 -07:00
ldebug.h Sync to upstream/release/674 (#1832) 2025-05-16 12:39:58 -07:00
ldo.cpp Sync to upstream/release/671 (#1787) 2025-04-25 14:19:27 -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/677 (#1872) 2025-06-06 11:52:47 -07:00
lgc.h Sync to upstream/release/668 (#1760) 2025-04-04 14:11:51 -07:00
lgcdebug.cpp Sync to upstream/release/675 (#1845) 2025-05-27 14:24:46 -07: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/674 (#1832) 2025-05-16 12:39:58 -07: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/674 (#1832) 2025-05-16 12:39:58 -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/677 (#1872) 2025-06-06 11:52:47 -07:00
ltable.cpp Sync to upstream/release/674 (#1832) 2025-05-16 12:39:58 -07:00
ltable.h Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
ltablib.cpp Sync to upstream/release/674 (#1832) 2025-05-16 12:39:58 -07: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/674 (#1832) 2025-05-16 12:39:58 -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/674 (#1832) 2025-05-16 12:39:58 -07:00
lvmload.cpp Sync to upstream/release/674 (#1832) 2025-05-16 12:39:58 -07:00
lvmutils.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00