[MLton-user] Experimental 64-bit binary package available

Matthew Fluet fluet at tti-c.org
Fri May 18 12:10:57 PDT 2007


I am happy to announce the availability of an experimental amd64-linux 
(64-bit mode) binary package for MLton.  It may be obtained from:
   http://www.mlton.org/Experimental

The corresponding sources can be checked out with:
   svn co svn://mlton.org/mlton/branches/on-20050822-x86_64-branch 
mlton.svn.x86_64
(You can skip the binary package and use a 32-bit build (preferably
from a recent trunk check out) to bootstrap.)

This isn't a fully polished release.  However, it does feature a
native amd64 code generator (enabled by default), passes all the
regressions, and bootstraps; there are no known bugs.

Currently, I'm mostly interested in the correctness of produced code;
please report any compile-time assertions or bugs in the resulting
executables.

As the 64-bit port is wrapping up, I am also interested in portability 
and configuration issues.  I believe that for each x86-$TARGET_OS 
platform supported by MLton, we should also be able to support the
amd64-$TARGET_OS platform (when it exists).  In particular, I'm hoping
that someone can try bootstrapping from a 32-bit build to a 64-bit
build on the *BSD variants.  Making experimental binary packages 
available for other systems would also be a great help.

Items of note:

   * Please see the original 'Experimental 64-bit' announcement:
     http://mlton.org/pipermail/mlton/2007-February/029662.html

   * Both the C codegen and a native amd64 codegen are supported on
     amd64-*.  The native amd64 codegen is enabled by default.

   * Fixed the issue mentioned in the announcement above regarding
     datatypes with variants carrying a Real32.real.  There are now
     primitives supporting bitcasts of word to/from real; these
     operations are also exported in the MLton.Real{32,64} structures.

   * Restored the use of Word8{Array,Vector}_{sub,update} primitives
     for PackWord<N>{Big,Little} structures.  This solves a performance
     issue (introduced by previous refactoring that used C-functions
     for sub and update).  Also, use an ML byte swap function to handle
     when PackWord<N>{Big,Little}'s endian and host's endian differ.
     Finally, PackReal<N>{Big,Little} are implemented entirely in ML
     using PackWord<N>{Big,Little} and the word/real bitcast
     operations.




More information about the MLton-user mailing list