MacTierra logo

This list refers to the MacTierra version 1.8.5 (Fat)

If you find bugs which are not documented here, please let me know!


You can find updated versions of MacTierra, including beta versions, on my MacTierra page at the Santa Fe Institute. MacTierra is also available from Brian Hill's most excellent Macintosh Artificial Life Software page.

PowerMac native version

MacTierra is now a fat binary (yeah!) -- in other words, it contains code to run native on both the old 680x0 Macs, and Power Macintosh computers. Typical speeds are 16-20 thousand instructions per second on a Quadra 800, and 160-200 kips on a PowerMac 8500/120.

Implementation details

MacTierra was originally written in Think Pascal, and then ported to Metrowerks Pascal. Some of the speed-critical routines and custom list functions are written in C. It makes extensive use of objects, and is based on Chuck Sphar's 'PicoApp' application shell.

Known bugs

Statistics are not saved between runs, and no warning is given if changing settings will cause a loss of data.
Creature size data are not logged to the file.
Memory management
MacTierra has not been stress-tested under low memory or low disk-space conditions. Good behaviour under these conditions is not guaranteed.
MacTierra gets stuck in a loop at some point in a long run, when the genebank file gets pretty big. Work-around: turn off saving genebank into to the file for really long runs.
Cosmetic problems
There are some minor cosmetic problems with updating the inventory window, and detecting clicks in inactive windows.

Areas under development

It is unlikely that I will do much more work on MacTierra, apart from bug fixes. My interests have moved on, and time is always short. If you want to see something new, then you can always try me, but I don't make any promises.
Soup file format
The soup file format is not frozen. Do not run long soups with this version, and expect the next version to be able to open the file and continue the run.
The Tierra engine
This is now fairly close to Ray (1991).
Menagerie window
The 'Menagerie' window is still being developed, to enable the sorting of the list etc. It has problems -- gaps in the list are unsightly, but not dangerous.

Version History

1.8.5 September 1997

NB. Version 1.8.5 uses a new format genebank file. It will warn you on startup if your genebank file is out of date, and if so you will have to move this file to another folder, and have a new one created.
Recompiled in CodeWarrior 12, fixed their very broken pointer-based objects code.
Fixed a bug that caused crashes if the cosmic ray mutation rate was set to None.
Added a genebank info dialog, which shows some rather technical stats for the genebank file. This dialog will continually update if a soup is running. (Cool!)
The genebank file is now verified on startup, and, if found bad, you will be told to delete it and start again. Show a progress dialog for long verifications.
Fixed some bugs in the genebanking code that could have caused hashing clashes.
Optimized the genebank hashing algorithm. Improved error reporting on opening older-format genebank files.
Added the ability to save activity data through the 'Collect statistics' dialog. Activity data is saved to its own file.
Fixed a bug in the display of the copy rate in the inventory window.
Fixed some bugs in the Menagerie window that could cause crashes.
Fixed the problem of the controls in the 'Collect statistics' dialog interfering with eachother.
1.8.4 Summer 1997
Fixed a memory leak on saving soup files.
Added the ability to specify the random seed for a run; the random seed is also saved in soup files now, so that runs can be replicated easily. Added a new dialog box for specifying the random seed options.
1.8.3 December 1996
Recompiled with the new MW Pascal compilers.
Re-wrote the text parsing code used to compile a creature on dragging text into the soup, so it's more more robust to text format (i.e. leading white space and blank lines are ignored).
Fixed a few miscellaneous bugs.

1.8.2 October 1996
Fixed a serious memory leak (in the System heap) when saving files. This could cause crashes if you had autosave on for long runs.
Fixed a bug that prevented new soups with no inventory entries from being loaded.
Fixed a bug introduced in 1.8.1 that caused a crash when dragging from the Menagerie window.
1.8.1 September 1996
Changed the genebank format slightly, and wrote GenebankDump to dump the contents of the genebank to a file.
CPU objects are now recycled, to speed up object allocation in large soups. Objects are still pointer-based.

1.8 August 1996
Implemented single disk-based genebank, using a fast extensible hashing algorithm (Sedgewick 1988: Algorithms). The genebank window is now replaced by the inventory window, and genotypes are not longer held in memory for the whole run. This means that MacTierra will run happily in a 2MB partition with no problems.
Added the bullet showing the current instruction in the genotype window.
Added selection for 'leanness'
Soup processing is now handled by the Thread Manager, and not idle tasks as before. So you need the Thread Manager to run MacTierra now.
Reorganized the Misc settings dialog box.
Some memory-related bugs fixed. MacTierra should be pretty stable now.
Fixed a bug on closing a window (the current port was being left undefined).
Objects are now pointer-, rather than handle-based, which makes things a bit more responsive. Optimized MW's ObjIntf.p to eliminate the handle tests. MacTierra is bloody fast now.
1.7.3 5 February 1996 1996
Added option for creatures to have global write permissions.
Added different mutation options.
Speed increases in finding creatures in the soup, especially with large soups full of small creatures.
Fixed bugs relating to template searches wrapping the end of the soup.
Fixed slicer bug so that new creatures now get allocated time just before their parent in the next cycle.
Added option to show instruction pointers in the soup.
Changed updates so that updating 'Each timeslice' now updates after each instruction. This is cool for viewing IPs moving around.
1.7.2 29 January 1996
Fixed a stupid bug which caused stats not to be saved if you had not selected to save population size.
Added an item to the Stats dialog to show the name of the stats file.
1.7.1 28 January 1996
Did a lot of work to fix various bugs, and bring this implementation still closer to the real Tierra.
Change the way species are censused in the soup, at last giving accurate species counts, and speciation and extinction data.
Stats data are now logged to file during the run (yeah!).
Added Genotype and instruction use frequency plots.
Fixed bugs relating to the genebank window, resulting in much faster list updating.
Added ability to zero out offspring and reaped cells.
Added transfer of registers to offspring.
This version compiled to use relative addressing of creatures.
Changed the mutation dialog, and altered the way in which mutations are timed.
Added different size slice strategies
Added tracing of lineages
Changed the genebank hash function, so that genebank searches are much more efficient.
Implemented execution flaws relating to register use
And lots more that escapes me at the moment...

