$Id: CHANGES,v 1.2.4.41 2000/03/16 17:11:59 ajp Exp $


Author: Andrew J. Pitman <ajp@torch.rowan.edu>

0.34:
With this version, support for condition variables was added to both
daemons, but not yet to the library.  It is up to the client
library to enforce the convention that an associated mutex must be
locked when waiting on a condition variable.  The library will then
unlock the mutex before waiting and then relock it upon return
(unless an error is returned).

0.35:
With this version, support for condition variables was added to the
client library.  So far, pvm_cond_timedwait implements a non-timed
(regular blocking) condition variable wait.  In the future, it will
timeout after the number of seconds given in the last argument have
elapsed.

0.36:
The first official release.  With this version, pvm_cond_timedwait
(and the corresponding server operation) were added.  This function
takes an unsigned int argument that limits the amount of time the
program will remain blocked on the condition variable before
ETIMEDOUT is returned.  Also, most of the manual pages for the
client library were added.

0.37:
The second official release.  Some routines were moved around
between files, but mostly remain the same.  Also, the manual pages
for shared data routines have been completed.

0.38:
The third official release.  The locations of the logs were modified
to honor TMPDIR.  The logs now reside in a subdirectory of /tmp (or
TMPDIR, if set) called pvmsync-logs by default.

0.39:
Bugfix release only.  A permanent deadlock condition in both servers
was discovered and fixed.

0.40:
Changed the definitions of object types in pvm_gen.h.  The new
definitions are bitmasks and can be used in bitwise operations /
comparisons.  Note that this makes the server incompatible with
the older library and vice-versa.  Make sure you are running the
current versions of both daemons as well as the client library.
Data sizes are enforced.  The data members for integer and floating
point are int32_t (32-bit integer) and float64_t (64-bit floating
point).  The header pvm_sd.h must be included to use these types.

0.41:
Added garbage collection to the tcp daemon (pvmsyncd).  By default,
all objects that haven't been accessed for 1/2 hour will be removed.
By specifying the -t cmdline option, you can set the timeout to your
tastes.  Also, the -T option turns off this feature.  In addition,
a bug was fixed where queries for already existing objects would go
ignored.

0.42:
A few cosmetic changes were made to the header files and a bug was
fixed in the client library where a program would fail outright if
it couldn't create an object locally, instead of continuing on and
creating the object elsewhere.

0.43:
Minor bugfixes.

0.44:
Run (log) files and the UNIX domain socket were moved to
/tmp/.pvmsync (or $TMPDIR/.pvmsync) and file names for the run
files were changed.  The udp daemon was moved to port 1180/udp.
The pvmsync "service" now appears as such:

pvmsync         1180/tcp
pvmsync         1180/udp

but is "split" between two separate daemons.

Also, types int32_t and float64_t have been changed to:
pvm_int32_t and pvm_float64_t.

0.45:
Many changes were made to the pvmsync API. These changes
mostly deal with making pvmsync more location transparent.
Since pvmsync is primarily intended to be used with BPROC
(bproc_rfork), I have deprecated the pvm_bind and
pvm_*_bind functions. As far as cluster-wide naming goes,
the name of an object is chosen by the client library at
initialization. The names look something like:
xxxxxxxxXXX999999, where xxxxxxxx is the nodename, XXX
is the type of object (MUT, SEM, CND, INT, FLT, or MEM),
and 999999 is a random positive integer. Since the
internal structure of the client's object is copied along
with the rest of the process' address space when a
bproc_rfork is performed, pvm_getaddr and pvm_*_getaddr
was deprecated also.


