diff --git a/courses/Bibliography/Bibliography.md b/courses/Bibliography/Bibliography.md index 480d7c67e..1ac7359c6 100644 --- a/courses/Bibliography/Bibliography.md +++ b/courses/Bibliography/Bibliography.md @@ -78,7 +78,7 @@ This literature is about the meta systems themselves, their design and their eva * Mauricio Verano Merino, Tom Beckmann, Tijs van der Storm, Robert Hirschfeld, and Jurgen J. Vinju. Getting Grammars into Shape for Block-based. (2021) International Conference on Software Language Engineering. > We can generate block-based syntax editors from context-free grammars. The paper bridges between the grammarware and blockware technological spaces. A collaboration with TU Eindhoven en Canon Production Printing. * Jurgen J. Vinju and Tijs van der Storm. Bacatá: Notebooks for DSLs, Almost for Free. (2020) <Programming> Journal and DSLDI 2020 - > We can generate Jupyter Notebook interfaces for language descriptions in Rascal, similar to the way we can generate Eclipse plugins and VScode extensions, + > We can generate Jupyter Notebook interfaces for language descriptions in Rascal, similar to the way we can generate Eclipse plugins and VS Code extensions, > but with a very different user experience. ### 2010's diff --git a/courses/GettingHelp/GettingHelp.md b/courses/GettingHelp/GettingHelp.md index 45f010d3f..3be7fa8f7 100644 --- a/courses/GettingHelp/GettingHelp.md +++ b/courses/GettingHelp/GettingHelp.md @@ -31,7 +31,7 @@ details: * Directly in the Rascal IDE there is help available: 1. On the commandline, type `:help` 2. In Eclipse there is the `Tutor View` which opens all the documentation pages inside Eclipse. - 3. In VScode use the command palette and search for `Rascal` for more commands. + 3. In VS Code use the command palette and search for `Rascal` for more commands. * For specific application topics, "Howto" kind of information, etc. please go to ((FurtherReading)). * There is a lot of documentation on Rascal and its libraries. Read the ((Browsing)) page on how to navigate it. diff --git a/courses/GettingStarted/CreateNewProject/CreateNewProject.md b/courses/GettingStarted/CreateNewProject/CreateNewProject.md index 60ad196c9..07b498d87 100644 --- a/courses/GettingStarted/CreateNewProject/CreateNewProject.md +++ b/courses/GettingStarted/CreateNewProject/CreateNewProject.md @@ -9,7 +9,7 @@ remove(|home:///my-project-name|, recursive=true); ``` Rascal projects, generally, work the same in all contexts: -* VScode +* VS Code * Commandline To create an empty project to get started, follow these instructions: @@ -23,7 +23,7 @@ newRascalProject(|home:///my-project-name|) The Eclipse plugin has a "New Project Wizard" you can use as well. -The next step is to import the new project into VScode or Eclipse, or +The next step is to import the new project into VS Code or Eclipse, or to `cd` to the project's root directory. From there on ((RunningRascal)) with the new project's source and library settings is trivial. @@ -51,7 +51,7 @@ The `pom.xml` file is the basic setup that names the project and defines its dep ``` Next to that `RASCAL.MF` is required to configure the development environment for the project. Some -information from the `pom.xml` is repeated here, because this file is common between Eclipse, VScode and empty commandline projects, +information from the `pom.xml` is repeated here, because this file is common between Eclipse, VS Code and empty commandline projects, and such projects could work with a `pom.xml`: ```MF diff --git a/courses/GettingStarted/DownloadAndInstallation/DownloadAndInstallation.md b/courses/GettingStarted/DownloadAndInstallation/DownloadAndInstallation.md index 9df6ccdf3..56235a758 100644 --- a/courses/GettingStarted/DownloadAndInstallation/DownloadAndInstallation.md +++ b/courses/GettingStarted/DownloadAndInstallation/DownloadAndInstallation.md @@ -6,7 +6,7 @@ sidebar_position: 1 Rascal is deployed as one of four easy-to-use packages: 1. **A standalone "jar" file**, which can be downloaded [here](https://update.rascal-mpl.org/console/rascal-shell-stable.jar) -2. A **Visual Studio Code extension**, which can be found [here](https://marketplace.visualstudio.com/items?itemName=usethesource.rascalmpl) or search for "Rascal" in the "Extension" view in VScode itself. +2. A **Visual Studio Code extension**, which can be found [here](https://marketplace.visualstudio.com/items?itemName=usethesource.rascalmpl) or search for "Rascal" in the "Extension" view in VS Code itself. 3. An **Eclipse plugin**, for which the update site is . 4. A set of **Maven MOJOs**, for which the plugin repository is diff --git a/courses/GettingStarted/RascalShell/Commands/Edit/Edit.md b/courses/GettingStarted/RascalShell/Commands/Edit/Edit.md index ca5ab25b8..8f96c0275 100644 --- a/courses/GettingStarted/RascalShell/Commands/Edit/Edit.md +++ b/courses/GettingStarted/RascalShell/Commands/Edit/Edit.md @@ -17,4 +17,4 @@ mean different things: * On the Unix commandline the `${EDITOR}` environment variable will be used to open a file. If that file is present in the local file system, it is opened by running `${EDITOR} /absolute/path/to/module.rsc`, but if the file is hidden behind an opaque ((Values-Location)) scheme, then it is first copied to a temporary file on the local file system, and then opened. * In Eclipse, the eclipse editor framework is used to open an editor for the file. If it is a so called "resource" in the eclipse file system, and editable file is opened with all the Rascal language support. If the file is from an embedded library (inside a jar) then the contents of the file are shown in a similar editor, but read-only. -* In VScode a similar experience is provided as in Eclipse, but the editor for library files does not know it is read-only. +* In VS Code a similar experience is provided as in Eclipse, but the editor for library files does not know it is read-only. diff --git a/courses/GettingStarted/RunningRascal/RunningRascal.md b/courses/GettingStarted/RunningRascal/RunningRascal.md index 3286d3b41..e2dc5b162 100644 --- a/courses/GettingStarted/RunningRascal/RunningRascal.md +++ b/courses/GettingStarted/RunningRascal/RunningRascal.md @@ -6,7 +6,7 @@ sidebar_position: 2 #### Running Rascal: starting a terminal with a read-eval-print-loop 1. On the Unix or Windows [Commandline]((RunningRascal-Commandline)), start a ((RascalShell)) by: `java -jar rascal-.jar` -2. In [VScode]((RunningRascal-VScode)), in the command palette type `Rascal` and select `Create Rascal Terminal` +2. In [VS Code]((RunningRascal-VScode)), in the command palette type `Rascal` and select `Create Rascal Terminal` 4. With Maven, ((CreateNewProject)) first and then type: `mvn rascal:console` You will be prompted for input right after the version is printed and a lot of information about the current searchpath configuration. diff --git a/courses/GettingStarted/RunningRascal/VScode/VScode.md b/courses/GettingStarted/RunningRascal/VScode/VScode.md index 762ac9bb7..042b37316 100644 --- a/courses/GettingStarted/RunningRascal/VScode/VScode.md +++ b/courses/GettingStarted/RunningRascal/VScode/VScode.md @@ -1,11 +1,11 @@ --- -title: Running Rascal in VScode +title: Running Rascal in VS Code --- After the [installation procedure]((DownloadAndInstallation)) running Rascal -in VScode is a matter of starting the ((RascalShell)): +in VS Code is a matter of starting the ((RascalShell)): 1. Using an editor action -2. Using the VScode command palette +2. Using the VS Code command palette ## Starting ((RascalShell)) from an editor @@ -24,9 +24,9 @@ This assumes there is a functional [Rascal project]((CreateNewProject)) in your * A ((RascalShell)) started from the palette has no source or library or classpath configuration and so it only knows about the standard library. * See above for well-configured instances of ((RascalShell)). -## Programmatic access to VScode features +## Programmatic access to VS Code features -* Use ((util::IDEServices)) to communicate with VScode, to register problems, to open files and browsers, etc. -* Use ((util::LanguageServer)) to register languages designed and implemented in Rascal with the Language Server Protocol in VScode immediately. -* The `project://` location scheme provides access to the root of each registered folder in the VScode workspace. +* Use ((util::IDEServices)) to communicate with VS Code, to register problems, to open files and browsers, etc. +* Use ((util::LanguageServer)) to register languages designed and implemented in Rascal with the Language Server Protocol in VS Code immediately. +* The `project://` location scheme provides access to the root of each registered folder in the VS Code workspace. * Use ((util::Reflective::getProjectPathConfig)) for Java and Rascal project configuration extracted from Maven configuration (classpaths, sourcepaths, library dependencies). diff --git a/courses/GettingStarted/Troubleshooting/StackOverflow/StackOverflow.md b/courses/GettingStarted/Troubleshooting/StackOverflow/StackOverflow.md index f398c281b..d7847f6a1 100644 --- a/courses/GettingStarted/Troubleshooting/StackOverflow/StackOverflow.md +++ b/courses/GettingStarted/Troubleshooting/StackOverflow/StackOverflow.md @@ -13,5 +13,5 @@ To be able to generate parsers Rascal uses stack space from the Java Virtual Mac If you get exceptions better configure your JVM with this `-Xss32m` * On the commandline, you can use `java -Xss32m ...` -* In VScode the Rascal language server already configures this automatically. +* In VS Code the Rascal language server already configures this automatically. * The same for the Rascal Maven plugins; they are configured with big stack sizes. \ No newline at end of file diff --git a/courses/Rascal/Tests/Tests.md b/courses/Rascal/Tests/Tests.md index 7991055ea..0c62f1734 100644 --- a/courses/Rascal/Tests/Tests.md +++ b/courses/Rascal/Tests/Tests.md @@ -53,7 +53,7 @@ public class RunRascalTestModules { } * <1> selects the test runner (parallel or not) * <2> selects the root package to search for modules and tests -* Then use JUnit configuration in Eclipse, VScode or Maven to activate the tests at the right time. +* Then use JUnit configuration in Eclipse, VS Code or Maven to activate the tests at the right time. * Reporting goes through standard JUnit reporting, so this integrates well with IDEs and continuous integration systems like Jenkins and GitHub Actions. diff --git a/courses/Recipes/BasicProgramming/IDEConstruction/IDEConstruction.md b/courses/Recipes/BasicProgramming/IDEConstruction/IDEConstruction.md index 91414f6e6..3c451cc48 100644 --- a/courses/Recipes/BasicProgramming/IDEConstruction/IDEConstruction.md +++ b/courses/Recipes/BasicProgramming/IDEConstruction/IDEConstruction.md @@ -5,7 +5,7 @@ keywords: - IDE - Language Server Protocol - Eclipse - - VScode + - VS Code --- #### Synopsis @@ -22,18 +22,18 @@ Extend an IDE with interactive, language-specific, features (VSCode) Meta-programs become most useful, when they are integrated with an Interactive Development Environment (IDE). -A Rascal program running inside a [language server protocol](https://microsoft.github.io/language-server-protocol/) server that is part of the VScode IDE can service most of the typical IDE features such as syntax highlighting, -outlining, documentation hovering and much more. Similarly Rascal programs running inside VScode have access to all features +A Rascal program running inside a [language server protocol](https://microsoft.github.io/language-server-protocol/) server that is part of the VS Code IDE can service most of the typical IDE features such as syntax highlighting, +outlining, documentation hovering and much more. Similarly Rascal programs running inside VS Code have access to all features of the , and more. Rascal builds on top of the [language server protocol](https://microsoft.github.io/language-server-protocol/) for its own services, and for services that -Rascal programmers create for their own languages. By default Rascal can instantiate an LSP server for VScode, but there is nothing in the way of using other editors that have LSP clients. +Rascal programmers create for their own languages. By default Rascal can instantiate an LSP server for VS Code, but there is nothing in the way of using other editors that have LSP clients. To instantiate an IDE for a language implemented using Rascal, use the following steps: * Define the grammar for the language. * Define a parse function for the language. -* Register the language with the LSP/VScode, using ((util::LanguageServer)) +* Register the language with the LSP/VS Code, using ((util::LanguageServer)) You find more information on these topics [here]((util::LanguageServer)) diff --git a/courses/WhyRascal/UseCases/CodeAsData/CodeAsData.md b/courses/WhyRascal/UseCases/CodeAsData/CodeAsData.md index 80ebf5357..9ab26c83e 100644 --- a/courses/WhyRascal/UseCases/CodeAsData/CodeAsData.md +++ b/courses/WhyRascal/UseCases/CodeAsData/CodeAsData.md @@ -85,7 +85,7 @@ The two unused methods are: * `|java+method:///snakes/Square/nextSquare()|` * `|java+method:///snakes/Player/square()|` -In an interactive environment like Eclipse or VScode we would click on these links to jump to their source code. Here we will print the bodies: +In an interactive environment like Eclipse or VS Code we would click on these links to jump to their source code. Here we will print the bodies: ```rascal-shell,continue println(readFile(|java+method:///snakes/Player/square()|)) diff --git a/courses/WhyRascal/UseCases/DomainSpecificLanguages/DomainSpecificLanguages.md b/courses/WhyRascal/UseCases/DomainSpecificLanguages/DomainSpecificLanguages.md index d60f80a9e..91f6620b0 100644 --- a/courses/WhyRascal/UseCases/DomainSpecificLanguages/DomainSpecificLanguages.md +++ b/courses/WhyRascal/UseCases/DomainSpecificLanguages/DomainSpecificLanguages.md @@ -9,7 +9,7 @@ In this usecase description we give a flavor of how you can use Rascal to: 1. define the syntax of a DSL; 2. create a simple semantic check; 3. how to compile the DSL to Java; -4. instantiate a VScode extension or Eclipse Plugin for the DSL. +4. instantiate a VS Code extension or Eclipse Plugin for the DSL. The following example shows how to define a simple DSL for "state machines". It includes a parser, a check for unreachable states and a compiler to Java code. @@ -184,4 +184,4 @@ And that's it! A complete DSL in 36 lines of code. Of course, the parser and the #### Constructing an IDE * For Eclipse Rascal offers plugin generation via the `util::IDE` module. You can register the language and the respective analysis, compilation and visualization functions with a single function call. The standard library module `util::IDEServices` allows for calling into features of the IDE (such as starting an editor or applying a refactoring). -* For VScode an interface with similar features and abstraction level is offered in `util::LanguageServer`, but geared towards the _Language Service Protocol_. \ No newline at end of file +* For VS Code an interface with similar features and abstraction level is offered in `util::LanguageServer`, but geared towards the _Language Service Protocol_. \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6ccbdb09f..01bf12cba 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 0.2.9 0.3.8 1.0.1 - 2.22.0-RC3 + 2.22.0 diff --git a/release-notes/rascal-0-23-x-release-notes.md b/release-notes/rascal-0-23-x-release-notes.md index a7f2fac5d..fae8eff78 100644 --- a/release-notes/rascal-0-23-x-release-notes.md +++ b/release-notes/rascal-0-23-x-release-notes.md @@ -14,12 +14,12 @@ The 0.23.0 release marks the end of the migration of all Rascal supporting libra We report on intermediate releases 0.18.x, 0.19.x, 0.20.x, 0.21.x and 0.22.x as well, as these had not lead to a release of the Rascal Eclipse plugins or a stable release of the commandline version. -**Generating Eclipse and VScode Plugins** +**Generating Eclipse and VS Code Plugins** This port to Java 11 implies that the current [stable release of the Rascal Eclipse plugin](https://update.rascal-mpl.org/stable/) works again with the latest releases of Eclipse from 2021 and 2022. In the meantime -releases of the [rascal-language-server extension](https://marketplace.visualstudio.com/items?itemName=usethesource.rascalmpl) for VScode have been developed. +releases of the [rascal-language-server extension](https://marketplace.visualstudio.com/items?itemName=usethesource.rascalmpl) for VS Code have been developed. -Porting Rascal's IDE generator features to VScode has had minor impact on the modules in the standard library concerning interaction with DSLs and interactions with the IDE (`util::IDEServices`, `util::Monitor` and `util::IDE`). The old API still works and it is backward compatible in Eclipse. However, if you want to port your DSL to VScode, there are minor changes in how to wrap your extension and new interaction possibilities with the IDE which are not present in Eclipse. Not all new IDE API is available in Eclipse yet either. Both directions of consolidation (VScode <-> Eclipse) are interesting directions of future work. +Porting Rascal's IDE generator features to VS Code has had minor impact on the modules in the standard library concerning interaction with DSLs and interactions with the IDE (`util::IDEServices`, `util::Monitor` and `util::IDE`). The old API still works and it is backward compatible in Eclipse. However, if you want to port your DSL to VS Code, there are minor changes in how to wrap your extension and new interaction possibilities with the IDE which are not present in Eclipse. Not all new IDE API is available in Eclipse yet either. Both directions of consolidation (VS Code <-> Eclipse) are interesting directions of future work. This release works best with Java 11, but not with higher versions. There are still illegal uses of reflective access which need to be resolved before Rascal runs correctly on Java 13 and higher. diff --git a/release-notes/rascal-0-26-x-release-notes.md b/release-notes/rascal-0-26-x-release-notes.md index e52a8b6ea..7f09479fa 100644 --- a/release-notes/rascal-0-26-x-release-notes.md +++ b/release-notes/rascal-0-26-x-release-notes.md @@ -27,4 +27,4 @@ In this post we report on the Rascal release 0.26.x ## Release 0.25.x -Release 0.25.x were intermediate releases required to eliminate the old tutor from the rascal package. They never made it into an IDE like VScode or Eclipse and no stable commandline release was distributed either. +Release 0.25.x were intermediate releases required to eliminate the old tutor from the rascal package. They never made it into an IDE like VS Code or Eclipse and no stable commandline release was distributed either. diff --git a/release-notes/rascal-0-28-x-release-notes.md b/release-notes/rascal-0-28-x-release-notes.md index 5007280e2..d8a07690d 100644 --- a/release-notes/rascal-0-28-x-release-notes.md +++ b/release-notes/rascal-0-28-x-release-notes.md @@ -15,7 +15,7 @@ In this post we report on the Rascal release 0.28.x * vis::Charts, vis::Graphs and vis::Text were added to the standard library for visualizing charts, graphs and pretty textual values. * for Eclipse, several older issues and newer issues were fixed in the run-time of the Figure library -* in Eclipse and VScode the new logo was applied, as well as on http://www.rascal-mpl.org +* in Eclipse and VS Code the new logo was applied, as well as on http://www.rascal-mpl.org * util::Validator was added to the standard library: a generic validation module for loading node values produced by reading in XML, JSON or YAML (for example) as verified constructors of algebraic data-types. * In lang::json::IO the writing of Rascal values to JSON streams was simplified and rationalized. Now every constructor application corresponds to one object, and the fields of Rascal constructors and nodes (keyword fields as well as positional) are always mapped one-to-one to JSON fields by name. Mapping back from JSON values to Rascal can be hard if there are more than one constructors for a data type. In this case have a look at util::Validator. * Most documentation was moved from the rascal project to the rascal-website project; this will make it easier and faster to contribute to (fixes in) the Rascal documentation. diff --git a/release-notes/rascal-0-40-x-release-notes.md b/release-notes/rascal-0-40-x-release-notes.md index 07514c816..ee3c7fe42 100644 --- a/release-notes/rascal-0-40-x-release-notes.md +++ b/release-notes/rascal-0-40-x-release-notes.md @@ -10,10 +10,10 @@ In this post we report on the Rascal release 0.40.x ## Release 0.40.17 - November 15, 2024 -The public release 0.40.x follows release 0.28.x; many improvements have been made in projects that depend on the rascal interpreter and the standard library (the type checker, the VScode extensions, clair, etc.) Some of these improvements depend directly on fixes in the interpreter and additions to the standard library. +The public release 0.40.x follows release 0.28.x; many improvements have been made in projects that depend on the rascal interpreter and the standard library (the type checker, the VS Code extensions, clair, etc.) Some of these improvements depend directly on fixes in the interpreter and additions to the standard library. :::info -The Rascal type-checker which is available in the VScode extension is reaching maturity. The `.tpl` file format has changed, which requires everybody to throw the old ones away. The new type checker checks `.tpl` file versions and reports possible conflicts. Use `mvn clean` or remove your `bin` or `target` folders for all your projects and library projects today. +The Rascal type-checker which is available in the VS Code extension is reaching maturity. The `.tpl` file format has changed, which requires everybody to throw the old ones away. The new type checker checks `.tpl` file versions and reports possible conflicts. Use `mvn clean` or remove your `bin` or `target` folders for all your projects and library projects today. ::: :::warning diff --git a/release-notes/rascal-0-41-x-release-notes.md b/release-notes/rascal-0-41-x-release-notes.md index 9e9976b5b..3e0ce51b0 100644 --- a/release-notes/rascal-0-41-x-release-notes.md +++ b/release-notes/rascal-0-41-x-release-notes.md @@ -6,9 +6,9 @@ sidebar_position: 87 In this post we report on the Rascal release 0.41.x -## Release 0.41.0 & 0.41.1 - December, 2025 +## Release 0.41.0, 0.41.1 & 0.41.2 - December, 2025 -Welcome to Rascal 0.41.0! This release comes with great improvements in usability (parse error recovery, loading speed) +Welcome to Rascal 0.41.2! This release comes with great improvements in usability (parse error recovery, loading speed) and enormous progress with type-checking and compilation. Numerous additions to the standard library and a _big change_ in the Java language support setup... These release notes are organized by major topics and there is a list of smaller improvements at the end, including a list of linked closed issues and the merged pull requests. @@ -16,7 +16,7 @@ Many, if not most, of the improvements to the Rascal project were both funded an :::info All Eclipse functionality, including the `rascal-eclipse` plugin and the Eclipse IDE Metatooling Platform (IMP a.k.a. `impulse`), was _archived_ this year, after having been deprecated for a long time. -Everybody is expected to use Rascal now using the VScode extension, or using the commandline REPL, or from their own LSP clients. With this move to VScode the `Figure` library (embedded in `rascal-eclipse`) +Everybody is expected to use Rascal now using the VS Code extension, or using the commandline REPL, or from their own LSP clients. With this move to VS Code the `Figure` library (embedded in `rascal-eclipse`) is no longer available, until we create a replacement. The pre-existing releases of `rascal-eclipse` and `impulse` will _not_ remain available forever on `usethesource.io`, for the sake of security and simplicity. ::: @@ -27,7 +27,7 @@ For many users the extraction of [java-air](https://github.com/usethesource/java us to do faster maintenance cycles on both projects and it more than halved the size of the binary distribution of the core Rascal features. **Students following courses on Software Evolution**, or Software Maintenance/Software quality at different schools and universities: your course and lab notes may not -include this new information, but this is relevant for you if you want to use the newest Rascal VScode extension for your lab exercises! +include this new information, but this is relevant for you if you want to use the newest Rascal VS Code extension for your lab exercises! To regain access to all the beloved features for the Java language related to parsing, abstract syntax trees, and semantic models like `M3`, please add this to your `pom.xml` dependencies: @@ -76,12 +76,12 @@ Parse error recovery required significant new extensions to the parsing algorith of ambiguous parse forests caused by recovering from different parallel stacks. These features were very well tested on Rascal, Java and C grammars. Nevertheless it can be considered "beta" since not that many users (a few dozen) have tested it out. We hope you will enjoy it! In particular the robustness of syntax highlighting and the possibility of providing semantic feedback on a partially parsed file for your users are interesting. Other improvements to the parsers: -* Two bugs related to nullables inside regular expressions were solved +* Two bugs related to nullables inside regular expressions were solved. * The `@` constraint in grammar rules was fixed. ### Fast and Consistent Configuration via Maven's `pom.xml` -> *warning* the way Rascal is configured is gradually migrating from using `RASCAL.MF` to using `pom.xml`. Dependencies (Java, Rascal or otherwise) already come from a `pom.xml` file's `` list. Every project should have one, with at least a dependency on the Rascal project itself. +> *warning* The way Rascal is configured is gradually migrating from using `RASCAL.MF` to using `pom.xml`. Dependencies (Java, Rascal or otherwise) already come from a `pom.xml` file's `` list. Every project should have one, with at least a dependency on the Rascal project itself. * `Require-Libraries` in `RASCAL.MF` is no longer in use. You will be warned by the IDE about this. * The interpreter is now also configured by `pom.xml`, just like the compiler. `Sources` still come from `RASCAL.MF` for the interpreter, but not for the checker and the compiler. For now you have to keep `RASCAL.MF` and `pom.xml` in line w.r.t. the configuration of the local source folders. @@ -94,12 +94,15 @@ to the `mvn://` scheme also enables debug-stepping through library code with the ### REPL/Console improvements -* The REPL consistently prints what its configuration is (versions, source path, classpath, runtime environment, standard library) -* The REPL was re-implemented from jline2 to **jline3**; with important usability enhancements among which _multiline editing_ -* The textual progress bar and printing to stderr was improved radically (sometimes prints were lost), also due to the upgrade to jline3 +* The REPL consistently prints what its configuration is (versions, source path, classpath, runtime environment, standard library). +* The REPL was re-implemented from jline2 to **jline3**; with important usability enhancements among which _multiline editing_. +* The textual progress bar and printing to stderr was improved radically (sometimes prints were lost), also due to the upgrade to jline3. * The REPL starts _much_ faster, due to a re-implementation of the Maven features for acquiring the exact locations of dependencies. -* Module reloading is faster and more accurate on macOS due to the new File Watches (see below) -* The `:set` options grammar was extended with optional `;`'s and also further implemented +* Module reloading is faster and more accurate on macOS due to the new File Watches (see below). +* Automatically reloading a module is always announced via an info message. +* Automatic reloading now works for (extended) modules with errors. +* Loading of modules in cycles has been improved so no definitions or messages from imported are lost anymore. +* The `:set` options grammar was extended with optional `;`'s and also further implemented. * All other `:` commands are now implemented. See `:help` for instructions. * You can now `:undeclare` functions and variables without having to restart the REPL, for example. * All `:` commands accept accidentally typed `;` semicolons at the end. @@ -143,7 +146,7 @@ To increase cohesion and lower coupling between the `rascal` project and the `ra core features of rascal-lsp are being moved into the rascal project. This is ongoing. One of the goals is to be able to run any rascal version with the VS Code extension, depending on a project's dependency on Rascal rather than the extension's dependency on rascal. -This will also facilitate new LSP client (other editors than VScode) to connect to Rascal's LSP, +This will also facilitate new LSP client (other editors than VS Code) to connect to Rascal's LSP, including the advanced terminal support and loading LSP extensions for DSLs. Also it lowers our maintenance costs and increases the speed of our release cycles. @@ -152,6 +155,15 @@ Also it lowers our maintenance costs and increases the speed of our release cycl For example: mapping UTF16 characters (LSP editors) to UTF32 (Rascal parsers) and back. * the REPL extensions in VS Code (such as automatic reloading of modules) got moved to the generic rascal REPL. +### Debugger improvements + +* Show all variables with subtype of `Tree` as trees in variables view. +* Show symbol constructor argument names in variables view. +* Fix issues with keyword parameter value computation. +* Refactored and fixed the computation of debug step scopes. +* Changed the behavior of step-over for block statements to step over the condition, into the body. +* Breakpoint suspension is now global, which means that step-over will not skip breakpoints deeper in statements anymore. + ### Type checker improvements * Static analysis of several Rascal constructs was improved, especially when types or functions @@ -171,6 +183,7 @@ change, and what kind of action is required from a client depending on the kind * Character classes are now fully supported, in line with the semantics of the interpreter where `char(10)` has the dynamic type `[\n]`. The checker now assumes any `char(_)` term has type `![] + [\0]`. Subtyping for character classes is subclassing, `lub` is class union and `glb` is class intersection. * Any type like `tuple[int, void]` is considered equivalent to `void` in _all circumstances_ (also as return types). Since tuple instances with void fields do not exist, any such type is "void" of values. The canonical type that represents the empty set of values is `void`. The same holds for function type parameters: `int (void, int)` is equivalent to `void` for the same reason. Functions with `void` parameters do not exist in Rascal, hence such type terms are canonically reduced to `void`. This reduction to one simple case is essential for downstream analyses --- for example, the static checking of assignments and return values (where `void` is treated exceptionally). Another example is the semantics of dynamic dispatch where a `void` return type produced by the dynamic instantiation of type variables will lead to overload application failure (`CallFailed`) and/or backtracking. * The implementation of the extend feature as well as the related overloading resolution were overhauled completely. +* Fixed propagation of outdated information for downstream extended modules. ### Tutor improvements @@ -252,9 +265,14 @@ large files can now already be received and consumed by the client, in parallel, ### Other Rascal Interpreter changes * Throwing and catching `StackOverflow` and `OutOfMemory` is possible again, due to not triggering `OutOfMemory` or `StackOverflow` during the handling of these exceptions. +* Rascal IO exceptions have been improved to include much more information, to clarify what caused them to be thrown. * The `visit` statement now _always_ memoizes `amb` clusters; this brings down the worst-case complexity of a visit with nested ambiguity to polynomial numbers (instead of the previous exponential amounts of nested combinations). * Duplicate overloads, present due to the exact same functions being extended from different directions in the extend graph, were eliminated. This greatly affects the efficiency of functions with only a few overloads, when the high count was caused by "diamond-shaped" extend graphs. Otherwise it doesn't do much for efficiency. +### What happened to 0.41.0 and 0.41.1? + +We previously released 0.41.0 and 0.41.1. Since they still contained some issues, we did not release them as part of any Rascal tools (e.g. the VS Code extension). If your project depends on one of those Rascal versions, we urge you to update to 0.41.2. + ### Merged Pull Requests since version 0.40.0 The following list gives access to detailed progress and discussions regarding this progress. If you are interested in @@ -446,6 +464,51 @@ contributing to Rascal then we'd use the "pull request" model together like this * [#2406](https://github.com/usethesource/rascal/pull/2406) - Removing extend cycle * [#2393](https://github.com/usethesource/rascal/pull/2393) - Switching to release of rascal that includes the new typechecker changes * [#2411](https://github.com/usethesource/rascal/pull/2411) - Fixed type error +* [#2518](https://github.com/usethesource/rascal/pull/2518) - fixes #2513 by splitting name tags between vars and funcs +* [#2517](https://github.com/usethesource/rascal/pull/2517) - Remove warnings and infos from packaged TPLs +* [#2520](https://github.com/usethesource/rascal/pull/2520) - Implemented streaming base64 translation functions +* [#2524](https://github.com/usethesource/rascal/pull/2524) - Use latest vallang (RC20) +* [#2507](https://github.com/usethesource/rascal/pull/2507) - Remote IDE services +* [#2511](https://github.com/usethesource/rascal/pull/2511) - fixes another cause of #2497 +* [#2526](https://github.com/usethesource/rascal/pull/2526) - Always print a message if we automatically reload a module +* [#2527](https://github.com/usethesource/rascal/pull/2527) - Remote IDEServices - small updates +* [#2530](https://github.com/usethesource/rascal/pull/2530) - added missing conversion of list[loc] to OS paths separated by File.pathSeparator +* [#2531](https://github.com/usethesource/rascal/pull/2531) - Using latest version of typepal +* [#2532](https://github.com/usethesource/rascal/pull/2532) - refactored the implementation of the right debug step scopes to the interpreter design pattern and added some more special cases +* [#2539](https://github.com/usethesource/rascal/pull/2539) - Fixed minor type isues +* [#2521](https://github.com/usethesource/rascal/pull/2521) - Remove unused reflect tag on JDBC +* [#2529](https://github.com/usethesource/rascal/pull/2529) - Change the behaviour of Step Over for For/While/Switch/Visit +* [#2528](https://github.com/usethesource/rascal/pull/2528) - Fix/Allow all tree-like variable to be displayed as tree in debugger +* [#2516](https://github.com/usethesource/rascal/pull/2516) - Show more details in case of an IO exception +* [#2505](https://github.com/usethesource/rascal/pull/2505) - Make sure we never share lists and properly clear a root environment cache on reset +* [#2502](https://github.com/usethesource/rascal/pull/2502) - fixed problem in extending common keyword parameter defaults; they would overwrite each other if for the same type but from a different module +* [#2486](https://github.com/usethesource/rascal/pull/2486) - Replaced problematic location +* [#2483](https://github.com/usethesource/rascal/pull/2483) - Fix/avoid-module-loc-conflicts +* [#2473](https://github.com/usethesource/rascal/pull/2473) - fix/save-tpl-on-error +* [#2460](https://github.com/usethesource/rascal/pull/2460) - Fixed check for "normal" (non-error) ambiguities after error recovery +* [#2444](https://github.com/usethesource/rascal/pull/2444) - Improve ux of parse trees in Variables view during debugging +* [#2446](https://github.com/usethesource/rascal/pull/2446) - Ignore breakpoints in removed modules +* [#2438](https://github.com/usethesource/rascal/pull/2438) - Streaming issue in webserver and repl content server +* [#2427](https://github.com/usethesource/rascal/pull/2427) - Lowered validation level as we only construct the classpath and are not building +* [#2422](https://github.com/usethesource/rascal/pull/2422) - Handle IO and parse errors in module with breakpoint +* [#2416](https://github.com/usethesource/rascal/pull/2416) - Fix issue where a varargs match throws an ArrayIndexOutOfBounds exception +* [#2405](https://github.com/usethesource/rascal/pull/2405) - Gradually improving the reporting of incompatible binary libraries +* [#2550](https://github.com/usethesource/rascal/pull/2550) - Fix missing port registering for debugger +* [#2392](https://github.com/usethesource/rascal/pull/2392) - improving handling of extend cycles and reloading (extended) modules with (temporary) errors +* [#2542](https://github.com/usethesource/rascal/pull/2542) - Always test that the current typechecker can type check the standard library of Rascal +* [#2555](https://github.com/usethesource/rascal/pull/2555) - Use daemon threads to prevent blocking shutdown +* [#2552](https://github.com/usethesource/rascal/pull/2552) - Add the callerEnvironment as Scope in default parameter computation +* [#2560](https://github.com/usethesource/rascal/pull/2560) - Fix broken links caused by removing features only used in rascal-website +* [#2561](https://github.com/usethesource/rascal/pull/2561) - Fix dozens of doc compilation errors due to persistent module load errors +* [#2564](https://github.com/usethesource/rascal/pull/2564) - Better change detection for extend +* [#2566](https://github.com/usethesource/rascal/pull/2566) - Missing `ModuleStatus` propagation +* [#2565](https://github.com/usethesource/rascal/pull/2565) - Fix various errors in integration tests +* [#2557](https://github.com/usethesource/rascal/pull/2557) - Added missing verbose flag to prevent Maven plugin from crashing if it is set +* [#2540](https://github.com/usethesource/rascal/pull/2540) - Add symbol constructor args name on tree view +* [#2559](https://github.com/usethesource/rascal/pull/2559) - Classloader concurrency +* [#2567](https://github.com/usethesource/rascal/pull/2567) - Removed cycle reported in #2563 +* [#2568](https://github.com/usethesource/rascal/pull/2568) - Fixed various type errors +* [#2571](https://github.com/usethesource/rascal/pull/2571) - Make breakpoint suspension global * [vallang #287](https://github.com/usethesource/vallang/pull/287) - fix issue #286 with tests * [vallang #288](https://github.com/usethesource/vallang/pull/288) - Increase performance of IString Readers for the `read(CharBuffer)` overload * [vallang #289](https://github.com/usethesource/vallang/pull/289) - Added support for writing formfeed and backspace escaped characters @@ -642,3 +705,26 @@ beta testing new features. * [#2390](https://github.com/usethesource/rascal/issues/2390) - When module loading fails due to a cyclic extend, the current module is not cleaned up and left as a "zombie" * [#2388](https://github.com/usethesource/rascal/issues/2388) - Extend cycle detection can be spoofed by confusing imports halfway * [#2407](https://github.com/usethesource/rascal/issues/2407) - Fix import/extend cycle in checker that triggers undefined interpreter behavior +* [#2394](https://github.com/usethesource/rascal/issues/2394) - Remove messages during tpl packaging +* [#2513](https://github.com/usethesource/rascal/issues/2513) - 'Undeclared variable' error on use of declared constructor +* [#2515](https://github.com/usethesource/rascal/issues/2515) - Translate java IO exceptions to better rascal IO exceptions +* [#2497](https://github.com/usethesource/rascal/issues/2497) - Name in default expression not found although it is defined +* [#2481](https://github.com/usethesource/rascal/issues/2481) - `MalFormedURI` exception when backslashes occur in qualified module names (RC70) +* [#2482](https://github.com/usethesource/rascal/issues/2482) - Spurious "Conflicting module locations found" error (RC72) +* [#2462](https://github.com/usethesource/rascal/issues/2462) - Self import error from std lib +* [#2464](https://github.com/usethesource/rascal/issues/2464) - TPL not written when module has static errors +* [#2466](https://github.com/usethesource/rascal/issues/2466) - Imprecise error message "module name is ambiguous" +* [#2465](https://github.com/usethesource/rascal/issues/2465) - mvn, jar and zip schemes do not fully load module texts anymore if called from rascal-lsp +* [#2461](https://github.com/usethesource/rascal/issues/2461) - REPL: Strange characters when pressing backspace +* [#2459](https://github.com/usethesource/rascal/issues/2459) - NPE in error recovery disambiguation +* [#2443](https://github.com/usethesource/rascal/issues/2443) - Debug variable hover how shows appl/prod tree instead of more readable yield `(Statement) if (bla) ...` +* [#2445](https://github.com/usethesource/rascal/issues/2445) - Warnings after turning on debug mode +* [#2438](https://github.com/usethesource/rascal/issues/2437) - String streamer in webserver and REPLcontentServer fail on large output +* [#2420](https://github.com/usethesource/rascal/issues/2420) - Unexpected errors/warning when starting a Rascal console +* [#2421](https://github.com/usethesource/rascal/issues/2421) - Turning on debug mode causes stack dump, but debugger stays working +* [#2415](https://github.com/usethesource/rascal/issues/2415) - Interpreter crashes when calling a varargs functions with too few arguments +* [#2379](https://github.com/usethesource/rascal/issues/2379) - `ArrayIndexOutOfBoundException` from `vallang` at constructor pattern match +* [#2397](https://github.com/usethesource/rascal/issues/2397) - Importing a typepal module makes the type checker bail out silently +* [#2562](https://github.com/usethesource/rascal/issues/2562) - Unexpected "Remove code clone" error +* [#2563](https://github.com/usethesource/rascal/issues/2563) - ATypeTest creates a cycle that breaks all following tests +* [#2519](https://github.com/usethesource/rascal/issues/2519) - [documentation error] declarations != relations diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js index 328ddc8c9..42c0a47f9 100644 --- a/src/components/HomepageFeatures/index.js +++ b/src/components/HomepageFeatures/index.js @@ -13,7 +13,7 @@ const FeatureList = [
  • Concrete Syntax Fragments
  • Static Analysis
  • Eclipse Plugins
  • -
  • VScode extensions
  • +
  • VS Code extensions
  • Language Server Protocol
  • ),