
=============================================================================
              CSP for Java : JCSP 1.0 Release Candidate 4 (rc4)
=============================================================================


This file contains:

  o the manifest list of files/directories in this release;
  o installation notes;
  o incremental change list since JCSP 0.5.

Please read the BINARY-LICENSE.txt file.  Retention of these files is assumed
to imply acceptance of the terms in that license.



=============================================================================
                            JCSP 1.0 (rc4) Manifest
=============================================================================


  jcspclasses.jar       (class library - add to your CLASSPATH)
  phwclasses.jar        (optional class library - add to your CLASSPATH)

  jcsp-docs/            (javadoc HTML tree)
  phw-docs/             (javadoc HTML tree)

  jcsp-demos/           (demonstration programs and applets)

  BINARY-LICENSE-JCSP-1-0-rc4.txt        (license agreement)

  README-JCSP-1-0-rc4.txt                (this file)

You will need the JDK1.1.5 libraries (or any later JDK) installed to work
with the JCSP library.



=============================================================================
                              Installation Notes
=============================================================================


Put the files jcspclasses.jar and phwclasses.jar in your CLASSPATH.
You do *not* need to unpack these files.

Point your web browser at (and, maybe, bookmark):

  jcsp-docs/index.html
  phw-docs/index.html

for the on-line documentation to, respectively, the JCSP library
and the (very small) PHW library.  The latter contains some useful
utilities for robust interactive input of Java's primitive data types
and some complex-number classes.  These have nothing to do with CSP
ideas and are *not* needed to work with JCSP.  However, they are used
for convenience in some of the demonstration applications.

The jcsp-demos directory contains many JCSP demonstration applications
and applets.  The applets can be tried out by pointing your browser at:

  jcsp-demos/index.html

Most of the applet demonstrations can also be run as applications.

Please note the warning (on the index.html page) about the disappointing
performance of *animations* under JDK/JRE1.2/3 - and the encouragement to use
JDK/JRE1.1.8 (or anything between 1.1.5 and 1.1.8).  Note that this warning
only applies to animated graphics applications/applets.  The problem seems
to lie in the 1.2/3 implementation of <java.awt.Graphics.drawImage> (and
*not* in JCSP :-) ...

The JCSP documentation contains many example programs (or fragments
of programs).  Complete versions of these can be found in:

  jcsp-demos/jcsp-docs-examples/jcsp


Peter Welch.
(13th. July, 2001)



=============================================================================
                                 Change List
=============================================================================


Changes since JCSP 1.0 (rc3) release
------------------------------------

  o Minor corrections and changes to a (very) few of the documentation files.

  o A new demo - MultiPong :-)

  o A modified demo - Infection.  This has more controls and interaction.  See
    how hard it is fighting (say) Foot-and-Mouth by culling neighbouring animals
    when the effectiveness of the cull is only 99% ...

Peter Welch.
(13th. July, 2001)


