briany at qldlearning.com
Mon Jan 19 21:07:35 EST 2009
I believe CompileIt! contained its own 68k compiler (think: before
Intel there was PPC, before PPC there was 68k). It did some basic
compiling for things like chunk expressions, and then it basically
tapped into the "symbol table" which was a series of traps in MacOS
that correlated to OS APIs. Unfortunately (for CompileIt!) a couple of
things happened: PPC came out which apparently was much harder to work
with, and MacOS stopped using this method of trapping OS calls. Thus,
much of what made CompileIt! possible had gone away.
In short, the approach CompileIt! used became impractical as the
processor and OS became more advanced. And the faster the CPU got, the
less it mattered if you compile "pure" xTalk. For example, chunk
expressions are already plenty fast for 99% of what we use them for,
and simply compiling in C isn't as much of a magic bullet as it may
seem. Often a better algorithm is more useful than changing to
compiled code, especially with the birth of arrays and "repeat for
each" loops in Revolution.
Then there's the other big thing with Rev ... cross-platform.
CompileIt! was quite a feat, but it may never have happened if it
needed to cross-compile for Windows.
I certainly wouldn't put it past anyone to create something similar,
but the landscape has drastically changed. Compiling HyperTalk in
MacOS 8 / 9 is a distant cousin of creating anything useful for
MacOSX / Windows XP / etc.
I know a few people have created externals for tapping into arbitrary
DLLs or other OS libraries in the past, but these projects never seem
to gain a lot of momentum for various reasons.
FWIW, and certainly just my recollection =). This from a big fan of
the product - I quite literally got my first taste of programming
outside of HyperTalk by using CompileIt!. It wasn't until years later
that I starting mucking around with "real" low level languages such as
> I would really like to know how compileit wored. My guess was that
> it did some form of xtalk to c sourse translation and then compiled
> it. But maybe i am wrong... Maybe ti went out to some public
> smalltalk compiler. Anyone know? The kinds of system events - to
> messages thingsm i have been asking for would never come from
> anything like compile-it... But several times back in the day, i
> used it to speed up a repeditive process loop. Orders of magnitude
> speed enhancement! (and, yes, everyone take our vitamins!) randall
> -----Original Message-----
> From: "Joe Lewis Wilkins" <pepetoo at cox.net>
> To: "How to use Revolution" <use-revolution at lists.runrev.com>
> Sent: 1/19/2009 2:41 PM
> Subject: Re: externals
> Hi everyone,
> I just got back from an out of town trip and, belatedly, learned of
> Eric's demise. Wow! And he was 14 years younger than I am. Such a
> pity. Everyone looses so very much when one is taken in their prime;
> and Eric, based on his command of just about everything he did, WAS in
> his prime. I wish I had been fortunate enough to have met him. I'm
> sure he'll be helping others from a better place than this.
> A brief comment relating to this thread: I just wish we had an
> application like Compile-It™ for Rev. Too much to ask? Then we could
> create cross-platform externals as we did so easily, but just for HC.
> It would seem that, using the Compile-It™ source as a foundation would
> not make this an insurmountable task. But I guess I'm being a bit
> naive with this conjecture.
> Let's hope that none of our other elder Revers join Eric too very
> soon. Stay healthy my friends. Take your vits and exercise. Do push-
> aways wih frequency.
> Joe Wilkins
> On Jan 19, 2009, at 1:17 PM, Brian Yennie wrote:
>> Unfortunately it seems you are looking for a high-level API to take
>> care of a very low level job. There simply isn't an API for
>> everything. You are probably going to have to get your hands dirty
>> in C if this is your goal. If you know the OS APIs you want to tap
>> into, you could work on building externals in C. If you don't, time
>> to do some research =). You will definitely need to build separate
>> externals for each operating system as well.
>> Maybe not what you were hoping for, but I hope that helps.
More information about the Use-livecode