Dear list,
a quick and superficial analysis suggests that the :cmu feature has been defined for longer (probably forever) and :cmucl is relatively new(*), yet ASDF appears to use both and mix them rather arbitrarily. Assuming that the check for :cmucl is not meant to rule out old versions of cmucl, I think it would make sense to stick to one.
While `make test` will currently fail right away with cmucl 20b because of the missing :cmucl feature, transforming all the occurrences of the :cmucl feature into :cmu still leaves two tests failing. And with 20c and 20d (which are not old at all and do define :cmucl), 5 tests will still be failing (and have been for quite some time). Only the very recent releases 20e, 20f, and 21a pass all tests.
Is this known? Is it impossible to support old versions of cmucl? I did find that cmucl-20a at least does not expose (unix:unix-getenv) which ASDF puts to use but I cannot judge if there are ways to work around that.
So to summary what I’d like to ask: - Is it known that tests fail on cmucl <20e? - What versions of cmucl is ASDF meant to support? - Should I turn checks for the :cmucl feature into ones for :cmu?
Elias
(*) in a shell,
for v in 19a 20{a,b,c,d,e,f} 21a; do echo -n cmucl-$v:; cmucl-$v -eval '(write-line #+cmucl "yes" #-cmucl "no")' -eval '(quit)'; done
prints:
cmucl-19a:no cmucl-20a:no cmucl-20b:no cmucl-20c:yes cmucl-20d:yes cmucl-20e:yes cmucl-20f:yes cmucl-21a:yes
The cmucl maintainer convinced me that #+cmucl was the right thing, at least going forward. If there are any #+cmu left, it's a mistake — please fix if you find it.
Yes it is known that old cmucl versions have bugs that break some ASDF functionality, that I reported, and most of which were fixed (except those having to do with upgrading code with CLOS).
On Sat, Aug 20, 2016, 12:58 Elias Pipping pipping.elias@icloud.com wrote:
Dear list,
a quick and superficial analysis suggests that the :cmu feature has been defined for longer (probably forever) and :cmucl is relatively new(*), yet ASDF appears to use both and mix them rather arbitrarily. Assuming that the check for :cmucl is not meant to rule out old versions of cmucl, I think it would make sense to stick to one.
While `make test` will currently fail right away with cmucl 20b because of the missing :cmucl feature, transforming all the occurrences of the :cmucl feature into :cmu still leaves two tests failing. And with 20c and 20d (which are not old at all and do define :cmucl), 5 tests will still be failing (and have been for quite some time). Only the very recent releases 20e, 20f, and 21a pass all tests.
Is this known? Is it impossible to support old versions of cmucl? I did find that cmucl-20a at least does not expose (unix:unix-getenv) which ASDF puts to use but I cannot judge if there are ways to work around that.
So to summary what I’d like to ask:
- Is it known that tests fail on cmucl <20e?
- What versions of cmucl is ASDF meant to support?
- Should I turn checks for the :cmucl feature into ones for :cmu?
Elias
(*) in a shell,
for v in 19a 20{a,b,c,d,e,f} 21a; do echo -n cmucl-$v:; cmucl-$v -eval '(write-line #+cmucl "yes" #-cmucl "no")' -eval '(quit)'; done
prints:
cmucl-19a:no cmucl-20a:no cmucl-20b:no cmucl-20c:yes cmucl-20d:yes cmucl-20e:yes cmucl-20f:yes cmucl-21a:yes
On 8/20/16 Aug 20 -11:55 AM, Elias Pipping wrote:
So to summary what I’d like to ask:
- Is it known that tests fail on cmucl <20e?
TL;DR: I'm afraid not. I am only testing on 20f right now.
I don't have a server farm (nor the time to manage one) and the most I can manage is to run tests on a reasonably up-to-date set of lisp implementations.
In practice, this generally means latest binaries available on most platforms, although I usually test on a relatively up-to-date copy of SBCL from git, and I have been testing on ECL and MKCL from source.
I am not competent to build lisp implementations on Windows, so for that platform I am strictly limited to what I can download and run.
- What versions of cmucl is ASDF meant to support?
If Faré reports that the CMUCL maintainer prefers :cmucl feature, then I propose we rule out anything that doesn't have it. That would mean 20c and forward. We know that 20c and 20d have CLOS issues that we cannot work around, so I would eliminate them, as well.
That would limit us to 20e and forward.
If there's a bug fix that would make 20c and 20d support better without too much fuss, then I would be happy to merge it. But I believe we convinced ourselves that the CLOS issues could not be overcome.
What
- Should I turn checks for the :cmucl feature into ones for :cmu?
Sounds like "no," and we should replace old :CMU checks with :CMUCL.
Follow-on question: should we make ASDF issue a warning if it starts up on older versions of CMUCL to inform the user that ASDF operations on this implementation will be imperfect?
best, r