diff --git a/.github/workflows/pr-builder.yml b/.github/workflows/pr-builder.yml
index dc4c52d7e..194f7e76b 100644
--- a/.github/workflows/pr-builder.yml
+++ b/.github/workflows/pr-builder.yml
@@ -20,6 +20,11 @@ jobs:
with:
name: sources
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: yarn
+
# Do a dummy build to see if there are errors
- name: Install dependencies
run: yarn install --frozen-lockfile
diff --git a/courses/GettingHelp/Browsing/Browsing.md b/courses/GettingHelp/Browsing/Browsing.md
index db1c61933..30480c932 100644
--- a/courses/GettingHelp/Browsing/Browsing.md
+++ b/courses/GettingHelp/Browsing/Browsing.md
@@ -30,7 +30,7 @@ been checked before publication.
Every Rascal library project also represents one _course_. Each module produces
one _concept_ and encapsulates what is defined and documented within. In particular
-the [standard library]((Library)) is interesting to browse. The package hierarchy
+the [standard library]((Library:Index)) is interesting to browse. The package hierarchy
of the library is mapped one-to-one to the concept hierarchy of the corresponding course.
#### Code examples
@@ -44,5 +44,5 @@ Most pages are indexed carefully, for example using the appropriate keywords and
Nevertheless the search box on the website will produce
results in all courses, like [Help]((GettingHelp)) (this course)
-and [Recipes]((Recipes)) or ((Library)).
+and [Recipes]((Recipes)) or ((Library:Index)).
diff --git a/courses/GettingHelp/FurtherReading/FurtherReading.md b/courses/GettingHelp/FurtherReading/FurtherReading.md
index ab5c931e4..8d78d08a2 100644
--- a/courses/GettingHelp/FurtherReading/FurtherReading.md
+++ b/courses/GettingHelp/FurtherReading/FurtherReading.md
@@ -14,12 +14,12 @@ keywords:
1. To understand the terminology used in Rascal and by Rascal programmers ((Rascalopedia)) is a focused encyclopedia of meta programming.
1. To understand error messages produced by Rascal, there is information on all ((RunTimeErrors)) and ((CompileTimeErrors)).
1. To know everything about every detail of Rascal syntax and semantics, the [Rascal reference manual]((course:Rascal)) applies.
-1. The full standard ((Library)) is documented [here]((Library)).
+1. The full standard ((Library:Index)) is documented [here]((Library:Index)).
#### Packages
Rascal can be extended by loading different (third-party) [packages](/docs/Packages). For example:
-* [flybytes](/docs/Packages/Flybytes) enables JVM bytecode analysis, transformation and generation in Rascal.
-* [typepal](/docs/Packages/Typepal) is a generic name and type analysis framework for programming languages and textual DSLs.
+* [flybytes](/docs/Packages/org.rascalmpl.flybytes) enables JVM bytecode analysis, transformation and generation in Rascal.
+* [typepal](/docs/Packages/org.rascalmpl.typepal) is a generic name and type analysis framework for programming languages and textual DSLs.
diff --git a/courses/Packages/index.md b/courses/Packages/index.md
index 2e9789066..1a622ee4e 100644
--- a/courses/Packages/index.md
+++ b/courses/Packages/index.md
@@ -39,20 +39,20 @@ The currently available packages are grouped in two categories: language support
| Language name | Package | Note |
| ------------- | ------- | ----- |
-| C and C++ | [clair](/docs/Packages/Clair) | |
-| Java | [rascal](/docs/Rascal) | To be factored out of the standard library soon |
-| PHP | [php-analysis](/docs/Packages/PhpAnalysis) | |
-| Python | [python-air](/docs/Packages/PythonAir) | |
-| JVM bytecode | [flybytes](/docs/Packages/Flybytes) | Forward and Reverse |
+| C and C++ | [clair](/docs/Packages/org.rascalmpl.clair) | |
+| Java | [java-air](/docs/Packages/org.rascalmpl.java-air) | used to be part of standard library |
+| PHP | php-analysis | currently not building will be released as soon as possible |
+| Python | python-air | currently not building will be released as soon as possible |
+| JVM bytecode | [flybytes](/docs/Packages/org.rascalmpl.flybytes) | Forward and Reverse |
### Generic Libraries
| Library Name | Package | Note |
| ------------ | ------- | ----- |
-| Dr Ambiguity | [drambiguity](/docs/Packages/DrAmbiguity) | Interactive UI based on Salix for detection, diagnostics and fixing of ambiguity context-free grammars. |
-| Salix | [salix-core](/docs/Packages/SalixCore) | User interface framework for Rascal |
-| Salix Contrib | [salix-contrib](/docs/Packages/SalixContrib) | Useful extensions for Salix |
-| Rascal GIT | [rascal-git](/docs/Packages/RascalGit) | Accessing GIT from Rascal |
-| Rascal LSP | [rascal-lsp](/docs/Packages/RascalLsp) | LSP for Rascal and LSP generator for DSLs in Rascal |
-| Typepal | [typepal](/docs/Packages/Typepal) | Generic name and type analysis framework; to be factored in to the standard library soon |
-| Rascal Tutor | [rascal-tutor](/docs/Packages/RascalTutor) | Rascal source code documenter and manual authoring tool; to be factored into the standard library soon |
+| Dr Ambiguity | drambiguity | Interactive UI based on Salix for detection, diagnostics and fixing of ambiguity context-free grammars. Currently documentation is not building, will be released as soon as possible |
+| Salix | [salix-core](/docs/Packages/org.rascalmpl.salix-core) | User interface framework for Rascal |
+| Salix Contrib | [salix-contrib](/docs/Packages/org.rascalmpl.salix-contrib) | Useful extensions for Salix |
+| Rascal GIT | [rascal-git](/docs/Packages/edu.appstate.cs.rascal-git/) | Accessing GIT from Rascal |
+| Rascal LSP | [rascal-lsp](/docs/Packages/org.rascalmpl.rascal-lsp/) | LSP for Rascal and LSP generator for DSLs in Rascal |
+| Typepal | [typepal](/docs/Packages/org.rascalmpl.typepal/) | Generic name and type analysis framework |
+| Rascal Tutor | rascal-tutor | Rascal source code documenter and manual authoring tool, documentation not released yet due to changes in tutor infrastructure |
diff --git a/courses/Rascal/Declarations/Function/Function.md b/courses/Rascal/Declarations/Function/Function.md
index d72f7de53..41ecd7823 100644
--- a/courses/Rascal/Declarations/Function/Function.md
+++ b/courses/Rascal/Declarations/Function/Function.md
@@ -186,7 +186,7 @@ we can define canonicalization functions. The same holds for ((Syntax Definition
This definition implies a default function for t(), f() and neg(B):
-```rascal-shell,continue
+```rascal-shell
data B = t() | f() | neg(B);
```
diff --git a/courses/Rascal/Errors/CompileTimeErrors/ArgumentMismatch/ArgumentMismatch.md b/courses/Rascal/Errors/CompileTimeErrors/ArgumentMismatch/ArgumentMismatch.md
index 59ee6b0ac..782036a9d 100644
--- a/courses/Rascal/Errors/CompileTimeErrors/ArgumentMismatch/ArgumentMismatch.md
+++ b/courses/Rascal/Errors/CompileTimeErrors/ArgumentMismatch/ArgumentMismatch.md
@@ -39,7 +39,7 @@ Unless it is called with an argument of a wrong type:
triple([1,2,3])
```
We can define a new version of `triple` function that accepts lists:
-```rascal-shell,continue
+```rascal-shell
list[int] triple(list[int] L) = [3 * x | x <- L];
triple([1,2,3]);
```
diff --git a/courses/Rascal/Errors/CompileTimeErrors/UndeclaredFunction/UndeclaredFunction.md b/courses/Rascal/Errors/CompileTimeErrors/UndeclaredFunction/UndeclaredFunction.md
index 67a9d23ec..5a5d4b543 100644
--- a/courses/Rascal/Errors/CompileTimeErrors/UndeclaredFunction/UndeclaredFunction.md
+++ b/courses/Rascal/Errors/CompileTimeErrors/UndeclaredFunction/UndeclaredFunction.md
@@ -36,7 +36,7 @@ Calling the undeclared function `triple` gives an error:
triple(5)
```
We can remedy this by declaring the function:
-```rascal-shell,continue
+```rascal-shell
int triple(int n) = 3 * n;
triple(5)
```
diff --git a/courses/Rascal/Statements/Throw/Throw.md b/courses/Rascal/Statements/Throw/Throw.md
index 0df65b7e6..d19cdeef5 100644
--- a/courses/Rascal/Statements/Throw/Throw.md
+++ b/courses/Rascal/Statements/Throw/Throw.md
@@ -53,7 +53,7 @@ if (size(aList) == 3) {
}
```
-Here we throw a constructor of ((Exception-RuntimeException)):
+Here we throw a constructor of ((data:Exception-RuntimeException)):
```rascal-shell,error
import Exception;
// highlight-next-line
diff --git a/courses/Recipes/BasicProgramming/CodeModels/CodeModels.md b/courses/Recipes/BasicProgramming/CodeModels/CodeModels.md
index 8d2e77330..ae1cb5752 100644
--- a/courses/Recipes/BasicProgramming/CodeModels/CodeModels.md
+++ b/courses/Recipes/BasicProgramming/CodeModels/CodeModels.md
@@ -34,7 +34,7 @@ The core language independent model can be found here: [analysis::m3]((Library:a
Extensions for representing facts about specific languages:
-* [lang::java::m3]((Library:lang::java::m3)).
+* [lang::java::m3]((lang::java::m3)).
#### Examples
diff --git a/courses/Recipes/Metrics/MeasuringJava/MeasuringClasses/MeasuringClasses.md b/courses/Recipes/Metrics/MeasuringJava/MeasuringClasses/MeasuringClasses.md
index 0347d7a14..f82036416 100644
--- a/courses/Recipes/Metrics/MeasuringJava/MeasuringClasses/MeasuringClasses.md
+++ b/courses/Recipes/Metrics/MeasuringJava/MeasuringClasses/MeasuringClasses.md
@@ -10,7 +10,7 @@ A typical example of how to use M3 to analyze Java classes.
First we import the basic data types for representing Java. The model is called _M3_, and its definition is split acros a generic
-language independent module called ((Library:module:analysis::m3::Core)) and a Java specific part called ((Library:module:lang::java::m3::AST)). Have a look at the documentation
+language independent module called ((analysis::m3::Core)) and a Java specific part called ((lang::java::m3::AST)). Have a look at the documentation
of these modules later. For now we will go through using them in a few examples.
```rascal-prepare
diff --git a/courses/Recipes/Metrics/MeasuringJava/MeasuringJava.md b/courses/Recipes/Metrics/MeasuringJava/MeasuringJava.md
index 7d5bb6c2c..14736c699 100644
--- a/courses/Recipes/Metrics/MeasuringJava/MeasuringJava.md
+++ b/courses/Recipes/Metrics/MeasuringJava/MeasuringJava.md
@@ -39,7 +39,7 @@ These are a number of recipes for measuring different things about Java:
First we import the basic data types for representing Java. The model is called _M3_, and its definition is split acros a generic
-language independent module called ((Library:module:analysis::m3::Core)) and a Java specific part called ((Library:module:lang::java::m3::AST)). Have a look at the documentation
+language independent module called ((analysis::m3::Core)) and a Java specific part called ((lang::java::m3::AST)). Have a look at the documentation
of these modules later. For now we will go through using them in a few examples.
```rascal-prepare
@@ -71,7 +71,7 @@ You can use this code to extract a classpath if the project is a Maven project:
```rascal-shell,continue
import util::Reflective;
-cp = getProjectPathConfig(|tmp:///snakes-and-ladders|).javaCompilerPath;
+cp = getProjectPathConfig(|tmp:///snakes-and-ladders|).libs;
```
and then pass it into the M3 extractor (this project does not have dependencies)
diff --git a/courses/WhyRascal/UseCases/CodeAsData/CodeAsData.md b/courses/WhyRascal/UseCases/CodeAsData/CodeAsData.md
index ffd9135c8..80ebf5357 100644
--- a/courses/WhyRascal/UseCases/CodeAsData/CodeAsData.md
+++ b/courses/WhyRascal/UseCases/CodeAsData/CodeAsData.md
@@ -6,8 +6,8 @@ Code analysis has many motivations. In this example we will see how we can resol
#### Parsing=Turning Code into Data
-In this example we use Rascal's JDT library, which wraps Eclipse's Java Development Toolkit compiler for Java and makes its information available as Rascal data types. This intermediate model is called _M3_, and its definition is split acros a generic
-language independent module called ((Library:module:analysis::m3::Core)) and a Java specific part called ((Library:module:lang::java::m3::Core)).
+In this example we use the ((org.rascalmpl.java-air)) package, which wraps Eclipse's Java Development Toolkit compiler for Java and makes its information available as Rascal data types. This intermediate model is called _M3_, and its definition is split acros a generic
+language independent module called ((analysis::m3::Core)) and a Java specific part called ((lang::\java::m3::Core)).
```rascal-prepare
import IO;
diff --git a/pom.xml b/pom.xml
index edb3d2cab..6ccbdb09f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,19 +24,19 @@
UTF-8
UTF-8
- 0.28.9
- 0.40.17
- 0.19.9
- 0.13.1
- 0.1.15
- 0.2.8
- 0.14.8
- 0.2.7
- 0.2.7
- 2.21.0-2
- 0.3.5
- 0.2.4
- 0.0.8
+ 0.30.2
+ 0.41.2
+ 0.13.3
+ 0.1.17
+ 0.2.10
+ 0.15.5
+ 0.2.9
+ 0.2.9
+ 0.3.8
+ 1.0.1
+ 2.22.0-RC3
+
+
@@ -111,15 +111,6 @@
docs/**/*.*
docs/index.value
-
- org.rascalmpl
- rascal-tutor
- ${rascal-tutor.version}
- ${project.basedir}
- docs/**/*.*
- **/examples/,**/questions/
- docs/index.value
-
org.rascalmpl
clair
@@ -160,21 +151,29 @@
docs/**/*.*
docs/index.value
-
+
+
+
+ org.rascalmpl
+ java-air
+ ${java-version}
+ ${project.basedir}
+ docs/**/*.*
+ docs/index.value
@@ -196,6 +195,7 @@
false
false
false
+ true
${project.basedir}
@@ -210,9 +210,8 @@
${project.basedir}/courses/Packages
- |lib://rascal/org/rascalmpl/library/lang/rascal|
- |lib://rascal/org/rascalmpl/library/lang/c90|
- |lib://rascal/org/rascalmpl/library/lang/c90|
+ |std:///lang/rascal|
+ |std:///lang/c90|
@@ -276,12 +275,12 @@
org.rascalmpl
clair
${clair.version}
-
+
org.rascalmpl
- rascal-tutor
- ${rascal-tutor.version}
-
+ java-air
+ ${java-air.version}
+
org.rascalmpl
salix-core
@@ -302,15 +301,15 @@
drambiguity
${drambiguity.version}
-
+
+
diff --git a/release-notes/rascal-0-41-x-release-notes.md b/release-notes/rascal-0-41-x-release-notes.md
index 2d9c01328..2013cfcae 100644
--- a/release-notes/rascal-0-41-x-release-notes.md
+++ b/release-notes/rascal-0-41-x-release-notes.md
@@ -6,7 +6,7 @@ sidebar_position: 87
In this post we report on the Rascal release 0.41.x
-## Release 0.41.0 - September, 2025
+## Release 0.41.0 & 0.41.1 - December, 2025
Welcome to Rascal 0.41.0! 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...
@@ -43,9 +43,19 @@ Nothing else has changed w.r.t. Java analysis. The same module names, functions
If you are interested in bringing `java-air` up to JLS-17, 19, 21, 23, ...; This is an example of something where we welcome help from the community. Please have a look at https://github.com/usethesource/java-air/.
+:::info
+For students close to a deadline: VS Code allows you to downgrade your extension, so you can always go back to a version of the VS Code extension with an older release of rascal packaged.
+
+- find the extension in the extensions bar
+- click on the cogwheel in the corner
+- clock "Install Specific Version..."
+
+:::
+
### Parser improvements (the Error Recovery Mode)
The generated parsers now support an "error recovery" mode. In this mode the parser is **robust** against errors in the _input_. This is extremely useful for interactive editing situations, where sometimes a file is under development and we still want syntax-directed and semantics-directed features. Examples of downstream features that can work well with a recovered parse:
+
* highlighting,
* autocompletion,
* type-checking,
@@ -138,8 +148,9 @@ 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.
* The Debug Adapter Protocol (DAP) implementation (an extension to the Language Service Protocol) was moved to the Rascal project.
-* Several core features of the Language Service Protocol server for Rascal (and DSLs written in Rascal) moved along with it.
+* Several core infrastructure features of the Language Service Protocol server for Rascal (and DSLs written in Rascal) moved along with it.
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.
### Type checker improvements
diff --git a/yarn.lock b/yarn.lock
index bdee0d7e3..e43739dba 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1568,7 +1568,7 @@
"@docusaurus/theme-search-algolia" "2.4.3"
"@docusaurus/types" "2.4.3"
-"@docusaurus/react-loadable@5.5.2":
+"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2":
version "5.5.2"
resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce"
integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==
@@ -2871,9 +2871,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464:
- version "1.0.30001525"
- resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz"
- integrity sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==
+ version "1.0.30001760"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz"
+ integrity sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==
ccount@^1.0.0:
version "1.1.0"
@@ -6207,14 +6207,6 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1:
dependencies:
"@babel/runtime" "^7.10.3"
-"react-loadable@npm:@docusaurus/react-loadable@5.5.2":
- version "5.5.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce"
- integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==
- dependencies:
- "@types/react" "*"
- prop-types "^15.6.2"
-
react-router-config@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988"