LispOS and C
Thu, 8 May 1997 20:44:48 +0200 (MET DST)
Marcus G. Daniels said that he wished GCC to be ported to LispOS;
Harvey J. Stein and Lars Thomas Hansen considered Lisp/Scheme compilers
that produce C code as potential (wishable or not) compilers
for use in LispOS.
Well, in all those cases, they forget something *essential*:
the memory model of LispOS, with its GC and orthogonal persistent store.
Unless the C code is carefully written with just that in mind,
output by GCC will not comply to to the memory model of LispOS,
hence be unusable under LispOS, unless a unix/whatever emulator is used
(which might be the underlying OS, or a OS concurrently running on
the same microkernel, or a full-fledged emulation box written for LispOS).
If you think such problems are trivial, you are invited to write
the GC and persistent store...
NB: this is *precisely* one of the problems why the C model is lame,
but as an assembler for flat von neuman architectures:
you can't enforce any user- or system- defined invariant.
This is also why I recommend a Reflective architecture:
so that we are not stuck with the initial GC and persistent store,
but can dynamically enhance it and adapt it to everyone's needs.
[Some want generational, some want hard Real-Time,
some want orthogonal persistence, some want finalizers, ...].
Being able to change the GC/PStore without rewriting all the system
is an essential feature, that only Reflection can bring.