<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div style="font-family:'Courier New';">Maybe, under rare circumstances. With my QA hat on, I say better not to try.<br></div>
<div> </div>
<div> </div>
<div>><br></div>
<blockquote type="cite"><div dir="ltr"><div style="font-family:"Courier New";">I've been reading the manual, papers, and slides on ASDF and XCVB.  As a frame of reference, I prefer the qualities exhibited by Racket's implementation of modules.  I was disappointed both to see XCVB bitrot, and then to see that a major ASDF overhaul would be necessary.<br></div>
<div> </div>
<div>That said, ignoring Racket/ASDF/XCVB, I'm curious about how loading multiple versions of the same system could possibly be implemented in Common Lisp (CL).  I'm sure people have thought about it, but I'm having a hard time finding references.  I'm afraid I've been skimming some of the material linked off of the ASDF and XCVB pages, so forgive me if I missed something.<br></div>
<div> </div>
<div>On the JVM, there's the notion of "classloader" that can be used to load multiple versions of the same class.  Unfortunately, the only approach I can imagine is to use some form of package renaming.  There appear to be several variations floating around [1], and the trade-offs aren't clear to me.<br></div>
<div> </div>
<div>If I think about how it might be done in ASDF, it seems like it would require a series of things:<br></div>
<div> </div>
<div>* intercept package definition to rename with version<br></div>
<div>* :around-compile to handle some kind of per-system aliasing so code doesn't have to change<br></div>
<div>* teaching dependency resolution how to find the renamed, versioned packages/systems<br></div>
<div> </div>
<div>But that's a wild guess.  And the more I think about it, I wonder what to do about some code that uses strings to put together a symbol - I don't think symbol-macrolet can help there. <br></div>
<div> </div>
<div><div style="font-family:"Courier New";">[1] implementation-specific package-local-nicknames, :around-compile in ASDF, "pseudonyms"<br></div>
<div> </div>
<div style="font-family:"Courier New";">-- <br></div>
<div>Ian Tegebo<br></div>
</div>
</div>
</blockquote><div style="font-family:'Courier New';"> </div>
<div id="sig4916231"><div class="signature"> </div>
<div class="signature">--<br></div>
<div class="signature">Stelian Ionescu a.k.a. fe[nl]ix<br></div>
<div class="signature">Quidquid latine dictum sit, altum videtur.<br></div>
</div>
<div style="font-family:"Courier New";"> </div>
</body>
</html>