Skip to content

Releases: JohnnyMorganz/luau-lsp

1.53.1

31 Jul 20:21
Compare
Choose a tag to compare

[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

26 Jul 15:02
Compare
Choose a tag to compare

[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 to luau-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

12 Jul 16:14
Compare
Choose a tag to compare

[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

05 Jul 11:07
Compare
Choose a tag to compare

[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

24 Jun 19:04
Compare
Choose a tag to compare

[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

16 Jun 19:57
Compare
Choose a tag to compare

[1.50.0] - 2025-06-16

Added

  • Added ServerInfo to the LanguageServer::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 to 0. Overrides for this value are still respected.

Fixed

  • Fixed stack overflow when looking up a property on self-referential intersection types

External Contributions

New Contributors

Full Changelog: 1.49.1...1.50.0

1.49.1

09 Jun 19:19
Compare
Choose a tag to compare

[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

01 Jun 13:22
Compare
Choose a tag to compare

[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

28 May 19:55
Compare
Choose a tag to compare

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

17 May 12:46
Compare
Choose a tag to compare

[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