|
2 | 2 |
|
3 | 3 | Note that rascal-lsp releases are bundled with VS Code releases, however due to historic reasons, their versions do not align. Until they do we'll denote both the VS Code and the rascal LSP release next to each other. |
4 | 4 |
|
| 5 | +## Release 2.22.0 (VS Code: 0.13.0) |
| 6 | + |
| 7 | +Works best with rascal 0.41.2 (and rascal-maven-plugin: 0.30.2). Due to changes in the typechecker you will most likely also have to update your library dependencies to the latest release. |
| 8 | + |
| 9 | +### New Features for Rascal Developers |
| 10 | + |
| 11 | +* Rascal parsers now support error recovery. This is the first release that enables it: you get more syntax highlighting and other features even in the presence of syntax errors. |
| 12 | +* Rascal code that reads or writes to files open in the editor is now redirected to the editor contents instead of the state on disk (this aligns with the LSP specification). |
| 13 | +* The type checker now works correctly with multi-project workspaces. Users do not have to trigger the type checker in "higher-up" projects by hand anymore. |
| 14 | +* The type checker now aborts early when required modules have parse errors. |
| 15 | +* Long-running jobs (such as the type checker) can now be interrupted. |
| 16 | +* Rascal has better selection ranges support such that you can grow/shrink your selection based on the Rascal syntax. |
| 17 | +* We have migrated to [LogOutputChannels](https://code.visualstudio.com/updates/v1_72#_log-output-channel) such that users can combine, filter, and configure Rascal's output channels. |
| 18 | +* Copy file path as Rascal location from the explorer context menu. |
| 19 | + |
| 20 | +### New Features for DSL Developers |
| 21 | + |
| 22 | +* Error recovery support for DSLs is opt-in (the parse function should be constructed with `allowRecovery=true`); your code might have to be updated to deal with error trees with skipped/ambiguous parts. |
| 23 | +* DSLs can contribute their own rename refactoring using the `LanguageService::rename` contribution. |
| 24 | +* DSLs can contribute their own selection ranges using the `LanguageService::selectionRange` contribution. |
| 25 | +* DSLs can contribute their own call hierarchies using the `LanguageServer::callHierachy` contribution. |
| 26 | +* DSLs can extend text edits with labels and descriptions, and mark them as requiring user confirmation, using keyword parameters (`str label`, `str description`, `bool needsConfirmation`). See `util::LanguageServer::TextEdit`. |
| 27 | + |
| 28 | +For more details, you can read the documentation in the `util::LanguageServer` source, or view the [rendered documentation page](https://www.rascal-mpl.org/docs/Packages/org.rascalmpl.rascal-lsp/Library/util/LanguageServer/). |
| 29 | + |
| 30 | +### Improved features |
| 31 | + |
| 32 | +* Reimplemented rename using a new framework (available in TypePal). It is faster, has better error messages, now also tracks file renames, and supports many more edge cases. |
| 33 | +* The Rascal type checker has better messages, is more accurate, and in some cases is a bit faster. Note that while the typechecker has become stricter the interpreter will still run your code as before. |
| 34 | +* Document symbols (used in the outline and when quickly navigating between symbols in the editor) are more robust. |
| 35 | +* Hover hints now belong to the smallest expression under the cursor. |
| 36 | +* UX tweaks: better error messages, many debug/internal messages have been removed, and improved progress reporting. |
| 37 | +* Hover and Go to Definition are more accurate due to bugfixes in internal data structures. |
| 38 | +* Improved documentation of `util::LanguageServer`. |
| 39 | +* Git diff viewers, untitled files and other virtual documents are better supported for DSLs. |
| 40 | +* Files without an extension are now associated with a DSL when there is only one registered. |
| 41 | +* Various performance & reliability improvements. |
| 42 | + |
| 43 | +### Rascal 0.41.2 highlights |
| 44 | + |
| 45 | +Below is a summary of the [full release-notes for rascal 0.41.x](https://www.rascal-mpl.org/release-notes/rascal-0-41-x-release-notes/). |
| 46 | + |
| 47 | +* A completely new REPL implementation with: |
| 48 | + * multi-line editing |
| 49 | + * better completion support |
| 50 | + * parse error highlighting |
| 51 | + * better module reloading behavior & feedback |
| 52 | + * much more |
| 53 | +* `Require-Libraries` from `RASCAL.MF` is not used anymore. Instead, `pom.xml` is the only place where you define dependencies. |
| 54 | +* We no longer call Maven, but have our own implementation to extract information from `pom.xml`. This has resulted in faster REPL starts and better error messages. |
| 55 | +* The `lib` scheme is gone: it has been replaced by either the `project` or `mvn` scheme. Please open an issue if you need help migrating. |
| 56 | +* `IO` has new features, such as `isReadable` and `isWritable`, and the `watch` feature has better support for macOS. |
| 57 | +* Various performance improvements. |
| 58 | +* `Message` has an optional `causes` field that can be used to report extra locations to VS Code. |
| 59 | +* Debugger has gained many new features and has become more like debuggers of other languages. |
| 60 | + |
| 61 | +### Extension developers |
| 62 | + |
| 63 | +* We've moved to Node 20. VS Code has switched since 1.90, and the Node 18 support of some of our dependencies has been deprecated for a while. This will mean having to upgrade your own extension as well. |
| 64 | + |
5 | 65 | ## Release 2.21.1 (VS Code: 0.12.1) |
6 | 66 | * The type-checker got a lot faster, especially if you're editing a single file in a larger project. |
7 | 67 | * Various bugfixes in: |
|
0 commit comments