-
Notifications
You must be signed in to change notification settings - Fork 113
Description
Continuing my adventure of loading alexandria, I think I just have one obstacle left...
alexandria occasionally use #.(...), this is otherwise fine, but result in picking up implementation-dependent constants from the host environment, like most-positive-fixnum (not a real problem for now, we're not handling bignum anyway), and lambda-list-keywords (resulting in non-existent symbol sb-int:&more and is fatal).
I don't know whether this is a solvable problem. I can't wrap the read time eval expressions in let, because the standard disallow let binding these variables. SICL folk's "First-class Global Environment" looks like the solution, but I don't think a usable implementation of the concept exist yet (certainly not in SBCL).
Thoughts?
p.s. The easy answer is "the problem goes away if we do as any other CL impls, only use cross compilation for bootstrapping and compile user code in target environment". But I'm just curious to see how far can cross compiling user code goes, and if it does turn out to work, such approach might have some benefits (host CL has better development environment like SLIME, and we can use fast host CL like SBCL to compile faster than target JSCL).