Can you elaborate on that?

The stance on packages found in the mentioned Quora post is based on the old misconception about packages being modules, or "software packages" in the Linux distribution sense. They're not. They are really just namespaces, containers of symbols. So it does not make any sense, to me, that they have versions. Software has versions, not names.

I think it *is* already possible, even if no convenient machinery for it exists, to load the same symbols under different packages (i.e. to use different names for different versions of the same concepts).

(defpackage p ...)
(load (compile-file "p-1.0.lisp"))
(rename-package "P" "P-1.0")
(defpackage p ...)
(load (compile-file "p-1.1.lisp"))
(rename-package "P" "P" "P-1.1")

p-*.lisp start with (in-package :p)

Then you can compile code against p (latest version), p-1.0 and/or p-1.1.
Of course each p-*.lisp must be "nice" - only define things in package p.


On 18 May 2016 at 11:36, Stelian Ionescu <sionescu@cddr.org> wrote:
On Wed, 2016-05-18 at 00:21 -0400, Jean-Claude Beaudoin wrote:
> Hi CL Pros,
>
> I just came across a post on Quora
> <https://www.quora.com/Where-did-we-go-wrong-Why-didnt-Common-Lisp-fi
> x-the-world/answer/Robert-Smith-9?srid=dnzK>
> by
> Robert Smith where he mentions the idea of assigning some sort of
> "version"
> to Common Lisp packages in order to improve code configuration
> control.
>
> This seems to me to be a pretty neat and interesting idea!
>
> Has anyone of you explored such a concept, or know of anyone that
> did?
> Or, is anyone of you curious about it?

It's a very bad idea to do code versioning in the linker/loader in
order to load two versions at the same time. Saying it makes code-reuse
hard is preposterous.

--
Stelian Ionescu a.k.a. fe[nl]ix
Quidquid latine dictum sit, altum videtur.