[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Portability of Self?

> Can those in the know give some indication of the feasibility or
> effort involved in producing a working Self for non-Sun systems?  Are
> there any plans to reduce the dependence of Self on Sun specific
> features? 

Well, it's not that we *want* to make it "Sun-specific", but any
compiler will be machine-specific to some extent.  In the ideal case
(e.g. GNU gcc) you can port to a new architecture by rewriting some
machine desription, an effort taking a few weeks or so.  The Self
compilers aren't that easy to port, but they do have a separation
between a machine-independent front end and the back end, and so it
should be possible to rewrite a back end for a new architecture.  It
is true, however, that there isn't much documentation telling you
how to do it.

Why don't we port Self to various other architectures ourselves?
The main reasons are: we don't have the machines, and we don't have
the manpower to support many different versions.  The last point is
especially important: right now, the implementation is still evolving
at a rapid pace since we're trying out new ideas all the time.  Just 4
years ago nobody would have thought it was possible to implement Self
efficiently, and while we've made great progress we certainly don't 
have all the final answers yet.

We'd love to make Self more popular by making it easy to port, and I'm
sure we'll work on that in future releases.  Unfortunately, being a
small research group, our manpower is limited and so it might take a
while for a truly well-documented VM to appear.  

On the positive side, the upcoming release includes a simple ("dumb
but fast") compiler that is only about 4000 lines long (including
about 1000 lines each for the Sparc and 68K back ends).  Since it is
so small, it should be possible to understand it by looking at the
source.  On the negative side, the 68K back end isn't fully working
yet, and the generated code is pretty slow.

Hope that helps,