Faré writes:
The big design question is: should registering a system as preloaded drop its build information?
Advantage of erasing the existing system information: the behavior of the image is uniform on all machines, and trying to resume development on a machine without the same source code at the same location won't cause a flurry of filesystem accesses at the wrong paths. [Note that immutable systems never try to access the filesystem, unlike regular preloaded systems, even with build information present.]
Additional adventage is a more uniform handling of the code (for instance in `find-system') and could pave a way for `monotonic-system' (from lack of better name atm) – system which only upgrades to the higher versions like ASDF does right now.
Rationale for registering a new system is as follows: preloaded-systems and immutable-systems are separate kind of system treated differently in the code and have a separate class, because of their very nature. Like we have prebuilt-system, or require-system, we have also immutable and preloaded systems, which doesn't have build information (preloaded system is a system, which is loaded by definition, without any operations, while immutable system is a preloaded system, whichcan't be removed). Otherwise we should call them systems with immutability (or preload) flags.
Advantage of keeping the existing build information: you can resume the production image and resume incremental development on a machine that has the same source code at the same location. And if you to drop it, you can explicitly call clear-system after you call register-preloaded-system.
We don't have to necessarily loose the ability to keep the existing build information. While it's not good to expose it in the production image, stepping back to it is indeed something we want.
Such change won't introduce much of the problem, if we drop direct hash-table access from user code and mandate registering immutable-systems only with the function register-immutable-system (same with the preloaded). Then an instance could store the original system in a slot, which gets registered during the call to `deregister-immutable-system'.
I am strongly inclined to keeping the build information around: it's always easy to erase the information later, but hard to reconstitute dropped information.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org A Libertarian Constitutional Amendment: Congress shall make no law.
Best regards, Daniel