I'm not sure how much this matters because it's mostly a backward compatibility issue with something which is a relatively new feature anyway, but
(asdf:output-file[s] 'asdf:monolithic-fasl-op ...)
no longer works in 3.1.3 (at least on CCL/Linux). The new nomenclature is apparently:
(asdf:output-file[s] 'asdf:monolithic-compile-bundle-op ...)
is 'asdf:monolithic-compile-bundle-op indeed the exact replacement for 'asdf:monolithic-fasl-op?
FWIW, (asdf:operate 'asdf:monolithic-fasl-op ...) still appears to work.
I apologize for not running tests on my own stuff before the release of 3.1.3; I'll try to make a point of doing that for future releases.
Dave Cooper wrote:
I'm not sure how much this matters because it's mostly a backward compatibility issue with something which is a relatively new feature anyway, but
(asdf:output-file[s] 'asdf:monolithic-fasl-op ...)
no longer works in 3.1.3 (at least on CCL/Linux).
I'm sorry -- what does it mean that it no longer works? It raises an error? No such method? Or does it return some default value?
The new nomenclature
is apparently:
(asdf:output-file[s] 'asdf:monolithic-compile-bundle-op ...)
is 'asdf:monolithic-compile-bundle-op indeed the exact replacement for 'asdf:monolithic-fasl-op?
I believe that the intent of the following:
(defclass monolithic-fasl-op (selfward-operation) ((selfward-operation :initform 'monolithic-compile-bundle-op :allocation :class)))
is that one does a MONOLITHIC-FASL-OP to oneself by doing a MONOLITHIC-COMPILE-BUNDLE-OP.
It makes sense that from the PoV of *performing* this operation, the above delegation would work. However, it also makes sense that if you try to treat this operation as a real operation with its own attributes (like OUTPUT-FILES), this will not work.
Question: what's the best fix here? One possibility would be to simply smash the old names, since they provide only imperfect compatibility. Perhaps this could be done by leaving them, but adding code to cause any attempt to make an instance of them to raise a continuable error whose continuation is to make an instance of the newly-named OPERATION class. This is only a hazy thought: I'm not sure that an :AROUND method on MAKE-INSTANCE will work properly.
Cheers, r
On Tue, Jul 29, 2014 at 2:47 PM, Robert P. Goldman rpgoldman@sift.info wrote:
(asdf:output-file[s] 'asdf:monolithic-fasl-op ...)
no longer works in 3.1.3 (at least on CCL/Linux).
I'm sorry -- what does it mean that it no longer works? It raises an error? No such method? Or does it return some default value?
it returns NIL.
Question: what's the best fix here? One possibility would be to simply smash the old names, since they provide only imperfect compatibility.
As far as I'm concerned, it could be done throwing a non-continuable error which says "monolithic-fasl-op is deprecated and will be going away. Please change from monolithic-fasl-op to monolithic-compile-bundle-op".
And after some time period simply delete the old names from the codebase.
This is relatively new functionality anyway, isn't it (introduced in ASDF3, right)? Was anyone other than me even using monolithic-fasl-op?
On Tue, Jul 29, 2014 at 1:48 PM, Dave Cooper david.cooper@genworks.com wrote:
I'm not sure how much this matters because it's mostly a backward compatibility issue with something which is a relatively new feature anyway, but
(asdf:output-file[s] 'asdf:monolithic-fasl-op ...)
no longer works in 3.1.3 (at least on CCL/Linux). The new nomenclature is apparently:
(asdf:output-file[s] 'asdf:monolithic-compile-bundle-op ...)
is 'asdf:monolithic-compile-bundle-op indeed the exact replacement for 'asdf:monolithic-fasl-op?
Yes it is.
That's my bad. In 3.1, we deprecated the old names in favor of the new, but I didn't realize people were relying on the output-files method. It would be trivial to provide dummy "forwarding" output-files methods for the *fasl-op operations to just return the output-files of the underlying new-name operation.
Patch accepted (I suppose).
FWIW, (asdf:operate 'asdf:monolithic-fasl-op ...) still appears to work.
I apologize for not running tests on my own stuff before the release of 3.1.3; I'll try to make a point of doing that for future releases.
My apologies for breaking it. Complete backward compatibility is hard.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Gun: weapon of individual vs individual. Bomb: weapon of group vs group. That's why collectivists hate guns and love bombs.
Faré wrote:
On Tue, Jul 29, 2014 at 1:48 PM, Dave Cooper david.cooper@genworks.com wrote:
I'm not sure how much this matters because it's mostly a backward compatibility issue with something which is a relatively new feature anyway, but
(asdf:output-file[s] 'asdf:monolithic-fasl-op ...)
no longer works in 3.1.3 (at least on CCL/Linux). The new nomenclature is apparently:
(asdf:output-file[s] 'asdf:monolithic-compile-bundle-op ...)
is 'asdf:monolithic-compile-bundle-op indeed the exact replacement for 'asdf:monolithic-fasl-op?
Yes it is.
That's my bad. In 3.1, we deprecated the old names in favor of the new, but I didn't realize people were relying on the output-files method. It would be trivial to provide dummy "forwarding" output-files methods for the *fasl-op operations to just return the output-files of the underlying new-name operation.
Patch accepted (I suppose).
I'd favor just removing these deprecated operations instead of creating the forwarding methods. If we add the methods for OUTPUT-FILES, what other methods do we need to add?
I'd rather just kill this now, instead of adding work to maintain code that should be removed later, anyway.
Cheers, r
On Tue, Jul 29, 2014 at 5:03 PM, Robert P. Goldman rpgoldman@sift.info wrote:
Faré wrote:
On Tue, Jul 29, 2014 at 1:48 PM, Dave Cooper david.cooper@genworks.com wrote:
I'm not sure how much this matters because it's mostly a backward compatibility issue with something which is a relatively new feature anyway, but
(asdf:output-file[s] 'asdf:monolithic-fasl-op ...)
no longer works in 3.1.3 (at least on CCL/Linux). The new nomenclature is apparently:
(asdf:output-file[s] 'asdf:monolithic-compile-bundle-op ...)
is 'asdf:monolithic-compile-bundle-op indeed the exact replacement for 'asdf:monolithic-fasl-op?
Yes it is.
That's my bad. In 3.1, we deprecated the old names in favor of the new, but I didn't realize people were relying on the output-files method. It would be trivial to provide dummy "forwarding" output-files methods for the *fasl-op operations to just return the output-files of the underlying new-name operation.
Patch accepted (I suppose).
I'd favor just removing these deprecated operations instead of creating the forwarding methods. If we add the methods for OUTPUT-FILES, what other methods do we need to add?
I'd rather just kill this now, instead of adding work to maintain code that should be removed later, anyway.
Yes, removing the code might be the better option. We could always provide a separate backward compatibility system that provides the old names and all the methods.
The only other known user of that feature is SBCL, but it uses it only at compile time with its own pinned copy of ASDF, and I have published a patch on their launchpad (but the SBCL people seem to be in no hurry to update ASDF — their copy, 3.0.2, is over a year old (wow, time flies)).
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org "If men are good, you don't need government; if men are evil or ambivalent, you don't dare have one." — Robert LeFevre