Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
Installing Exupery
Last updated at 7:55 pm UTC on 8 April 2009
Installing Exupery is fairly simple. Exupery does need a custom VM to run, the compiler can be installed without it but it's impossible to run compiled code. You can always switch back to a stock VM after installing Exupery, only Exupery will stop working.

Installing Exupery


NOTE: Exupery 0.09 needs VMMaker loaded to run. This is because it's calling an extension method on Array provided by VMMaker.

A prebuilt image

Using Exupery

Exupery compiles to a native code cache. This cache can be flushed by re-initialising it
with "Exupery initialiseExupery" which recover from bugs in compiled code. Methods have to
be explicitly compiled.


Then to compile specific methods by hand.

Using the background compiler

First initialise the code cache with:
Exupery initialiseExupery.

Start the background compiler with:
Exupery startBackgroundCompilation.

To stop the background compiler use:
Exupery stopBackgroundCompilation

The background compiler and the code cache will be stopped and flushed on every image save. This is overkill but an easy way to ensure that there's never any Exupery contexts or code registered on an image save. The native code will not be there when the image is restarted which could cause a crash.

Using the compiling profiler

The 0.07 release introduces a compiling profiler. This profiler will compile the top 10 most frequently used methods in the block. It's the beginning of an automated driver. The aim is to balance ease of use with some predictability. A full JIT is a little too uncontrolled while doing the initial alpha testing.
ExuperyProfiler profileAndCompile: [Array allInstances explore]

Will compile the top ten methods used when opening a large explorer. Unfortunately often not enough is compiled to speed up real programs, I'm working on that.

Summary

At the moment Exupery is just a compiler, you need to tell it what you want it to compile. This is deliberate, while it's still under active development it's easier to debug if I know what I compiled. There is a profiler that can be used to drive the compiler (ExuperyProfiler).

Ways to help

The current goal is to make Exupery useful. To do this I need to understand where a significant speed improvement would be useful, useful enough use a beta compiler. The easiest way to help is to play with Exupery (currently only possible on Linux/x86 32 bit) and help work out what's minimally
needed to be useful.

Pointers