Releases: JohnnyMorganz/luau-lsp
Releases · JohnnyMorganz/luau-lsp
1.53.1
[1.53.1] - 2025-07-31
Fixed
- Fixed crash on server shutdown due to deadlock
- Fixed crashes on macOS due to small thread stack sizes causing stack overflows in Luau typechecking
Full Changelog: 1.53.0...1.53.1
1.53.0
[1.53.0] - 2025-07-26
Added
- The language server now supports cancellation notifications from the client. This should help in cases where the
server is stuck waiting for typechecking to complete. - Emit error cause when fetching fails to download API types
Changed
- Sync to upstream Luau 0.684
- The release artifact for Linux x86_64 is renamed from
luau-lsp-linux.zip
toluau-lsp-linux-x86_64.zip
Fixed
- Autocomplete now properly respects Luau's ParenthesesRecommendation and puts the cursor inside of the parentheses when
autocompleting a function call where the arguments are all optional / any (e.g.,require()
or
wait()
) (#317) - Fixed autocomplete of function calls in new solver not inserting parameter names if the parameters do not have a type
annotation
Full Changelog: 1.52.1...1.53.0
1.52.1
[1.52.1] - 2025-07-12
Changed
- Sync to upstream Luau 0.682
Fixed
- Fixed missing name for
timeout
parameter in:WaitForChild()
when the new solver is enabled - (Attempted) fix for memory access crashes after the sourcemap changes
- Fixed incorrect paths showing up for errors when using
luau-lsp analyze
(#1146)
Full Changelog: 1.52.0...1.52.1
1.52.0
[1.52.0] - 2025-07-05
Added
- Add a warning message to
luau-lsp analyze
when--platform=roblox
is set but no definitions files are provided
Changed
- Sync to upstream Luau 0.681
- Workspace diagnostics are now only updated on text document save, rather than on text document type, due to performance overhead (especially when new solver is enabled) (#1076)
Fixed
- Fixed crash when retrieving the extension of a file path with an empty basename
- Fixed crash in Go To Definition and Go To Type Definition on an expression when the relevant module document could not be looked up
- Fixed an issue with lazy workspace initialization when the first processed message is a
workspace/didChangeConfiguration
, causing configuration to not apply. This affects Neovim users (#1139) - Fixed auto-imports of children / descendant modules missing a
script.
prefix in the generated require statement (#1135)
1.51.0
[1.51.0] - 2025-06-24
Added
- Go To Definition now follows to the location of a property on a table type if the property doesn't have a real
implementation (#1123) - Go To Definition now works on properties on the result of a function call (e.g.,
unwrap
in
process.spawn(""):unwrap()
) (#1123) - Go To Type Definition now follows through expressions (such as variables) better (e.g., cross module) to find the true
location of the original type
Changed
- Reimplemented internal file-system calls and removed references to
std::filesystem
. There should be no external differences from this change, except that non-ASCII filepaths are handled correctly on Windows - Sync to upstream Luau 0.679
Fixed
- Fixed handling of non-ASCII file paths and directories on Windows (#746)
Full Changelog: 1.50.0...1.51.0
1.50.0
[1.50.0] - 2025-06-16
Added
- Added
ServerInfo
to theLanguageServer::onInitialize
result. .robloxrc
files are now processed alongside.luaurc
files for backwards compatibility with old
configuration. It is recommended to still use.luaurc
for new code.FindFirstChildWhichIsA
and friends now report an error if the class name provided was not found as a valid instance
type.
Changed
- Sync to upstream Luau 0.678
- Removed the restriction on maximum table size when displaying during Hover etc. This is done by setting the
LuauTableTypeMaximumStringifierLength
flag value to0
. Overrides for this value are still respected.
Fixed
- Fixed stack overflow when looking up a property on self-referential intersection types
External Contributions
- Add FromValue and FromName Methods to Enum by @Barocena in #1107
- Improve Enum Type Returns by @Barocena in #1113
- feat: add server info to lsp initialize results by @AleksandrSl in #1110
- Redefine RaycastResult to have generic type (with BasePart default) by @MaximumADHD in #1106
New Contributors
- @AleksandrSl made their first contribution in #1110
Full Changelog: 1.49.1...1.50.0
1.49.1
[1.49.1] - 2025-06-09
Changed
- Sync to upstream Luau 0.677
Fixed
- Fixed requests failing when write a string require where the filename begins with disallowed names (e.g.
./con
) on
Windows
1.49.0
[1.49.0] - 2025-06-01
Added
- Added
luau-lsp.require.useOriginalRequireByStringSemantics
to fall back to the old require-by-string semantics for
init.luau
files to preserve backwards compatibility. This option is deprecated and may be removed at any time in the
future. Note that@self
-based requires remain supported with this option, allowing gradual migration to the new
semantics (#1046)
Changed
- Sync to upstream Luau 0.676
- For DM types,
.Parent
is now typed with a write type of "Instance" in the new solver, preventing false-positive type
errors (#1039) - Renamed command "Luau: Regenerate Rojo Sourcemap" to "Luau: Regenerate Sourcemap" as it can be configured to generate sourcemaps from non-Rojo tooling
- Workspaces are initialized lazily on-demand, improving startup time for set-ups with many workspace folders. We only
setup and index a workspace folder once we receive a request for that
folder. (#947) - It is no longer valid to pass
--flag
and--no-flags-enabled
before the subcommand name on the CLI: it should be
luau-lsp lsp --flag:NAME=VALUE
/luau-lsp lsp --no-flags-enabled
.
Fixed
- Fixed require-by-string failing for files named
luau
(e.g,project/luau.luau
) - Fixed crash during early startup where a text document update notification is already sent before the workspaces are
fully configured. - Fixed unnecessary type check when fragment autocomplete is enabled, leading to an autocomplete delay (#991)
- Fixed FFlag registration logic always enabling all
FFlags (#1090) - Fixed string require auto-imports in an
init.luau
file not resolving correctly with new require-by-string semantics.
Now,@self
is correctly added when necessary. (#1030) - When importing a directory containing an
init.luau
file with string require auto-imports, we now correctly resolve
to the directory name instead of to
directory/init
(#1038 / #1041) init.luau
files are no longer aware of.luaurc
files that are its sibling on the file
system (#1037)
1.48.0
Added
- Internal caught but unhandled exceptions are now reported to Sentry if crash reporting is enabled
- Added progress indicator for watched files changes
- A Cloudflare page is now available to serve the type definition files and API documentations, due to GitHub ratelimiting (#1059)
https://luau-lsp.pages.dev/type-definitions/globalTypes.None.d.luau
https://luau-lsp.pages.dev/type-definitions/globalTypes.PluginSecurity.d.luau
https://luau-lsp.pages.dev/type-definitions/globalTypes.LocalUserSecurity.d.luau
https://luau-lsp.pages.dev/type-definitions/globalTypes.RobloxScriptSecurity.d.luau
https://luau-lsp.pages.dev/api-docs/en-us.json
Changed
- Sync to upstream Luau 0.675
- Significant performance improvements to initial workspace indexing time (~3m to ~20s on 30,000 files)
- ~1160x performance improvement to Uri parsing time at scale (7.77s to 0.0067s for ~30,000 URIs)
- ~10x performance improvement to require resolution for string requires and virtual (sourcemap) -> real file paths (
3.28s to 0.322s for ~30,000 files) - ~1.29x performance improvement to reading files (4.5s to 3.66s for ~30,000 files)
Fixed
- Fixed blowup of
linux-arm64
release build size due to the inclusion of debug symbols - Fixed crash when auto imports is enabled and the file contains a require with no arguments (e.g.
local Value = require()
, typically the case when in the middle of typing a require) - Fixed performance regression from previous release where type checking is being performed on document change even if
workspace diagnostics is disabled - Fixed crash where catch-all error handler attempts to send an error message with non-UTF 8 characters
- Fixed find references not showing types used as return types for
functions (#1060) - VSCode: if fetching API documentation / definitions fails, then we do not overwrite the existing file (#740)
Full Changelog: 1.47.0...1.48.0
1.47.0
[1.47.0] - 2025-05-17
Added
- Implemented opt-in crash reporting for the language server. This is enabled via
luau-lsp.server.crashReporting.enabled
. This setting is not enabled by default, but you may receive a dismissible prompt to enable it if the server restarts unexpectedly. Note: crash reporting sends network requests to Sentry. Crash Reporting is only available on Windows and macOS, and is not enabled in Standalone mode (luau-lsp analyze
).
Changed
- Sync to upstream Luau 0.674