rascal
rascal copied to clipboard
rascal-eclipse released with too specific dependency on tm.terminal
Describe the bug
Installations of the newest Eclipse from march 2020 do complain that the latest Rascal release requires a tm.terminal that is too old for the current release.
By choosing to decrease the current plugin of tm.terminal in the installation wizard's options, Rascal installs fine and the system works correctly.
And also please add dependency on https://marketplace.eclipse.org/content/apt-m2e-connector
If I remember correctly:
- if we use a too new version of tm-terminal, we force everyone to get onto one of the more recent eclipse versions, so there's a trade-off there.
- tm-terminal has not always been published as a separate installable component. We've had cases were the tm-terminal inside eclipse cdt was not available on any update sites (this make compiling the rascal-eclipse project complex)
Currently we are using https://download.eclipse.org/tools/cdt/releases/10.5 (see: pom.xml) for getting tm-terminal, which points to "CDT 10.5.0 for Eclipse 2021-12" we could switch to "CDT 10.6.0 for Eclipse 2022-03"?
(I'm assuming "march 2020" means "march 2022"?)
If at all possible, I think we should have our dependency on tm-terminal as lenient as possible. I've run into problems while installing (specific versions of) CDT next to Rascal in the past due to clashing tm-terminal dependencies.
We could also try https://download.eclipse.org/tools/cdt/releases/latest/
for a while? On the one hand, the problem is that we can not test for all possible future Eclipse environments, so fixing a version will always eventually lead to this issue again. On the other hand, if we use this "latest" URL, then our tests would start failing immediately (CI) if we run into a new incompatibility.
It does make our builds un-reproducable. as we don't know which version of tm-terminal we were linking to a year back.
Let's use that latest
update site, and log the current minimal version we depend on in META-INF/MANIFEST.MF
, like: [latest-version,)
- if we do not list the latest version, because a new version came out, then the build will fail because
latest
only contains the latest version. all we have to do is update the version. - and, we always have a log of which version we depended on
Sounds good?
all we require from our users then is to be up-to-date with the latest version of CDT. that's not so bad.
I'm not against pushing people to update their eclipse, but for a long while we were careful with that.
true. but that was when we released rascal only once a year, so the chance that rascal would work with the newest eclipse was always low. now we release continuously and often, (we can and we should) so I think we can change that.
all we require from our users then is to be up-to-date with the latest version of CDT. that's not so bad.
That is (potentially) bad for ClaiR
please elaborate!
The class hierarchy in CDT that describes its AST might (and does) change from version to version; therefore, the version of CDT that is supported by ClaiR is fixed, imposing a requirement on the version of CDT (and thus tm-terminal) that should be installed into Eclipse. If Rascal requires a newer version, I foresee trouble.
Right! it would force us to keep clair up-to-date as well. Given that we promised to do that anyway, this just makes it clear when we have to do work.
Just to be clear: ClaiR currently depends on CDT 2020-03. The release schedule of Eclipse is once every three months. I don't see why we want to impose an unpredictable (potentially ranging from nothing to a full redesign) amount of work on us (well, me) that often.
What's against allowing "any" version of tm-terminal for Rascal? It's not like the thing changes a lot..
Do note that I'm not suggesting to never switch to supporting a newer version of CDT in ClaiR, I'm against being forced to do so just because three months have passed.
Unfortunately, there is no way to follow "any" version of tm.terminal because they change their update-site URL with every release. So effectively we depend either on a specific version or we depend on the latest.
Clair depends on a specific version of CDT as far as I can recall?