Tonic Version History --------------------- v0.80, Feb 20, 2003: This is a substantial release, hence the atypical version increment. The Tonic website has also been substantially revised. 1) Support per-user resource file customization. If $HOME/.tonicrc exists, or TONICRC is defined and points to an existing file, then the contents of that file will be used to dynamically customize Tonic at runtime (i.e., most of the scripts installed from ./util now read the resource file). A sample tonicrc is given in the ./util directory. 2) Add fault tolerance by supporting transactions, albeit only naively at present, within JavaSpaces Worker. See configure, startServers, and runWorker scripts for more details. 3) Support 'install' and 'uninstall' targets. Builds may now be installed to directories outside of Tonic tree, which is a nice step forward in ease of use, as environment variables are no longer required. Users need only add the tonic binary installation directory to $PATH. 4) Incorporate existing $CLASSPATH when invoking java w/in the runWorker, runJs/runMaster, nvoRun, nvoProvider, and nvoPortal scripts. 5) Added new Task subclass, ExternalProcess.java, to ./jsbench, which enables arbitrary programs to be used as Worker tasks. 6) Smarter session management: startSpace records the exact PID of each Java process started (instead of the PID of the launching script), so that stopSpace brings down ONLY those proceses, rather than using the lj script to bring down all Java processes launched by the given user. 7) Build Ping.java within ./jsbench, not just ./nvo, for general access. 8) A TSpaces installation location may now be specified at configure time, which seeds several files within the ./tsbench directory. 9) TSpaces benchmarks now use configure variables to specify server host. 10) The top-level Makefile no longer builds the C benchmarks by default. 11) Created new master subclass, CMapMaster, to generate confidence contour maps with the ISIS (space.mit.edu/CXC/ISIS) spectral analysis package. 12) Added startSpace, stopSpace as synonyms for startServers, stopServers, and added runMaster as a synonum for runJs (see util/Makefile). In fact, only startSpace/stopSpace will be installed at build install time. 13) Moved several files from ./jsbench and ./util to new ./obsolete directory. 14) Updated documentation on website, though it's still far from good. Added new ./util/genDocs utility, which should make it simple for users to generate most of the existing documentation for themselves. v0.76, Oct 17, 2002: 1) Minor enhancement to 'lj' utility 2) Added some debugging and timer capabilities to Provider and Portal 3) Ensure that nvo debug/diagnostic output is sent only to stderr, so as to not conflict with non-diagnostic service/portal info that is sent to stdout. This permits running debug/diagnostics on a running system w/out impacting it's operation. 4) Added timer to Ping.java, to emit elapsed time to contact space 5) Refactored some of the ./stats information, to produce speedup scatter plots (in .ps and .gif), relative to both Java and GCC. 6) Gutted the README, in favor of having users refer to the instructions online. v0.75, Oct 2, 2002: 1) Use computable job as template for retrieving computed job within Portal.java, to ensure uniquely identified result is returned. v0.74, Sept 29, 2002: 1) Multiple services can now be launched w/in a single provider JVM, which can save considerable memory when hosting multiple services on a single machine. 2) Added prototype scripts for SharedVM support, as an experiment in reducing memory usage. The result is not terribly useful yet, as in the most common case Tonic uses the transient Outrigger (which is not an activatable service) and avoids Mahalo (the trxn mgr) and persistent Outrigger (both of which are activatable, and thus can be co-located in a sharedvm with the Reggie, the lookup service, and other Jini services) 3) Added nvoPortal and nvoProvider utilities, which are essentially mnemonics for "nvoRun Portal" and "nvoRun Provider" but allow different memory configurations to be used for each. 4) jsbench/Master.java: don't hardcode default spacename to 'tonic', instead rely on launching scripts to do; exit when connection to space cannot be established 5) Created nvo/NullJob.java, as a no-op stub job for testing/diagnostics 6) Remove leading tab from output of Monitor.listServices() (accessed via Portal -list) 7) Changed Job.instance field type to long, for larger range of global IDs 8) Removed validateJob() from Portal: in the general case the Portal should not have prior knowledge of all providers/services that will be registered, so, logically, it makes little sense to validate service names prior to dispatch. 9) Removed interactive service selection (print/readline) from Portal 10) Renamed 'Service' class to 'Advertisement', to more accurately reflect its purpose. v0.73, Sept 27, 2002: 1) Tweak configure.in so that server hostname never includes domain. 2) Set umask to 000 in several of the utility scripts, so that tmp/log files may be overwritten by anyone. 3) Log files created in /tmp no longer hidden, for easier perusal. 4) Log files suffixed with port # serving the tuple codebase, rather than the $LOGNAME of the user. This should permit more flexibility for hosting multiple spaces on a single machine. 4) Friendlier/more intelligent startServers/stopServers (but still, not as intelligent as they could be) 5) Smarter command line option processing in Portal.java (don't connect to space when zero or unknown options are given) 6) NameResolver now more graceful when no object name is given. 7) Add support for IBM AIX to 'lj' utility (quasi-rewrite) v0.72, Sept 24, 2002: 1) Introduced @tonic_native_threads_switch@ to GNU configure script, which defines $NativeThreads w/in util/site.def.in, as a way of providing the -native threads option to supporting JVMS and excluding it for non-supporting JVMs (as in version 1.4.x of j2sdk) 2) Quick fix: shrink minimum memory size from 64Mb to 4Mb, for services invoked via nvoRun. The long-term solution is to use shared VMs to host multiple services. 3) Smarter/friendlier package builds. v0.71, Sept 12, 2002: Mostly changes for NVO service architecture 1) added nvo/Ping.java utility 2) fleshed out nvo/NameResolver.java class 3) nvoRun utility no longer redirects stderr to stdout 4) SpaceAccessor.java throws exceptions in more cases 5) reflected (4) in all affected ./jsbench and ./nvo classes 6) ./nvo builds will now occur by default when building entire package 7) numerous enhancements to ./nvo Portal, Job, Provider, etc (in support of ADASS 2002 demo) 8) tonic.*sh setup scripts now using 'tonicif' to echo $Jini, instead of invoking 'checkJ -jini' v0.7, Sept 3, 2002: o Updated SpaceAccessor.java to work with Jini 1.2.1 (using version from JavaSpaces archive, thanks to Luba Powell and Robert Hellwig). Changed several defaults along the way. o Replaced use of SpaceAccessorException with basic Exception (for simplicity) and added check for com.sun.jini.outrigger.spaceName property prior to setting default space name. o Added several configure script options: -with-spacename , to permit arbitrary space naming in benchmarks and utility scripts. -with-serverport, to permit serving of codebases on essentially arbitrary ports -with-rmidport, to permit rmid listening on essentially arbitrary ports o Changed default space name from "JavaSpaces" to "tonic" o Caveat Emptor: Like the original authors, I was too lazy to try to fix the JavaSpaces book example code for Jini 1.2.1, so to allow 'make' to complete sans error I commented several of the more broken spots for Tonici v7.0. Your mileage may vary. As mentioned above, others have already provided a Jini 1.2.1-compatible SpaceAccessor, which I took the liberty of merging not only into the Tonic ./jsbench directory, but also the jsbook/util directory. v0.61, January 29, 2001: o Added uncoupled null i/o benchmark: NullReader & NullWriter o Added util/tonicinf script, which echoes current Tonic settings. It's automatically called from tonic.*sh during configuration, but may be invoked at any time from the UNIX commandline. o Minor restructuring and code tweaks to several of the benchmarks o Finally updated class diagram to reflect recent development o Updated ./stats directory with many more benchmark results o Minor tweaks to the web site .html files o Deprecated jsbench/runBench script v0.6, January 6, 2001: o Removed AC_PROG_CXX from configure.in. Tonic currently uses no C++ code, so removing this test simplifies end-user setup. o Added --with-host and --with-domain options to configure, to simplify multi-host configurations. o Added util/tonicinf script, add call it from tonic.[c]sh scripts so that installation and version info is echoed during setup. o Much improved Dynamic compilation technique, using new Executive, CSrc, and HeatCSrc classes. v0.51, January 3, 2000: o Added crude DOS .bat versions of the runJs and runWorker Bourne shell scripts. On WinXX platforms they need to be executed from within the Tonic util directory, and should be edited to change the hardcoded hostname and port number. v0.5, January 2, 2000: o Added tsbench directory, which mirrors several of the JavaSpaces benchmarks with TSpaces implementations. o Added a prime number sieve benchmark, and two monte carlo simulations (neutron shielding, point source heating in isotropic scattering medium) o Mirrored these new additions with sequential C (and in some cases OpenMP) implementations in the ./cbench directory. o Added an identical random number generator to both the C and Java code, to ensure that performance comparisons between the two languages use the exact same random number sequences. The algorithm used is a modified version of the linear congruential method given in Knuth's "The Art of Computer Programming," Vol 2, Section 3.2.1. o Added some Java language benchmarks (multidimensional array referencing costs, cost of wrapping primitive types within objects, especially when used as loop indices) o Added new remnconfig directory, which demonstrates how small parts of the JavaSpaces technology can be combined with your client code, w/in a single jar file, to obviate the need for installing JavaSpaces on each remote node one might wish to utilize w/in a computation session. o Added --with-jinidir option to the GNU configure script, and support for Java 1.3 (thru .9) to the util/checkJ script. o Bumped the initial heap size specified w/in util/site.def to 3Mb, to because Java1.3 implementations seem to complain when it's lower. o Miscellaneous polishing of inheritance and minor code restructuring. o Added a smidgin more benchmark stats. o Added .zip file to website for Windows downloads. v0.4, November 2, 2000: o Added several new benchmarks (ArrayIO, NullIO, Pi computation, Jacobi iteration computation) and supporting classes (TypedArr, DoubleArr, and Reducer). Warning: not all are fully baked yet, especially the Jacobi and Reducer classes. o Added several C/OpenMP benchmarks (in $Tonic/cbench) as points of reference for performance comparison on single- and multiprocessor architectures. o Compiled Java classes are included in the distribution. It is no longer necessary to build them yourself after installing. o Added several utility classes (Squeegee,Timer,Reporter,Sizeof) o Added 'runWorker' utility script. o Tonic master and worker classes are compiled into separate .jar files within $Tonic/lib (tonicm.jar, tonicw.jar), so that less code needs to be distributed to client machines that will run Worker processes. o JavaSpaces book examples are no longer compiled by default when building from the $Tonic root directory. Instead, use 'make jsbook' to build them. o Added class diagram and javadoc documentation to the website. o Experimenting with dynamic compilation interface by changing from JNI- based to 100% Java (see Dynamic class). o Included more benchmark statistics, and moved them into $Tonic/stats. v0.3, July 17 2000: Added a distributed image histogramming benchmark, an 'nprocs' utility for determining the number of processors on a host, a GNU autoconf/configure script, csh/tcsh support, and a site.def file (which provides a shell- independent means of defining environment variables). Deprecated use of NCSA Horizon package in favor of incorporating the smaller (and more suitable) Image/J package from Wayne Rasband at NIH. v0.2, March 26 2000: Added preliminary benchmarks for coarse-grained master/slave processing tasks, a simple image displayer, some experimental JNI (Java Native Interface) code, and incorporates ND array classes and image file readers from the NCSA Horizon package. v0.1: Initial distribution.