usethesource / rascal

The implementation of the Rascal meta-programming language (including interpreter, type checker, parser generator, compiler and JVM based run-time system)
http://www.rascal-mpl.org
Other
408 stars 77 forks source link

Factor out useful libraries from standard library #1790

Open jurgenvinju opened 1 year ago

jurgenvinju commented 1 year ago

Is your feature request related to a problem? Please describe.

Only big bang releases of the Rascal project can make new features inside the standard library available to our users.

One example was origin tracking for JSON, XML and HTML parsers. Another is evolved support for Java language levels in the JDT.

This is unsatisfactory since releasing rascal implies releasing the VScode extension and the Eclipse plugin, which takes a lot of work and manual testing. Independently tested and loosely coupled features like an XML parser should not have to wait for that.

Also, the current rascal.jar is 100Mb largely due to the transitive dependencies of standard library features that most people do not use at all.

Describe the solution you'd like

Factor out libraries into separately released and deployed packages that can evolve on their own:

We would not factor out the following libraries because they are close to the core of Rascal:

Questions; what to do with these?

In any case, we can start cloning these functionalities in separate components before we throw them out of the standard library, one-by-one.

Describe alternatives you've considered

jurgenvinju commented 1 year ago

Some of these new components should go to usethesource immediately (rascal-java, rascal-xml, rascal-json), while for others it would make sense to park them at cwi-swat and release their jars nevertheless on releases.usethesource.io.

jurgenvinju commented 1 year ago

it should also be the case that all these libraries en up on the rascal-mpl.org site as documented packages. This way they remain discoverable by users without additional features of the IDEs or the terminal.

e.g. https://www.rascal-mpl.org/docs/Packages/clair/