[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
My question: Is anyone porting Self to some other platform, maybe even
to the 386? I have Linux running on a 486/33 w/ 16 Meg RAM and 500 Meg
HD, which should be a workable system for Self; I have gcc-2.2.2 and
libg++-2.2, so it should be possible to compile the virtual machine
(judging from the README's).
BUT: I have the feeling that the compiler really generates native
SPARC code and so one would have to write a completely new backend and
assembler for the 386. I guess that would be a *major* project!?? Is
the compiler/assembler written in Self or C++? If Self is tied to the
SPARC achitecure and inherently non=portable, then that would
nagatively influence the impact that this exciting software could
To cite from a previous mail: We're certainly aware of that problem,
and there is no intention of restricting it to the Sparc architecture.
However, we currently do not have the manpower to port Self to other
In principle, the effort required to port Self is reasonable (say, one
or two months). Today, the required effort is probably larger (for
"outsiders") because our VM is not well documented, especially the
details of the run-time system that you need to know for porting.
Hopefully, future releases will include a porting guide or something
How about using the gcc backend?
We have considered that, but it's not as easy as it seems. One
problem is that gcc's backend needs to be taught about garbage
collection. Some people at UMass (Eliot Mass' group) are doing this
for Modula-3, but as far as I know it's not working yet (and they have
put a lot of effort in it). The other problem is that gcc might be
too slow - in Self, compilation happens at run-time, so you'd like to
keep compile pauses in the millisecond area, and I'm not sure if gcc
as a traditional batch compiler is up to that.
Hope that helps,
- Porting Self
- From: email@example.com (Dirk Steinberg H tenhagen)
- [no subject]
- From: dirkst@POOL.informatik.rwth-aachen.de (Dirk Steinberg)