Skip to content

v0.13.0

Latest

Choose a tag to compare

@github-actions github-actions released this 17 Dec 10:57
· 228 commits to main since this release
75d99c0

Works best with Rascal 0.41.2 (and rascal-maven-plugin 0.30.3). Due to changes in the type checker, users will most likely also have to update their library dependencies to the latest release.

New Features for Rascal Developers

  • 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.
  • 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).
  • 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.
  • The type checker now aborts early when required modules have parse errors.
  • Long-running jobs (such as the type checker) can now be interrupted.
  • Rascal has better selection ranges support such that you can grow/shrink your selection based on the Rascal syntax.
  • We have migrated to LogOutputChannels such that users can combine, filter, and configure Rascal's output channels.
  • Copy file path as Rascal location from the explorer context menu.

New Features for DSL Developers

  • 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.
  • DSLs can contribute their own rename refactoring using the LanguageService::rename contribution.
  • DSLs can contribute their own selection ranges using the LanguageService::selectionRange contribution.
  • DSLs can contribute their own call hierarchies using the LanguageServer::callHierachy contribution.
  • 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.

For more details, please refer to the documentation in the source code of util::LanguageServer, or the rendered documentation page.

Improved features

  • 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.
  • 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.
  • Document symbols (used in the outline and when quickly navigating between symbols in the editor) are more robust.
  • Hover hints now belong to the smallest expression under the cursor.
  • UX tweaks: better error messages, many debug/internal messages have been removed, and improved progress reporting.
  • Hover and Go to Definition are more accurate due to bugfixes in internal data structures.
  • Improved documentation of util::LanguageServer.
  • Git diff viewers, untitled files and other virtual documents are better supported for DSLs.
  • Files without an extension are now associated with a DSL when there is only one registered.
  • Various performance & reliability improvements.

Rascal 0.41.2 highlights

Below is a summary of the full release-notes for rascal 0.41.x.

  • A completely new REPL implementation with:
    • multi-line editing
    • better completion support
    • parse error highlighting
    • better module reloading behavior & feedback
    • much more
  • Require-Libraries from RASCAL.MF is not used anymore. Instead, pom.xml is the only place where you define dependencies.
  • 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.
  • 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.
  • IO has new features, such as isReadable and isWritable, and the watch feature has better support for macOS.
  • Various performance improvements.
  • Message has an optional causes field that can be used to report extra locations to VS Code.
  • The debugger has gained many new features, improving the debugging experience.

Extension developers

  • 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.