On Wed, Feb 6, 2013 at 8:16 PM, Pascal Costanza pc@p-cos.net wrote:
Just a question for understanding this better: CLOS provides clean ways to update methods with newer versions. Why do you use fmakunbound instead? Is this to stay backwards-compatible? Would it be a good idea to switch to a CLOS-based solution in the future to prevent such problems?
I'm probably missing something…
Well, remove-method could be used in some cases, but it doesn't by far cover all cases: 1- sometimes, the function signature changed; &key arguments were added (or removed?), a function was made generic that wasn't before, or generic no more that was before. Only fmakunbound can handle these cases. 2- sometimes, other methods exist that were installed by asdf extensions that have been invalidated by other reasons (such as classes being updated, etc.) These methods should NOT be preserved, but wholly invalidated, until an updated version of the ASDF extension can themselves be loaded. 3- CLOS is yet another vast source of portability issues, that I don't want to open. And for ASDF, I can't rely on an external library such as closer2mop (although, maybe now I can?).
In other words, fmakunbound is the safe thing to do, with deterministic semantics in more contexts. Hot-upgrade is already mighty hard. The way of remove-method leads to madness.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org "I'm going to live forever, or die trying!" — Spider Robinson