Changes since JCSP 1.0 (rc2) release
------------------------------------

  o Fixed bug in jcsp.util.Buffer and jcsp.util.ints.BufferInt.  When we tried
    to create a buffered channel of size n, we used to get one of size (n+1).
    The channel buffer is now created correctly with the requested size.

  o Fixed bug in jcsp.awt.GraphicsCommand.DrawArc and jcsp.awt.GraphicsCommand.FillArc.
    A typing error had omitted startAngle and arcAngle from the constructor's
    parameter list.  It compiled OK under JDK1.2 (but couldn't work correctly).
    The JDK1.3 compiler was more thorough and, quite properly, rejected it.
    All is well now.

  o Several additions to the documentation.  In particular, the top-level javadoc
    page points new users to the documentation in the jcsp.lang.CSProcess interface
    - where there is an overview of (Communicating Sequential) Process Oriented Design
    and the implementation pattern for a JCSP process.

  o Modified Binary Code License (that explicitly allows redistribution of JCSP
    classes as part of users' applications/applets).

Peter Welch.
(7th. February, 2001)


Changes since JCSP 1.0 (rc1) release
------------------------------------

  o Change of name of the "Timer" class in jcsp.lang to "CSTimer".

    This has been caused by the JDK1.3 release from Sun introducing their own
    classes called "Timer" in packages java.util and javax.swing.  Without this
    name change, applications importing both jcsp.lang.* and java.util.* (or
    javax.swing*) would have to qualify declarations and constructions of
    "Timer" variables and objects - e.g:

      jcsp.lang.Timer tim = new jcsp.lang.Timer ();

    With this name change, even if both jcsp.lang.* and java.util.* are imported,
    we may declare JCSP timers without qualification - e.g:

      CSTimer tim = new CSTimer tim ();

    Note that the JDK1.3 java.util.Timer is a very different class from CSTimer.

    Warning: the old jcsp.lang.Timer has been deleted from this release - not
             deprecated.  If it had just been deprecated, importing java.util.*
             would still require full qualification for references to its Timers.
             This means existing JCSP applications using JCSP timers will have
             to change all occurrences of "Timer" to "CSTimer" - many apologies.

    Aside: avoidance of a name clash was the reason why JCSP has the "CSProcess"
    interface, rather than just "Process".  There has always been a "Process"
    class defined in java.lang (again with a very different purpose from ours).

  o Some improvements to various items in the documentation.

  o Re-packaging of the release as a single JAR file.

  o A new applet/application demo - Fireworks!

Peter Welch.
(11th. August, 2000) 


Changes since JCSP 0.95 release
-------------------------------

  o Change of name of the "Many2..." and "...2Many" channel classes.  These
    have been changed to "Any2..." and "...2Any" channels.  The "Any" names
    better reflect the semantics of these channels.  ["Many" implied some kind
    of broadcast - which is not what these channels do.]

    This has been an outstanding request for some time.  The old class names
    have not simply been deprecated - they have been deleted!  The jcsp.lang
    section of the library would have become embarassingly top heavy with
    deprecated classes if they had been retained.  Apologies to those who
    may need to make a lot of edits.  I have a simple Unix cshell script that
    will make these edits to all .java files in, or below, a named directory.
    Please mail me (P.H.Welch@ukc.ac.uk) if you need it!

  o The bucket synchronisation primitive;

  o Generation of a jcsp.lang.ProcessInterruptedError if any process, blocked
    on a JCSP synchonisation primitive, is interrupted.  This is not allowed
    (and is always a panic-induced design error).  The error does not need to
    be caught (and, indeed, should *not* be caught) with a try-catch clutter
    surrounding the JCSP synchonisation.

  o Minor tweaks to the documentation (as ever).

Peter Welch.
(3rd. November, 1999)
    

Changes since JCSP 0.94 release
-------------------------------

  o Links to Sun's JDK1.2 documentation (from the JCSP documentation)
    are now in place;

  o Minor tightening up of the ChannelAccept interface (for CALL channels)
    to enable the compiler to trap erroneous accepts - no effect on correct
    programs;

  o Minor tweaks to the documentation.

Peter Welch.
(28th. October, 1999)


Changes since JCSP 0.5 release
------------------------------

  o A more flexible API for ALTing;

  o Numerous new facilities (and some deprecated old ones);

  o More and better (javadoc)umentation - including several mini-tutorials.
    JCSP documentation is now produced using the JDK 1.2 javadoc tool;

  o More demonstration applications and applets;

  o (occam3) CALL channels;

  o Barrier and CREW synchronisation primitives;

  o Various pieces of maintenance.

A source release will be made available shortly under either the GPL
or Artistic open source licences.  Please contact me (P.H.Welch@ukc.ac.uk).

I *hope* to freeze this into a JCSP 1.0 release *shortly* and update
the JCSP web pages suitably - at present, these offer only JCSP 0.5.

Peter Welch.
(28th. October, 1999)



