From e92c1669b505483b7cfeffe71769266349432313 Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Thu, 17 Oct 2024 11:11:36 +0200 Subject: [PATCH 01/25] bumped rascal to 0.40.7 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4b2bbd8f7..d46348c70 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ UTF-8 0.24.0 - 0.34.0 + 0.40.7 0.18.4 0.12.0 0.1.14 From a548f6560e2595440434ecc9cf9218066caab8e6 Mon Sep 17 00:00:00 2001 From: Davy Landman Date: Thu, 17 Oct 2024 15:10:18 +0200 Subject: [PATCH 02/25] Updated to latest released versions --- pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index d46348c70..ed64a8b1b 100644 --- a/pom.xml +++ b/pom.xml @@ -24,14 +24,14 @@ UTF-8 UTF-8 - 0.24.0 - 0.40.7 - 0.18.4 + 0.28.5 + 0.40.11 + 0.19.6 0.12.0 0.1.14 - 0.2.3 - 0.8.10 - 0.2.3 + 0.2.5 + 0.14.4 + 0.2.5 0.2.4 2.20.0 0.2.0 From 3f758423ca084ddc55033aeff63057a9107d8c9a Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Thu, 17 Oct 2024 19:38:37 +0200 Subject: [PATCH 03/25] bumped versions of tutor and rascal --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index ed64a8b1b..522420909 100644 --- a/pom.xml +++ b/pom.xml @@ -25,8 +25,8 @@ UTF-8 0.28.5 - 0.40.11 - 0.19.6 + 0.40.12 + 0.19.7 0.12.0 0.1.14 0.2.5 From 9e2f998002f88f28a79f73c4c9209f631411355d Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Thu, 17 Oct 2024 19:43:08 +0200 Subject: [PATCH 04/25] bumped flybytes --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 522420909..ec4804399 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ 0.19.7 0.12.0 0.1.14 - 0.2.5 + 0.2.6 0.14.4 0.2.5 0.2.4 From a8c26f85fe2330e92d9b6d701885c155f06910ad Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Thu, 17 Oct 2024 19:43:57 +0200 Subject: [PATCH 05/25] dropped double compilation of standard library --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ec4804399..f8b98ad78 100644 --- a/pom.xml +++ b/pom.xml @@ -188,7 +188,7 @@ false ${project.basedir} - |lib://rascal/org/rascalmpl/library| + ${project.basedir}/courses/WhyRascal ${project.basedir}/courses/Recipes ${project.basedir}/courses/Rascal From 095d1f593a2db9bb698ebe81cccde0b22b69d91f Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Fri, 18 Oct 2024 08:56:24 +0200 Subject: [PATCH 06/25] reactivated unpacking of rascal library --- pom.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pom.xml b/pom.xml index f8b98ad78..bf0a09cde 100644 --- a/pom.xml +++ b/pom.xml @@ -77,6 +77,14 @@ + + org.rascalmpl + rascal + ${rascal.version} + ${project.basedir} + docs/**/*.* + docs/index.value + org.rascalmpl flybytes From acd2921e0c8ff6fba4aaad90b05de897e5eb1f8a Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Fri, 18 Oct 2024 13:52:58 +0200 Subject: [PATCH 07/25] bumped typepal --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bf0a09cde..71bea732b 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ 0.12.0 0.1.14 0.2.6 - 0.14.4 + 0.14.6 0.2.5 0.2.4 2.20.0 From 50d1a849800f608d5bdc4f6fe383a3e24f4caa9a Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Fri, 18 Oct 2024 14:06:24 +0200 Subject: [PATCH 08/25] removed Downloading messages from log --- .github/workflows/base-jobs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/base-jobs.yml b/.github/workflows/base-jobs.yml index 2af44f259..efb75084e 100644 --- a/.github/workflows/base-jobs.yml +++ b/.github/workflows/base-jobs.yml @@ -37,7 +37,7 @@ jobs: # Copy docs from dependent projects, run tutor on local courses folder and copy results into docs and static/assets - name: Run rascal-tutor and reuse libraries - run: MAVEN_OPTIONS="-Xss256m -Xmx3G" mvn -B clean package -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -Dwebdriver.chrome.browser=`which chrome` + run: MAVEN_OPTIONS="-Xss256m -Xmx3G" mvn -B clean package -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -Dwebdriver.chrome.browser=`which chrome` | grep -v "\[INFO\] Downloading" - uses: actions/upload-artifact@v4 with: @@ -48,4 +48,4 @@ jobs: !.git !.github !.vscode - !META-INF \ No newline at end of file + !META-INF From 93267ae792dbf97f8ba6005901d64dce4eb0816d Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Mon, 28 Oct 2024 19:48:02 +0100 Subject: [PATCH 09/25] bumped rascal to 0.40.14 and maven plugin to 0.28.8 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 71bea732b..81443c3bd 100644 --- a/pom.xml +++ b/pom.xml @@ -24,8 +24,8 @@ UTF-8 UTF-8 - 0.28.5 - 0.40.12 + 0.28.8 + 0.40.14 0.19.7 0.12.0 0.1.14 From 17a18091bd1d86de3953258b8f601998e202932e Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Mon, 4 Nov 2024 13:25:38 +0100 Subject: [PATCH 10/25] started release notes for rascal --- release-notes/rascal-0-40-x-release-notes.md | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 release-notes/rascal-0-40-x-release-notes.md diff --git a/release-notes/rascal-0-40-x-release-notes.md b/release-notes/rascal-0-40-x-release-notes.md new file mode 100644 index 000000000..97b6eef1b --- /dev/null +++ b/release-notes/rascal-0-40-x-release-notes.md @@ -0,0 +1,21 @@ +--- +authors: [jvinju] +title: "Rascal 0.40.x release notes" +sidebar_position: 96 +--- + +In this post we report on the Rascal release 0.40.x + + + +## Release 0.40.14 - November 5, 2024 + +The public release 0.40.x follows release 0.24.x; many improvements have been made in projects that depends 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 support for XML, JSON and HTML as exchange formats has been improved or completely rewritten. The main feature that was added was the optional `loc src` keyword field that provides the exact location of each node as it appears in the XML, HTML or JSON source text. + +The following issues were solved: +* TODO + +Standard library maintenance: +* Accurate and correct parsers of Windows and Unix file paths were added to the standard library. From 081dd29fa064894386f29629de1ee9fa34b0d023 Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Thu, 7 Nov 2024 11:51:41 +0100 Subject: [PATCH 11/25] added more notes --- release-notes/rascal-0-40-x-release-notes.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/release-notes/rascal-0-40-x-release-notes.md b/release-notes/rascal-0-40-x-release-notes.md index 97b6eef1b..079982fa8 100644 --- a/release-notes/rascal-0-40-x-release-notes.md +++ b/release-notes/rascal-0-40-x-release-notes.md @@ -19,3 +19,19 @@ The following issues were solved: Standard library maintenance: * Accurate and correct parsers of Windows and Unix file paths were added to the standard library. +* `HTMLElement(loc src = |unknown:///|)` was added to position every tag from start to end via the `src` attribute. + +The Java model has received big maintenance love and attention: +* Bumped and upgraded to the JDT version from Eclipse 2020-03 +* The AST nodes in `lang::java::m3::AST` now all satisfy the AST contract in `analysis::m3::AST`. This means that +all source code elements are represented in the tree, annotated with `src` origins and ordered from left-to-right as +they were in the original source file. +* The constructors: enum, enumConstant, compilationUnit, class, interface, method, field, etc. etc. all received +extra positional parameters for the concept of modifiers. Before these were modelled as keyword parameters, but +that invalidated the earlier mentioned AST contract. +* An AST and M3 model of the Java 9 module system was added. +* The `isSuper` boolean was removed from the AST definition of methodInvocation and `new` calls, also to satisfy the AST contract. +* Java Annotations AST constructors were moved from Expression to Declaration. +* String based unary and binary operator constructors for Expressions were unfolded to a constructor for each operator, i.e. `plus(Expression, Expression) instead of `binop(Expression, "+", Expression)` +* TODO + From 959dc4fe4366aa3f0b991b9ae60923025e0cfc2d Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Thu, 7 Nov 2024 14:54:00 +0100 Subject: [PATCH 12/25] lots more --- release-notes/rascal-0-40-x-release-notes.md | 50 ++++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/release-notes/rascal-0-40-x-release-notes.md b/release-notes/rascal-0-40-x-release-notes.md index 079982fa8..e2b4f194a 100644 --- a/release-notes/rascal-0-40-x-release-notes.md +++ b/release-notes/rascal-0-40-x-release-notes.md @@ -14,14 +14,45 @@ The public release 0.40.x follows release 0.24.x; many improvements have been ma The support for XML, JSON and HTML as exchange formats has been improved or completely rewritten. The main feature that was added was the optional `loc src` keyword field that provides the exact location of each node as it appears in the XML, HTML or JSON source text. +A new `mvn://` scheme was added to be able to address with brief but unique notation the jar files in the local M2 repository. It supports two modes: +* `mvn://groupId!artifactId!optionAlComplexVersionString/pathInsideJar`, shorthand for identifying artifacts inside the mvn repository on this machine. +* `mvn:///path/inside/m2/repository/jarFile.jar` for exploring the mvn repository from its root. +If `maven.repo.local` is set, then that is the root of the M2 repository. Otherwise if `~/m2/.repository` exists (in the users ome directory) then that is used. Otherwise `mvn` is executed with `-Dexpression=settings.localRepository` to extract the setting from the current `pom.xml` file. This is _not_ the official order as `mvn` resolves these configuration options; but it was chosen for the sake of efficiency. + +A great deal of tests were fixed, enhanced or extended as a side-effect of the compiler project. + The following issues were solved: -* TODO +* string `visit` with unicode characters had a bug +* Standard library maintenance: * Accurate and correct parsers of Windows and Unix file paths were added to the standard library. * `HTMLElement(loc src = |unknown:///|)` was added to position every tag from start to end via the `src` attribute. +* The documentation strings were ported from `@doc{ }` notation to `@synopsis{..}, @description{..}, @examples{..}, @benefits{..}, @pitfalls{..}` separate tags. +* The `@deprecated{..}` tag is now also used during API documentation generation. It is rendered between the synsopsis and the declaration signature. +* The Box language for automatic string formatting was revived and its box2text algorithm was optimized. See `lang::box` + * Box2text was re-implemented using list comprehensions and list splicing for efficiency and brevity. + * Box arrays (tables) were fixed and finalized, and utility support for mapping lists to tables was added. + * Box "groups" were added (ported from ASF+SDF) as a means to easily generate boxes from (separated) lists. + * The concepts of fonts and highlighting were completely removed from Box, as this is an orthogonal feature +implemented elsewhere by highlighter algoriths and mappings to HTML. The new trick is to use Box to format a file, +then reparse that file and map it to ANSI or HTML or other markup formalisms. + * the NULL box was added as a convenience for plugging holes and not loose parity or other counts. + * Tests for Box2text were added. + * Tree2Box is a new language-parametric formatter that maps any parse tree to Box using default heuristics. They trigger on the shape of production rules as they are typically found in programming languages. Tree2Box is a re-implementation of the +`pandora` tool of the ASF+SDF Meta-Environment, but written in Rascal instead of C+ApiGen. You can override default behavior by adding rules for your exceptional language constructs. +* The CSV model now has origin fields for Tables, Records and Fields: `loc src=|unknown:///`, such that CSV files can be +parsed and treated as (DSL) source code. +* `lang::json::IO` now has full origin tracking support. +* `util::Monitor` progress monitoring is now also supported on textual interfaces using UTF8 and ANSI support for pretty bars. If UTF8 is not supported by the terminal, it used ASCII art. If ANSI is not available, it defaults to normal event logging prins on the console. The progress bar will always default to the latter if in a CI environment of if `-Drascal.monitor.batch` is set. +* The progress monitors for module importation in the interpreter and parser generator were rationalized. +* In `lang::rascal::grammar::storage::ModuleParserStorage` a new feature for saving generated parsers to disk and loading them again was added. It follows the interface design of `ParseTree::parsers``. You can load a saved parser and used it as if +just generated with `parsers`. +* `lang::rascal::vis::ImportGraph` was added as a port of the ASF+SDF Meta-Environment import graph visual. +* `lang::std::ANSI` is a almost complete specification of the ANSI standard for character markup. +* `util::Clipboard` was added to give programmatic access to the systems copy/paste feature for textual content. The feature starts up lazily so the first call to `copy` or `paste` is slower than subsequent calls. In a headless environment `copy` always returns the empty string and `paste` simply has no effect. Paste and copy are "thread friendly" in that they will produce or reproduce a string that at one time was in the system's copy/paste buffer. However, it is not necessarily the last entry and other processes may overwrite the buffer while the Rascal programming is running that has just written to it. -The Java model has received big maintenance love and attention: +The Java model has received big maintenance love and attention, including improvements to the generic M3 model: * Bumped and upgraded to the JDT version from Eclipse 2020-03 * The AST nodes in `lang::java::m3::AST` now all satisfy the AST contract in `analysis::m3::AST`. This means that all source code elements are represented in the tree, annotated with `src` origins and ordered from left-to-right as @@ -33,5 +64,18 @@ that invalidated the earlier mentioned AST contract. * The `isSuper` boolean was removed from the AST definition of methodInvocation and `new` calls, also to satisfy the AST contract. * Java Annotations AST constructors were moved from Expression to Declaration. * String based unary and binary operator constructors for Expressions were unfolded to a constructor for each operator, i.e. `plus(Expression, Expression) instead of `binop(Expression, "+", Expression)` -* TODO +* lang::java::m3::AST was documented and so was analysis::m3::AST +* lang::java::m3::Core was documented and so was analysis::m3::Core +* `composeM3` was generalized for any number of keyword fields which are either sets or lists. +* `m3SpecificationTest` checks for the internal sanity and completeness of an M3 model. Can be used to test language front-ends. +* `Java2ObjectFlow` was upgraded for all the changes in the AST constructors. However it may still need extension for new constrtructors like lambda expressions. +* Lambda's were added to AST Expressions +* Method references were added to AST Expressions +* Up to JLS14 all new Java constructs were added to the AST and the M3 Core model. The previous standard we supported was JLS8. +* Intersection types were added to the Type AST class +* The bounds constructors of Type ASTs were renamed from `upperbound` and `lowerbound` to `super` and `extends`. +* Java versions are now specified as constructors of the `Language` data type, for accurate description of the JLS language level the user needs to reflect. +* M3 extraction from JVM binary class files was maintained and now also supports language features up to JLS14. In particular the Java 9 module system was added to the mapping. +* Tracebility with origin tracking was improved for both source code and binary classfile analysis, so if NPE's happen a clear cause can be printed. +* From 9487a18b58c9f8729ba2b99657265899f11fc0cf Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Thu, 7 Nov 2024 15:28:57 +0100 Subject: [PATCH 13/25] git diff scan complete. should still go through resolved issues --- release-notes/rascal-0-40-x-release-notes.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/release-notes/rascal-0-40-x-release-notes.md b/release-notes/rascal-0-40-x-release-notes.md index e2b4f194a..606b5fbc0 100644 --- a/release-notes/rascal-0-40-x-release-notes.md +++ b/release-notes/rascal-0-40-x-release-notes.md @@ -19,14 +19,18 @@ A new `mvn://` scheme was added to be able to address with brief but unique nota * `mvn:///path/inside/m2/repository/jarFile.jar` for exploring the mvn repository from its root. If `maven.repo.local` is set, then that is the root of the M2 repository. Otherwise if `~/m2/.repository` exists (in the users ome directory) then that is used. Otherwise `mvn` is executed with `-Dexpression=settings.localRepository` to extract the setting from the current `pom.xml` file. This is _not_ the official order as `mvn` resolves these configuration options; but it was chosen for the sake of efficiency. -A great deal of tests were fixed, enhanced or extended as a side-effect of the compiler project. +A great deal of tests were fixed, enhanced or extended as a side-effect of the compiler project. Another visible aspect of the progress of the compiler is that now all Rascal runtime values (from vallang and beyond) now support `getFingerprint()` methods which help in optimizing patter matching and dispatch in generated code by the compiler. These methods' return values have become a strict contract for future implementations of Rascal values, including parse trees and reified types and first-class functions. The following issues were solved: * string `visit` with unicode characters had a bug -* +* `util::ShellExec` had some IO synchronization issues which were resolved. +* The JUnit test runners report exceptions better now. +* The broken and unused `stdout://` and `stdin://` resolvers were removed. +* The `IO::watch` functionality was improved for logical source locations. However the system is still too slow on Mac to work effectively in an interactive development environment. +* TODO Standard library maintenance: -* Accurate and correct parsers of Windows and Unix file paths were added to the standard library. +* Accurate and correct parsers of Windows and Unix file paths were added to the standard library. This includes a new `unc://` resolver to accurately represent the semantics of UNC paths, and `cwddrive://` which can represent the current working directory on a given drive letter on Windows. * `HTMLElement(loc src = |unknown:///|)` was added to position every tag from start to end via the `src` attribute. * The documentation strings were ported from `@doc{ }` notation to `@synopsis{..}, @description{..}, @examples{..}, @benefits{..}, @pitfalls{..}` separate tags. * The `@deprecated{..}` tag is now also used during API documentation generation. It is rendered between the synsopsis and the declaration signature. @@ -51,6 +55,13 @@ just generated with `parsers`. * `lang::rascal::vis::ImportGraph` was added as a port of the ASF+SDF Meta-Environment import graph visual. * `lang::std::ANSI` is a almost complete specification of the ANSI standard for character markup. * `util::Clipboard` was added to give programmatic access to the systems copy/paste feature for textual content. The feature starts up lazily so the first call to `copy` or `paste` is slower than subsequent calls. In a headless environment `copy` always returns the empty string and `paste` simply has no effect. Paste and copy are "thread friendly" in that they will produce or reproduce a string that at one time was in the system's copy/paste buffer. However, it is not necessarily the last entry and other processes may overwrite the buffer while the Rascal programming is running that has just written to it. +* `util::Eval` was refactored and reimplemented for efficiency and robustness, following the TutorCommandExecutor design from the rascal-tutor project. Eval instances are now fully configured via `PathConfig`. +* The concept of CodeActions was added to util::IDEServices, they also extend error `Message` constructors. CodeActions can be used to register quickfixes and other code related actions to editor positions. The positions are either directed by the error message they are attached to, or via syntax-directed pattern matching. This feature plays well with the LanguageServer features in rascal-lsp. +* added `util::Reflective::newRascalProject` to set up an empty project template with the right RASCAL.MF file and pom.xml file. +* `ManifestRunner.java` was removed because it was unused. +* The `benchmark:///` resolver was removed, so was `test-temp:///`, `test-data:///` and `test-modules:///`. +* The `memory://` resolver now supports independently garbage collectible filesystems per authority name. +* The Java model has received big maintenance love and attention, including improvements to the generic M3 model: * Bumped and upgraded to the JDT version from Eclipse 2020-03 From 70c484b46c121472477c9cde4409936b0d0729c7 Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Thu, 7 Nov 2024 15:29:47 +0100 Subject: [PATCH 14/25] fixed typo --- release-notes/rascal-0-40-x-release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release-notes/rascal-0-40-x-release-notes.md b/release-notes/rascal-0-40-x-release-notes.md index 606b5fbc0..2b0a3a3d2 100644 --- a/release-notes/rascal-0-40-x-release-notes.md +++ b/release-notes/rascal-0-40-x-release-notes.md @@ -10,7 +10,7 @@ In this post we report on the Rascal release 0.40.x ## Release 0.40.14 - November 5, 2024 -The public release 0.40.x follows release 0.24.x; many improvements have been made in projects that depends 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 depends 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 support for XML, JSON and HTML as exchange formats has been improved or completely rewritten. The main feature that was added was the optional `loc src` keyword field that provides the exact location of each node as it appears in the XML, HTML or JSON source text. From b2b7312e6458d37a88fa0823a1dc4bfc4604507b Mon Sep 17 00:00:00 2001 From: Rodin Aarssen Date: Thu, 7 Nov 2024 17:33:16 +0100 Subject: [PATCH 15/25] Updated versions --- pom.xml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 81443c3bd..ebe098bdc 100644 --- a/pom.xml +++ b/pom.xml @@ -24,19 +24,19 @@ UTF-8 UTF-8 - 0.28.8 - 0.40.14 - 0.19.7 + 0.28.9 + 0.40.17 + 0.19.9 0.12.0 - 0.1.14 - 0.2.6 - 0.14.6 - 0.2.5 - 0.2.4 - 2.20.0 - 0.2.0 - 0.2.3 - 0.0.6 + 0.1.15 + 0.2.8 + 0.14.8 + 0.2.7 + 0.2.7 + 2.20.2 + 0.3.5 + 0.2.4 + 0.0.8 From b98518d00a93f32100d72ec51cb7f2ca9e19e6d1 Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Thu, 7 Nov 2024 19:38:52 +0100 Subject: [PATCH 16/25] fixed issue with rascal license and fundingfiles --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index ebe098bdc..e4311b50c 100644 --- a/pom.xml +++ b/pom.xml @@ -84,6 +84,8 @@ ${project.basedir} docs/**/*.* docs/index.value + docs/FUNDING.md + docs/CITATION.md org.rascalmpl From 04c93e622cfef52dc86c7b1dfea5cb62333ea1b4 Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Thu, 7 Nov 2024 20:09:00 +0100 Subject: [PATCH 17/25] fixed broken links --- courses/GettingHelp/FurtherReading/FurtherReading.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/courses/GettingHelp/FurtherReading/FurtherReading.md b/courses/GettingHelp/FurtherReading/FurtherReading.md index 212494aef..ab5c931e4 100644 --- a/courses/GettingHelp/FurtherReading/FurtherReading.md +++ b/courses/GettingHelp/FurtherReading/FurtherReading.md @@ -18,8 +18,8 @@ keywords: #### Packages -Rascal can be extended by loading different (third-party) packages. For example: +Rascal can be extended by loading different (third-party) [packages](/docs/Packages). For example: -* ((flybytes)) enables JVM bytecode analysis, transformation and generation in Rascal. -* ((typepal)) is a generic name and type analysis framework for programming languages and textual DSLs. +* [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. From 23394920bf812d05d3da0abd246a192612407dd2 Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Fri, 8 Nov 2024 09:24:10 +0100 Subject: [PATCH 18/25] typos --- .../2022-12-21-rascal-0-28-x-release-notes.md | 2 +- release-notes/rascal-0-40-x-release-notes.md | 29 +++++++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/release-notes/2022-12-21-rascal-0-28-x-release-notes.md b/release-notes/2022-12-21-rascal-0-28-x-release-notes.md index 0ee0319fa..5007280e2 100644 --- a/release-notes/2022-12-21-rascal-0-28-x-release-notes.md +++ b/release-notes/2022-12-21-rascal-0-28-x-release-notes.md @@ -4,7 +4,7 @@ published: true author: "Jurgen J. Vinju" authorlink: "http://www.rascal-mpl.org" title: "Rascal 0.28.x release notes" -sidebar_position: 93 +sidebar_position: 89 --- In this post we report on the Rascal release 0.28.x diff --git a/release-notes/rascal-0-40-x-release-notes.md b/release-notes/rascal-0-40-x-release-notes.md index 2b0a3a3d2..4199a177d 100644 --- a/release-notes/rascal-0-40-x-release-notes.md +++ b/release-notes/rascal-0-40-x-release-notes.md @@ -1,7 +1,7 @@ --- authors: [jvinju] title: "Rascal 0.40.x release notes" -sidebar_position: 96 +sidebar_position: 92 --- In this post we report on the Rascal release 0.40.x @@ -10,7 +10,7 @@ In this post we report on the Rascal release 0.40.x ## Release 0.40.14 - November 5, 2024 -The public release 0.40.x follows release 0.28.x; many improvements have been made in projects that depends 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 VScode extensions, clair, etc.) Some of these improvements depend directly on fixes in the interpreter and additions to the standard library. The support for XML, JSON and HTML as exchange formats has been improved or completely rewritten. The main feature that was added was the optional `loc src` keyword field that provides the exact location of each node as it appears in the XML, HTML or JSON source text. @@ -19,7 +19,7 @@ A new `mvn://` scheme was added to be able to address with brief but unique nota * `mvn:///path/inside/m2/repository/jarFile.jar` for exploring the mvn repository from its root. If `maven.repo.local` is set, then that is the root of the M2 repository. Otherwise if `~/m2/.repository` exists (in the users ome directory) then that is used. Otherwise `mvn` is executed with `-Dexpression=settings.localRepository` to extract the setting from the current `pom.xml` file. This is _not_ the official order as `mvn` resolves these configuration options; but it was chosen for the sake of efficiency. -A great deal of tests were fixed, enhanced or extended as a side-effect of the compiler project. Another visible aspect of the progress of the compiler is that now all Rascal runtime values (from vallang and beyond) now support `getFingerprint()` methods which help in optimizing patter matching and dispatch in generated code by the compiler. These methods' return values have become a strict contract for future implementations of Rascal values, including parse trees and reified types and first-class functions. +A great deal of tests were fixed, enhanced or extended as a side-effect of the compiler project. Another visible aspect of the progress of the compiler is that now all Rascal runtime values (from vallang and beyond) now support `getFingerprint()` methods which help in optimizing pattern matching and dispatch in generated code by the compiler. These methods' return values have become a strict contract for future implementations of Rascal values, including parse trees and reified types and first-class functions. The following issues were solved: * string `visit` with unicode characters had a bug @@ -30,7 +30,7 @@ The following issues were solved: * TODO Standard library maintenance: -* Accurate and correct parsers of Windows and Unix file paths were added to the standard library. This includes a new `unc://` resolver to accurately represent the semantics of UNC paths, and `cwddrive://` which can represent the current working directory on a given drive letter on Windows. +* Accurate and correct parsers of Windows and Unix file paths were added to the standard library. This includes a new `unc://` resolver to accurately represent the semantics of UNC paths, and `cwdrive://` which can represent the current working directory on a given drive letter on Windows. * `HTMLElement(loc src = |unknown:///|)` was added to position every tag from start to end via the `src` attribute. * The documentation strings were ported from `@doc{ }` notation to `@synopsis{..}, @description{..}, @examples{..}, @benefits{..}, @pitfalls{..}` separate tags. * The `@deprecated{..}` tag is now also used during API documentation generation. It is rendered between the synsopsis and the declaration signature. @@ -50,33 +50,32 @@ parsed and treated as (DSL) source code. * `lang::json::IO` now has full origin tracking support. * `util::Monitor` progress monitoring is now also supported on textual interfaces using UTF8 and ANSI support for pretty bars. If UTF8 is not supported by the terminal, it used ASCII art. If ANSI is not available, it defaults to normal event logging prins on the console. The progress bar will always default to the latter if in a CI environment of if `-Drascal.monitor.batch` is set. * The progress monitors for module importation in the interpreter and parser generator were rationalized. -* In `lang::rascal::grammar::storage::ModuleParserStorage` a new feature for saving generated parsers to disk and loading them again was added. It follows the interface design of `ParseTree::parsers``. You can load a saved parser and used it as if +* In `lang::rascal::grammar::storage::ModuleParserStorage` a new feature for saving generated parsers to disk and loading them again was added. It follows the interface design of `ParseTree::parsers`. You can load a saved parser and used it as if just generated with `parsers`. * `lang::rascal::vis::ImportGraph` was added as a port of the ASF+SDF Meta-Environment import graph visual. -* `lang::std::ANSI` is a almost complete specification of the ANSI standard for character markup. +* `lang::std::ANSI` is an almost complete specification of the ANSI standard for character markup. * `util::Clipboard` was added to give programmatic access to the systems copy/paste feature for textual content. The feature starts up lazily so the first call to `copy` or `paste` is slower than subsequent calls. In a headless environment `copy` always returns the empty string and `paste` simply has no effect. Paste and copy are "thread friendly" in that they will produce or reproduce a string that at one time was in the system's copy/paste buffer. However, it is not necessarily the last entry and other processes may overwrite the buffer while the Rascal programming is running that has just written to it. * `util::Eval` was refactored and reimplemented for efficiency and robustness, following the TutorCommandExecutor design from the rascal-tutor project. Eval instances are now fully configured via `PathConfig`. -* The concept of CodeActions was added to util::IDEServices, they also extend error `Message` constructors. CodeActions can be used to register quickfixes and other code related actions to editor positions. The positions are either directed by the error message they are attached to, or via syntax-directed pattern matching. This feature plays well with the LanguageServer features in rascal-lsp. +* The concept of CodeActions was added to `util::IDEServices`, they also extend error `Message` constructors. CodeActions can be used to register quickfixes and other code related actions to editor positions. The positions are either directed by the error message they are attached to, or via syntax-directed pattern matching. This feature plays well with the LanguageServer features in rascal-lsp. * added `util::Reflective::newRascalProject` to set up an empty project template with the right RASCAL.MF file and pom.xml file. * `ManifestRunner.java` was removed because it was unused. * The `benchmark:///` resolver was removed, so was `test-temp:///`, `test-data:///` and `test-modules:///`. * The `memory://` resolver now supports independently garbage collectible filesystems per authority name. -* The Java model has received big maintenance love and attention, including improvements to the generic M3 model: -* Bumped and upgraded to the JDT version from Eclipse 2020-03 +* Bumped and upgraded to the JDT version from Eclipse 2020-03, then upgraded mapping support up to and including JLS-14. * The AST nodes in `lang::java::m3::AST` now all satisfy the AST contract in `analysis::m3::AST`. This means that all source code elements are represented in the tree, annotated with `src` origins and ordered from left-to-right as they were in the original source file. -* The constructors: enum, enumConstant, compilationUnit, class, interface, method, field, etc. etc. all received +* The constructors: `enum`, `enumConstant`, `compilationUnit`, `class`, `interface`, `method`, `field`, etc., all received extra positional parameters for the concept of modifiers. Before these were modelled as keyword parameters, but that invalidated the earlier mentioned AST contract. * An AST and M3 model of the Java 9 module system was added. -* The `isSuper` boolean was removed from the AST definition of methodInvocation and `new` calls, also to satisfy the AST contract. -* Java Annotations AST constructors were moved from Expression to Declaration. -* String based unary and binary operator constructors for Expressions were unfolded to a constructor for each operator, i.e. `plus(Expression, Expression) instead of `binop(Expression, "+", Expression)` -* lang::java::m3::AST was documented and so was analysis::m3::AST -* lang::java::m3::Core was documented and so was analysis::m3::Core +* The `isSuper` boolean was removed from the AST definition of `methodInvocation`n and `new` calls, also to satisfy the AST contract. +* Java Annotations AST constructors were moved from `Expression` to `Modifier`. +* String based unary and binary operator constructors for Expressions were unfolded to a constructor for each operator, i.e. `plus(Expression, Expression)` instead of `binop(Expression, "+", Expression)` +* `lang::java::m3::AST` was documented and so was `analysis::m3::AST` +* `lang::java::m3::Core` was documented and so was `analysis::m3::Core` * `composeM3` was generalized for any number of keyword fields which are either sets or lists. * `m3SpecificationTest` checks for the internal sanity and completeness of an M3 model. Can be used to test language front-ends. * `Java2ObjectFlow` was upgraded for all the changes in the AST constructors. However it may still need extension for new constrtructors like lambda expressions. From efd8b694f4f6b26ad79eca2fa5ba61b84530eb79 Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Fri, 8 Nov 2024 09:26:23 +0100 Subject: [PATCH 19/25] minor fixes --- release-notes/rascal-0-40-x-release-notes.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/release-notes/rascal-0-40-x-release-notes.md b/release-notes/rascal-0-40-x-release-notes.md index 4199a177d..fd5d4b460 100644 --- a/release-notes/rascal-0-40-x-release-notes.md +++ b/release-notes/rascal-0-40-x-release-notes.md @@ -64,6 +64,7 @@ just generated with `parsers`. The Java model has received big maintenance love and attention, including improvements to the generic M3 model: * Bumped and upgraded to the JDT version from Eclipse 2020-03, then upgraded mapping support up to and including JLS-14. +* Up to JLS14 all new Java constructs were added to the AST and the M3 Core model. The previous standard we supported was JLS8. * The AST nodes in `lang::java::m3::AST` now all satisfy the AST contract in `analysis::m3::AST`. This means that all source code elements are represented in the tree, annotated with `src` origins and ordered from left-to-right as they were in the original source file. @@ -76,16 +77,14 @@ that invalidated the earlier mentioned AST contract. * String based unary and binary operator constructors for Expressions were unfolded to a constructor for each operator, i.e. `plus(Expression, Expression)` instead of `binop(Expression, "+", Expression)` * `lang::java::m3::AST` was documented and so was `analysis::m3::AST` * `lang::java::m3::Core` was documented and so was `analysis::m3::Core` -* `composeM3` was generalized for any number of keyword fields which are either sets or lists. +* `composeM3` was generalized for any number of keyword fields which are either sets or lists. This makes it language-independent from now on. * `m3SpecificationTest` checks for the internal sanity and completeness of an M3 model. Can be used to test language front-ends. * `Java2ObjectFlow` was upgraded for all the changes in the AST constructors. However it may still need extension for new constrtructors like lambda expressions. -* Lambda's were added to AST Expressions -* Method references were added to AST Expressions -* Up to JLS14 all new Java constructs were added to the AST and the M3 Core model. The previous standard we supported was JLS8. +* Lambda's were added to `Expression` +* Method references were added to `Expression` * Intersection types were added to the Type AST class * The bounds constructors of Type ASTs were renamed from `upperbound` and `lowerbound` to `super` and `extends`. * Java versions are now specified as constructors of the `Language` data type, for accurate description of the JLS language level the user needs to reflect. * M3 extraction from JVM binary class files was maintained and now also supports language features up to JLS14. In particular the Java 9 module system was added to the mapping. * Tracebility with origin tracking was improved for both source code and binary classfile analysis, so if NPE's happen a clear cause can be printed. -* From 7be42336e4eabdc05199ed32ca028d6064c56437 Mon Sep 17 00:00:00 2001 From: Davy Landman Date: Fri, 15 Nov 2024 10:09:00 +0100 Subject: [PATCH 20/25] Using also bumped clair version --- pom.xml | 2 +- release-notes/rascal-0-40-x-release-notes.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index e4311b50c..3b3e17706 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ 0.28.9 0.40.17 0.19.9 - 0.12.0 + 0.13.0 0.1.15 0.2.8 0.14.8 diff --git a/release-notes/rascal-0-40-x-release-notes.md b/release-notes/rascal-0-40-x-release-notes.md index fd5d4b460..cc754877d 100644 --- a/release-notes/rascal-0-40-x-release-notes.md +++ b/release-notes/rascal-0-40-x-release-notes.md @@ -8,7 +8,7 @@ In this post we report on the Rascal release 0.40.x -## Release 0.40.14 - November 5, 2024 +## 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. From c52543a3e364786a29e4ae89b888d605c4ae2e14 Mon Sep 17 00:00:00 2001 From: Davy Landman Date: Fri, 15 Nov 2024 10:11:57 +0100 Subject: [PATCH 21/25] Using latest rascal-lsp version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3b3e17706..5e3a0b85c 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ 0.14.8 0.2.7 0.2.7 - 2.20.2 + 2.21.0 0.3.5 0.2.4 0.0.8 From ad6b907ad24a5726ee4140798d06002271fcc791 Mon Sep 17 00:00:00 2001 From: Davy Landman Date: Fri, 15 Nov 2024 11:12:01 +0100 Subject: [PATCH 22/25] Making sure dependencies are always checked --- .github/workflows/base-jobs.yml | 2 +- pom.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/base-jobs.yml b/.github/workflows/base-jobs.yml index efb75084e..d63c6a185 100644 --- a/.github/workflows/base-jobs.yml +++ b/.github/workflows/base-jobs.yml @@ -37,7 +37,7 @@ jobs: # Copy docs from dependent projects, run tutor on local courses folder and copy results into docs and static/assets - name: Run rascal-tutor and reuse libraries - run: MAVEN_OPTIONS="-Xss256m -Xmx3G" mvn -B clean package -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -Dwebdriver.chrome.browser=`which chrome` | grep -v "\[INFO\] Downloading" + run: MAVEN_OPTIONS="-Xss256m -Xmx3G" mvn -U -B clean package -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -Dwebdriver.chrome.browser=`which chrome` | grep -v "\[INFO\] Downloading" - uses: actions/upload-artifact@v4 with: diff --git a/pom.xml b/pom.xml index 5e3a0b85c..39c90d969 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ 0.28.9 0.40.17 0.19.9 - 0.13.0 + 0.13.1 0.1.15 0.2.8 0.14.8 @@ -43,7 +43,7 @@ maven-clean-plugin - 3.2.0 + 3.4.0 From 8eeea365419c3193cb9578f3d493ea90c342fa77 Mon Sep 17 00:00:00 2001 From: Davy Landman Date: Fri, 15 Nov 2024 11:16:05 +0100 Subject: [PATCH 23/25] Lets not go to maven every run --- .github/workflows/base-jobs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/base-jobs.yml b/.github/workflows/base-jobs.yml index d63c6a185..efb75084e 100644 --- a/.github/workflows/base-jobs.yml +++ b/.github/workflows/base-jobs.yml @@ -37,7 +37,7 @@ jobs: # Copy docs from dependent projects, run tutor on local courses folder and copy results into docs and static/assets - name: Run rascal-tutor and reuse libraries - run: MAVEN_OPTIONS="-Xss256m -Xmx3G" mvn -U -B clean package -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -Dwebdriver.chrome.browser=`which chrome` | grep -v "\[INFO\] Downloading" + run: MAVEN_OPTIONS="-Xss256m -Xmx3G" mvn -B clean package -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -Dwebdriver.chrome.browser=`which chrome` | grep -v "\[INFO\] Downloading" - uses: actions/upload-artifact@v4 with: From c7eb733799f5b4c2da697d6c1f0db24efc3de1d1 Mon Sep 17 00:00:00 2001 From: Davy Landman Date: Fri, 15 Nov 2024 13:03:41 +0100 Subject: [PATCH 24/25] Using fixed rascal-lsp release --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 39c90d969..8a1e6d58d 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ 0.14.8 0.2.7 0.2.7 - 2.21.0 + 2.21.0-2 0.3.5 0.2.4 0.0.8 @@ -211,6 +211,7 @@ |lib://rascal/org/rascalmpl/library/lang/rascal| |lib://rascal/org/rascalmpl/library/lang/c90| + |lib://rascal/org/rascalmpl/library/lang/c90| From ed0c325fe95feed48fa6e4757b2f4a659d4fd1f0 Mon Sep 17 00:00:00 2001 From: "Jurgen J. Vinju" Date: Fri, 15 Nov 2024 13:08:52 +0100 Subject: [PATCH 25/25] added links to closed issues --- release-notes/rascal-0-40-x-release-notes.md | 50 ++++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/release-notes/rascal-0-40-x-release-notes.md b/release-notes/rascal-0-40-x-release-notes.md index cc754877d..dda57f72c 100644 --- a/release-notes/rascal-0-40-x-release-notes.md +++ b/release-notes/rascal-0-40-x-release-notes.md @@ -12,6 +12,8 @@ In this post we report on the Rascal release 0.40.x 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 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 support for XML, JSON and HTML as exchange formats has been improved or completely rewritten. The main feature that was added was the optional `loc src` keyword field that provides the exact location of each node as it appears in the XML, HTML or JSON source text. A new `mvn://` scheme was added to be able to address with brief but unique notation the jar files in the local M2 repository. It supports two modes: @@ -22,12 +24,54 @@ If `maven.repo.local` is set, then that is the root of the M2 repository. Otherw A great deal of tests were fixed, enhanced or extended as a side-effect of the compiler project. Another visible aspect of the progress of the compiler is that now all Rascal runtime values (from vallang and beyond) now support `getFingerprint()` methods which help in optimizing pattern matching and dispatch in generated code by the compiler. These methods' return values have become a strict contract for future implementations of Rascal values, including parse trees and reified types and first-class functions. The following issues were solved: -* string `visit` with unicode characters had a bug +* String `visit` with unicode characters had a bug * `util::ShellExec` had some IO synchronization issues which were resolved. * The JUnit test runners report exceptions better now. * The broken and unused `stdout://` and `stdin://` resolvers were removed. -* The `IO::watch` functionality was improved for logical source locations. However the system is still too slow on Mac to work effectively in an interactive development environment. -* TODO +* The `IO::watch` functionality was improved for logical source locations. It is now fully functional on all systems with a JVM. However the system is still too slow on Mac to work effectively in an interactive development environment. +* [Identical inner functions are flagged as code clones](https://github.com/usethesource/rascal/issues/2067) +* [Unsupported splice pattern causes NULL pointer exception inside interpreter](https://github.com/usethesource/rascal/issues/2071) +* [Add-assign of incompatible set types does not raise error](https://github.com/usethesource/rascal/issues/2056) +* [Missing a "info" or "warning" message at the call-site of @deprecated functions](https://github.com/usethesource/rascal/issues/2055) +* [deprecated module has squiqqlies over the entire file](https://github.com/usethesource/rascal/issues/2052) +* [`rascalTModelForLocs` does not return TModel](https://github.com/usethesource/rascal/issues/2050) +* [(common) keyword field projecten out of ADT produces dynamic instead of static type for the static type result.](https://github.com/usethesource/rascal/issues/2049) +* [Internal crash instead of static error for relation field projection on unlabeled relation types](https://github.com/usethesource/rascal/issues/2048) +* [Typechecker fails to report error on invalid function return type](https://github.com/usethesource/rascal/issues/2046) +* [Type checker reports undefined module after edit](https://github.com/usethesource/rascal/issues/2044) +* [Rascal check crashed unexpectedly with: MultipleKey at: |std:///Map.rsc|(2659,708,<109,0>,<130,54>)](https://github.com/usethesource/rascal/issues/2039) +* [Progress monitor's utf-8 check only works in interactive terminals](https://github.com/usethesource/rascal/issues/2032) +* [Unexpected 'Ambiguous pattern type' error](https://github.com/usethesource/rascal/issues/2030) +* [In overlapping names, order matters for the typechecker](https://github.com/usethesource/rascal/issues/2026) +* [`Maybe::nothing` causes wrong type if used in adt keyword parameters](https://github.com/usethesource/rascal/issues/2025) +* [Two binds on both sides of the OR operator don't work if they are in a nested expression.](https://github.com/usethesource/rascal/issues/2024) +* [Rascal-core is generating prints in the monitor](https://github.com/usethesource/rascal/issues/2023) +* [Rascal type-checker crashed unexpectedly with: No module scope found for ...](https://github.com/usethesource/rascal/issues/2021) +* [What to expect: common keyword parameter of data declaration and keyword parameter of constructor have the same name](https://github.com/usethesource/rascal/issues/2019) +* [add function to identify possible addition of cycles on nodes](https://github.com/usethesource/rascal/issues/2018) +* [Typechecker reports used variable as unused](https://github.com/usethesource/rascal/issues/2014) +* [Overloads with different type parameter names cause error](https://github.com/usethesource/rascal/issues/2013) +* [Function that only throws exception is expected to have `bool` return type](https://github.com/usethesource/rascal/issues/2012) +* [Typechecker disallows assigning `nothing()` to field of type `Maybe`](https://github.com/usethesource/rascal/issues/2007) +* [Typechecker fails on `analysis::typepal::TypePal`](https://github.com/usethesource/rascal/issues/2006) +* [string editor `visit` fails with unicode matches.](https://github.com/usethesource/rascal/issues/2005) +* [Type constructor subtype issue?](https://github.com/usethesource/rascal/issues/2003) +* [Type checker infers `value` for known-type tuple wildcards in iterator](https://github.com/usethesource/rascal/issues/1996) +* [Type of generator leaks](https://github.com/usethesource/rascal/issues/1995) +* [`type` constructor doesn't accept keyword parameters starting with `\` symbol](https://github.com/usethesource/rascal/issues/1991) + +On the Rascal run-time engine (vallang) these issues were resolved: +* [Add \f escape in string constants back into vallang StandardTextReader](https://github.com/usethesource/vallang/issues/270) +* [StandardTextReader does not support `\f` escape while rascal does](https://github.com/usethesource/vallang/issues/268) +* [Drop xz-java dependency](https://github.com/usethesource/vallang/issues/252) +* [Entry Buckets in ShareableValuesHashSet typically nest 4 or 5 times during a transitive closure on source locations (call graph)](https://github.com/usethesource/vallang/issues/235) +* [TypeFactory use of `checkNull` shows up on profiles](https://github.com/usethesource/vallang/issues/233) +* [Performance regression for transitive closure on large `rel[loc,loc]`](https://github.com/usethesource/vallang/issues/230) +* [Add identity ("kind") to types (for the benefit of generated code and runtime system)](https://github.com/usethesource/vallang/issues/209) +* [Add informative error messages to asserts](https://github.com/usethesource/vallang/issues/158) +* [evaluate efficiency of new hash-consing design in pr #131](https://github.com/usethesource/vallang/issues/135) +* [add IString::asReader to stream _from_ strings](https://github.com/usethesource/vallang/issues/71) + Standard library maintenance: * Accurate and correct parsers of Windows and Unix file paths were added to the standard library. This includes a new `unc://` resolver to accurately represent the semantics of UNC paths, and `cwdrive://` which can represent the current working directory on a given drive letter on Windows.