TOM Home
TOM Tasks

Download TOM
TOM Software
Bug Database
Mailing Lists

tiggr at

Short Cuts:

all of 'em
tom [an error occurred while processing this directive]
tesla [an error occurred while processing this directive]
mu [an error occurred while processing this directive]
tomgtk [an error occurred while processing this directive]

all of 'em
tom 1.1.1
tomgtk 0.11
tesla 0.91
gp 0.5
mu 1.0

GIF free NOW!

Tesla is the new TOM compiler, written in TOM. It is the compiler of choice and is actively developed and maintained.

How to build and install Tesla is explained in the Tesla install instructions. Note that you do not need TOM to boot Tesla the TOM compiler into existence. (Also note that when using Tesla to build TOM programs, TOM no longer depends on Objective-C or GNU CC.)


Sat Apr 14 2001
In the last year, many bugs have been fixed, in tesla and in the supporting libraries and utilities. Blocks are now much less likely to have compile-time errors. The 'obsolete' keyword has been added and is largely working. At this point, tesla should be the primary choice when looking for a TOM compiler.
Sat Feb 12 2000
I have found and fixed the problem with gp needing the :gc-pth 1000000 on the command line to prevent it from dumping core. The fixed bug was in the TOM run time library. There should now be no more problems with building the bootstrap. Test it! Without major problems, the current snapshot of Tesla will become version 0.94.
Thu Feb 11 2000
I have found and fixed the problem with TOM shared library units! Incidentally, I also removed the big hack that imposed a limit on the number of non-static class variables that extensions could introduce or was wasting memory in the absence of those extensions. Test it widely (wildly?)!
Sat Feb 5 2000
Status: Tesla bootstrap works on i386 and PPC, but shared libraries of TOM units do not. In addition, there is a garbage collection problem that pops up when running gp on mu/ Add :gc-pth 1000000 on the command line for now - it effectively inhibits the program to do garbage collection.
Tesla can compile TOM/Gtk now, after fixing a bug reported by David Wallin.
Thu Jan 27 2000
The correct functioning of the Tesla bootstrap on PowerPC Linux has been verified (I had to add `:gc-pth 1000000' on the invocation of gp and use static libraries though; investigations are ongoing).
Thu Jan 20 2000
I have verified on a clean machine that the bootstrap install works, at least on my i386 Linux box, as described in installation instructions.
I've registered and mentioned Tesla on
Sat Dec 18 1999
Many bug-fixes to the Tesla bootstrap and TOM standard libraries.
Thu Dec 16 1999
Tesla can be bootstrapped from stable snapshot sources! Read the step-by-step instructions here.
Tue Oct 19 1999
Released version 0.91! Experimental, but very usable. Besides, Tesla provides Blocks -- reason enough to start using it!
Sat Oct 2 1999
Implemented the garbage collection of blocks, or, to be precise: the proper protection of objects still referenced from a block. As very often with TOM, it was easy, given the solid software architecture already present.
Wed Sep 22 1999
Completed the implementation of TOM Blocks with the addition of block variables (ignoring, for the moment, garbage collection and block deactivation). A block variable maintains its value between successive evaluations of the block; compare them with static variables in a C function if you like. As an example, the following code will print the first ten powers of two:
  main Array arguments
  Block b = |{ /* no arguments */
	    | int a = 1;
	    | [[[stdio out] print a] nl];
	      a *= 2;

  int i;
  for (i = 0; i < 10; i++)
    [b eval];
Note that the assignment a = 1 is executed before the block is allocated and assigned to b.

Mon Sep 6 1999
Added a familiar do method to the Indexed collection class, making possible the following program (it prints its arguments and their count):
  main Array arguments
  int num_args;

  [arguments do |{All arg
                || [[[stdio out]
                     print ("argument: `", arg, "'")] nl];

  [[[stdio out] print (num_args, " arguments")] nl];
This example is actually the first example that comes with Tesla, as examples/block1.t.

Sun Sep 5 1999
Implemented context references from a block to local variables and method arguments in the enclosing scope. Fixed the type mismatches of Block's eval methods up to a certain level: they now allow the invocation of blocks with a single-value return from a void context. All this means that the following works as expected (it will print 2 plus the number of arguments to the program):
  main Array arguments
  int i;

  [|{ (int, int) (j, k)
   || i = j + k + [arguments length];
   eval (1, 1)];

  [[[stdio out] print i] nl];
What's left to be done? Only block variables (those things between `||' in the examples up to now) and block invalidation. And a cleanup of the Tesla code after what I've hacked into it while getting blocks to work :-)

Mon Aug 30 1999
Implemented non-void return types (this will print `24 42'):
Block swap = |{ (int, int) (i, j)
             || (j, i);
int j, k;
(j, k) = [swap eval (42, 24)];
[[[stdio out] print (j, " ", k)] nl];
Sun Aug 29 1999
Partially done with implementing blocks: only context references, non-void return types, partially mismatching return types, and block variables are left to be done. That means, the following works (it will print the number 66):
Block b = |{ (int, int) (i, j)
          || [[[stdio out] print i + j] nl];
[b eval (42, 24)];
3 Mar 1999
Tesla as a plug-in replacement for tomc.
28 Jul 1998
First pre-alpha release of Tesla 0.1.
28 Jul 1998
Tesla is stable!
17 Jul 1998
Tesla boots!
16 Jul 1998
first results of tesla-built-tesla
2 Jun 1998
first real code
Copyright © 1997-2002 Programmers Without Deadlines