October 10th, 2001 Titaniumc version 1.910 is now publicly available. User-visible changes since the last public release include: --- Backend/Runtime changes --- * Added 2 new backends: mpi-cluster-uniprocess and mpi-cluster-smp, based on Dan's AMMPI layer, which should run on any system with MPI 1.1 * Added conservative distributed garbage collection to all the distributed backends (except cray-t3e, which doesn't support the Boehm-Weiser collector) * Upgraded the udp-* backends to AMUDP 2.1, which includes a more general job spawning mechanism * New properties now available via System.getProperties: java.version,java.vm.version - tc version runtime.boundschecking - whether or not bounds checking is on runtime.gc - whether or not gc is on compiler.flags - tc flags used to compile the application * Fix miscellaneous bugs (PR392,PR393) --- Frontend changes --- * Fixed some region safety issues (PR385,386) * Restrict the use of copy and exchange on Titanium arrays whose elements contain embedded local pointers --- Optimization changes --- * Added several new sequential optimizations, including: local copy-propagation global constant-propagation constant-folding dead-variable removal unreachable-code removal * Improved dead-assignment elimination to work on immutable fields * Small performance upgrades to the result of method inlining * Automatic method inliner is stable and can be enabled using "--tc-flags -Oinline2" (currently off by default) --- Miscellaneous changes --- * Smarter generation of #line directives, leading to smaller C files for debug builds * Added support for Intel's C/C++ compiler (icc) * Fixed a bug in java.util.Random.nextLong() that was affecting the output distribution * New tcbuild flag "--sequential-consistency" enforces sequentially consistent memory model in Titanium programs * Some tweaks to make the Titanium compiler run faster * Added configure options (--disable-) to suppress usage of a given backend at configure time --- Updated backend information --- Here are descriptions of the Titanium backends currently available: * sequential - A single titanium process - useful for testing and debugging. * smp - This parallel backend runs the Titanium processes as Posix threads within a single shared memory space, with fast "narrow" pointers. You should specify the number of parallel threads by setting the environment variable TI_PFORP = "N/N" (for N threads). * now-cluster-uniprocess - the high-performance cluster backend on the Berkeley NOW. Each Titanium process runs on a separate node of the NOW. * mpi-cluster-uniprocess - portable, high-performance MPI-based cluster backend that should run on any cluster with MPI 1.1 or better * mpi-cluster-smp - Same as above, but for a cluster of SMP's (CLUMP). Each node in the network runs one or more Titanium processes as Posix threads. For more detailed information about using the udp-* backends, see: http://www.cs.berkeley.edu/Research/Projects/titanium/doc/mpi-backend-usage.txt * udp-cluster-uniprocess - the portable UDP-based cluster backend that should run on basically any set of machines that have sshd and a basic TCP/IP stack (they can also take advantage of rexec and GLUnix on the NOW and Millennium, respectively). * udp-cluster-smp - Same as above, but for a cluster of SMP's (CLUMP). Each node in the network runs one or more Titanium processes as Posix threads. For more detailed information about using the udp-* backends, see: http://www.cs.berkeley.edu/Research/Projects/titanium/doc/udp-backend-usage.txt * cray-t3e - Runs on the Cray T3E using shmem. This platform has a few limitations (notably, the lack of a garbage collector). * sp3 - Runs on the IBM SP Power3 machine with LAPI as the low-level communication system (uses an AM-to-LAPI compatibility layer) * mill-cluster-uniprocess, mill-cluster-smp - these backends were designed to support the Via network on Millennium, which is no longer available. They may be used in the future to support other Via-based clusters. * sp2, sp2clump, tera-thread - deprecated backends --- Miscellaneous notes --- * A new version of the language reference manual (v1.0) is available on the Titanium web site.