1.7 January 1996
Implemented the sloppy execution of instructions (in the mutation dialog).
Added different daughter allocation options (in the soup settings dialog).
Made the soup circular. Other minor changes so that this is closer to Ray's Tierra (e.g. changed the stack size from 11 to 10 locations).
Worked on the observe window, added a soup view. The step button now steps only over the current creature, and skips other creatures.
Debugged the dragging of text files into the soup (i.e. for assembling creatures).
Changed Max Fitness graph to show the fitness of the most fit genotype, rather than creature.
Much work on the genebank window, which you can now sort in various ways and resize the columns. (Try option-clicking a genotype.)
Much better low memory handling. When a run stops because of lack of memory, the soup can still be saved.
Window positions are saved between runs. (Hold down the option key when opening a window to use the default location.)
Fixed drag highlight colors (as if it really mattered).
Soup file version checking now using a file version number saved in the soup file, and not MacTierra's own version number.
The menagerie list now uses an LDEF stub, so that it runs native on both platforms.
Added a memory window, so you can see when MacTierra is about to crash ;-) Improved window/menu interaction in general.
More optimization for the PowerPC. All files are cross-platform compatible still. I get ~100,000 insts per second on a 120MHz 604. :-)
1.6.5 October 1995
Now a fat binary. Soup and menagerie files are compatible across platforms.
Implemented the hierarchical genebank window, which necessitated further changes to the soup file format.
Enabled dragging from non-foreground windows (as per Apple HIG).
Enabled dragging of clippings files (and text of similar format) into the soup.
Copying of the soup, and the graph as PICTS is now possible.
The plotting of bar graphs with lots of columns is a little more sensible. Also disable unavailable items on graph popup menu.
Changed the soup colors (edit the CLUT resource if you don't like them), and altered the way colouring of the soup is done (thanks Peter!).
Added panel to show which creature is currently under the cursor in the soup window. This makes finding creatures a lot easier (Peter's help again).
Many other bug fixes and minor changes.
1.6.3 20 June 1995
Fixed a bug which caused a crash when clicking on the grow box of the graph window, when this window was not foremost. (The Infinity WDEF reports a click on the growBox even when the window is not foremost.)
Changed the file format, so the genebank is saved first. Fixed a couple of genebank-saving bugs; the number of creatures is now correctly remembered between runs.
Altered the strategy for preferences settings; soup prefs are now set in the mutation and soup specs dialogs, when no documents are open.
Added option to change creator of text files to preferences dialog. If you want any other file types on the menu, let me know.
Reworked a lot of the genebank-entry code, to fix the 'number of species' problem. This is not simple, mainly because the effects of cosmic mutations on genotypes has to be accounted for. What the heck is a species here, anyway?
Changed the default preferences so that more interesting things happen in the soup (reduced mutation rates).
1.6.2 15 June 1995 (limited release)
Reworked some of the event-handling code to attempt to fix a bug (possibly a RAMDoubler conflict) which caused newly created soups to be inactive.
Added 'does activate on foreground switch' in Finder flags.
Fixed a bug which slowed down the soup when the observe window was visible, but didn't contain a creature.
Added keeping of a running max and min to stats arrays; should speed things up when long series of stats exist.
1.6.1 13 June 1995
Fixed file saving; 1.6b2 crashed when opening a saved soup file.
Improved accounting of number of species in the soup.
Better handling of low memory conditions, especially when a soup is left running unattended. MacTierra will now stop the run and put up a warning when a low memory condition is detected.
Fixed a bug which caused a crash when switching between soup windows with the graph window displaying a frequency plot.
Disabled Revert and Print menu items, which are not implemented yet.
Tidied up code segmentation.
Minor changes in documentation.

1.6b2 12 June 1995
First public release. Buggy, but short-lived!

Please contact me if there are developments you would like to see included. I don't promise to be able to implement them, but I would like to hear comments.

Table of contents Installation Running Soup settings Preferences Statistics
Assembling Interface How it works c.f. Tierra Bugs and features Legal stuff