This page is a notepad of ideas and to-do items to be considered in the development of SEAM. SEAM stands for simple extensible abstract machine and is a new virtual machine which supports execution of multiple languages. Currently, there is a language layer for Alice and a prototype language layer for the Java Virtual Machine.
Ideas and To-Do Items
64 Bit Support
Mostly clean. Remaining problems:
Integer size hard-coded to 31 bits.
Big tags realized in the language layer, which means that we have to stick with the same number of bits for tags, otherwise pickle compatibility is lost.
BigInts will use only 31 bits for small enough integers, although 63 would be possible.
The garbage collection heuristics must be adjusted. A block in the store occupies twice the memory that it would on a 32 bit machine, so GC happens a lot more often if the limits are not chosen properly.
The Jitter does not work, and never will.
NEVER is a very strong line in the sand. 64 bit machines will become the rule rather than the exception. -- ReillyHayes
What this means is just that this particular jitter (the x86 native code jitter based on GNU Lightning) most likely can't ever be ported to 64 bit. But for example, the new byte code jitter is 64 bit ready. -- Andreas
I cannot compile SEAM 1.4 on Linux AMD64 architecture. There are lots of casting errors ("losing precision"). The default GCC used is 4.1. What a pity I cannot run it on Linux AMD64.
-- Shouxun YANG 2007-06-22
(Sorry for the late reply.)
SEAM used to build on AMD64, so I suppose this is primarily an issue with GCC 4.1, which we haven't tested yet. We'll investigate, thanks for pointing this out.
Also note that we released Alice 1.2 binaries for Debian/AMD64, which you could use ( http://www.ps.uni-sb.de/alice/download/debian/dists/stable/contrib/binary-amd64/). But there was too little interest to justify supporting it further.
-- Andreas 2007-07-14
In a thread on the Oz users' list, Joachim Durchholz gave a nice explanation for a memory leak in Mozart. Objects may keep references to data allocated outside the garbage-collected heap; these data are kept live until a garbage collection occurs and they are finalized. Such external allocation areas need to be accounted for properly in the policy of when to perform garbage collections. We should think about such an interface for the SEAM store.
-- Leif Kornstaedt 2003-02-26 13:32:49
Memory Leak in Thread Creation
Similar to Mozart.
-- Leif Kornstaedt 2003-04-02 15:11:08
Blocking native calls
Currently, a call to a native function via the FFI blocks the engine. This is a fundamental problem for binding OS or library functions that may take an indefinite amount of time to complete (e.g. Gecode functions triggering propagation until a space is stable), or even block (e.g. all kinds of I/O operations).
There should be a possibility to perform selected native calls concurrently, for example by having Seam manage (a resizable pool of) additional native threads. The respective binding would be responsible for proper synchronisation. Such calls probably need to be interruptable in case the corresponding Alice thread gets killed.
Memory management of the GMP library
Currently, GMP is built into the Alice language layer. It should probably be put into Seam directly. We have to box gmp integers twice at the moment (The "stub" in a chunk, the chunk in a ConcreteRepresentation to support pickling and equality test); it would be better to have just a chunk with a special label that can be recognized by GC, pickler, and equality test. GMP ints are allocated using malloc (or whatever gmp uses internally); Mozart uses free lists, maybe we should do the same.
-- Guido Tack 2004-07-09 12:38:08
Mozilla 2.0 VM Collaboration?
There may be some possibility of collaboration? See http://weblogs.mozillazine.org/roadmap/archives/005716.html
-- Thomas 2004-07-23
Port to Intel-based Macs?
Would SEAM port to the Intel-based Macs quickly? I'd love to run Alice on my machine, but the Mozart packages apparently don't work on Intel Macs.
-- Rod Price 2006-05-16
In principle it should, and we are looking into it for the upcoming Alice release. However, for such a release it all depends on the status of Gtk for Intel Macs
-- Andreas 2006-05-17