Mac OS X / Intel

The latest unstable releases of Stratego/XT 0.17 support Mac OS X on Intel machines. An experimental installer is available. See the announcement on the mailing list.

Please note that Stratego/XT 0.16 does not support Mac OS X running on Intel machines.

Mac OS X / PowerPC

Stratego/XT supports Mac OS X on PowerPC from release 0.11. The release page of the latest release contains links to binary distributions for Mac OS X.

The performance of Stratego/XT at Mac OS X on PowerPC is rather poor.

  • The main reason for this is probably the architecture of the G4, which doesn't play too well with the implementation of choices (based on jmp_buf) in the Stratego compiler. The size of a jmp_buf depends on the architecture of the processor and unfortunately RISC processors need a very large jmp_buf.
  • Another reason might be the performance of nested functions. This will be solved when the Stratego compiler no longer uses nested functions for the implementation of lexical scope of strategies in Stratego.
  • Yet another reason is the performance of forking a process. Forking is much slower at Mac OS X (and Cygwin) then at a Linux system.

GNU/Linux / PowerPC

One of our master students (Dick Eimers) has installed Debian at a PowerMac6,3 and I've tried to build Stratego/XT on this machine. At first this wasn't very succesful. I was using FSF's GCC 3.3.4 and this resulted in the usual problems.

However, it works look a charm with GCC 3.4.1! Even more suprising to me is the performance, which is excellent. The jmp_buf size at Debian/PowerPC is much smaller than at Mac OS X!

  mbravenboer@mcflurry:~$ uname -a
  Linux mcflurry 2.4.25-powerpc #1 mer avr 14 15:38:38 CEST 2004 ppc GNU/Linux

  mbravenboer@mcflurry:~$ more /proc/cpuinfo
  processor       : 0
  cpu             : 7455, altivec supported
  clock           : 1249MHz
  revision        : 3.3 (pvr 8001 0303)
  bogomips        : 1245.18
  machine         : PowerMac6,3
  motherboard     : PowerMac6,3 MacRISC3 Power Macintosh
  board revision  : 00000001
  detected as     : 287 (Unknown Intrepid-based)
  pmac flags      : 00000000
  L2 cache        : 256K unified
  memory          : 512MB
  pmac-generation : NewWorld

  jmp_buf size: 364

jmp_buf size at same hardware, GCC 3.4.1 and running Mac OS X: 768

jmp_buf size at my SuSE 9.0 at Pentium M system is 156.

History and Future

Mac OS X is support with a patched GCC from StrategoXT 0.9.1. This patch has been implemented by Eelco Dolstra.

In Stratego/XT 0.17 we hope to remove nested functions in the C sources produced by the Stratego Compiler (See issue STR-119).