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

Re: Future Questions



>>>>> "Jeff" == Jeff Tupper <mooncake@cs.toronto.edu> writes:

    Jeff> mat@ardi.com (Mat Hostetter):
    >> Long ago Executor was a source-compatible library, but it would
    >> be difficult to resurrect it in that form.  There are also some
    >> very difficult issues for developers involving byte ordering;
    >> have you noticed that all platforms supported by Apple (680x0,
    >> PowerPC, and those supported by MAE) are all "big endian"?

    >> -Mat

    Jeff> Well, I must be missing something, but the platforms
    Jeff> supported by Apple all do so through emulation (in addition
    Jeff> to native code).

This isn't meant to be a flame, just a simple explanation of some of
the reasons Mat said what he said.  Both Mat and I are *extremely*
aware of the issues being discussed.

Yes, one thing you appear to be missing is that Apple does not support
any Mac emulators on little-endian machines.  They support the
original 68k, the PPC, the SPARC and the HP.  Notably absent is the
x86 and Alpha.

    Jeff> If one is emulating 68K code, preserving
    Jeff> endianness is nice, but a fairly easy things for developers
    Jeff> to avoid.

No, the semantics of the Mac system calls are such that endianness has
to be considered everywhere.  If you're not familiar with programming
the Mac, the following may not make sense, but what do you do with
system routines that expect to pick up data in resources?  Should the
resources be stored in native order or canonical (big endian) order?
If you pick the former, then you can't pass files containing resources
around between machines of different endianness.  If you chose the
latter, then you have to do byte swapping yourself if you are going to
use the resource internally.

    Jeff> After all, my program runs on both 68K and x86
    Jeff> [but not VAX].

Your programs are not Mac programs, right?  Big difference (see above).

    Jeff> Just don't write out longs and read them back
    Jeff> as shorts or bytes. Read data in the same way you wrote it
    Jeff> out.

See?  You overlooked the system service issue.  Remember, the system
services that MacOS provides are already cast in stone.  We're talking
about tools to enable *existing* applications to be ported, not the
possibility of writing tools that work well with new code.

    Jeff> You have to have architecture independant file code but
    Jeff> that can be done easily as well.

Nope.  Same problem.  There are a variety of file formats that are
*already* defined.  Hence the programmer has to be aware of the byte
swapping issues.  That makes for significant amounts of extra code to
write.  Guess what happens when you provide tools that aid in this
process, but still require the end-user (i.e. the programmer doing the
port) to pay careful attention to these things?  You get tons of calls
by irate programmers saying "the tools don't work", and you know what?
They'll be right -- one out of ten times.  That one out of ten will
teach them not to trust the tools (the tools we're talking about are
prone to the same clean-room development incompatibility issues that
Executor is), so everytime something goes wrong, the tools will be blamed.

    Jeff> What would be difficult to
    Jeff> do is handle WMF/BMP files as PICT files - probably not
    Jeff> worth the hassle, just let developers write a bit of code
    Jeff> for that. (Well, it could be done - just warn developers
    Jeff> about the holes) Accessing bitmaps/video would have to be
    Jeff> patched up too, but none of this is as much work as porting
    Jeff> to a different API (all this would be done, plus a whole
    Jeff> bunch more :)

In some cases you're right, in some cases not.  Some programs would
port more easily using such tools than others.  However, we discovered
years ago that it is impossible to offer such tools when you're a
small company.  After 2.0 is shipping, if we have boatloads of cash,
it may make sense for us to reimplement what we had before.  However,
the tools would either be expensive or would have very high technical
support fees tied to them.

Remember, this is what ARDI originally did.  We ran into all the
problems mentioned above, and more.  Back then people would also ask
us whether or not our tools would be good enough to port, say,
Microsoft Word.  We'd answer "Yes.  <pause>  We think."  We'd then
have to explain that we would never see the source to Microsoft Word,
so all such answers would be speculation.  Eventually, to silence our
critics, we wrote some glue and made a small program that would run
Macintosh binaries -- you guessed it -- that program was Executor.

Once Executor got a little better, it was clear that we'd do much
better working on and selling Executor -- in fact, we even had a
couple of profitable months back in NEXTSTEP's heyday, back before
NeXT stopped making hardware, but that's another story.

	--Cliff
	ctm@ardi.com


References: