swarm-announce
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Swarm 1.0.0 Released


From: glen e. p. ropella
Subject: Swarm 1.0.0 Released
Date: Sun, 2 Feb 1997 23:59:59 -0700


Announcing the release of Swarm version 1.0.0!  It's available 
via the web pages (http://www.santafe.edu/projects/swarm) or
by ftp (ftp://ftp.santafe.edu/pub/swarm).

Enjoy!

glen e. p. ropella
     For the Hive at SFI

     ------------------------------------------------------------
                Release Notes for Swarm Version 1.0.0

This release is primarily a cleanup of the previous beta releases to
provide a stable version as the first production release of Swarm.
Additional demo applications and documentation have also been added.

The new release has a few areas of possible incompatibility with
previous releases.  Four paragraphs in the release notes below (marked
as IMPORTANT NOTE!) summarize the possible incompatibilities.  Only
one of the incompatible changes (a new random library) is likely to
require major changes to code, another (a new swarmobject header file)
may require changes to imported files, and the other two are unlikely
to be encountered.

Following is a summary of new features in the Swarm 1.0.0 release:

 1. Dropping a zone (using the standard drop message) now drops all the
    objects that have been created within the zone.  By creating all
    its objects in a single zone, an experiment now has an easy and
    reliable way to release all the storage it has allocated.  Multiple
    runs of experiments (setting parameters differently each time) have
    been demonstrated successfully in both batch or GUI mode.

 2. The random library has been overhauled and now follows the same
    interface style as the rest of the Swarm libraries.  New random bit
    generators and distributions are also available.

    IMPORTANT NOTE!  The new random library requires changes to any code
    that used the old library.  A copy of the old library remains available
    for anyone who wants to put off making these changes.  See the
    instructions on porting to the new random library (in the random
    library documentation) for more information.

 3. The swarmobject and random libraries both use a single header file to
    declare the public interface to the entire library (similar to the
    declarations for the defobj, collections, and activity libraries).  To
    use the public interface, you only need to include this single file,
    which contains just Objective C protocol definitions for public behavior
    rather than the @interface declarations of implementing classes.

    IMPORTANT NOTE!  The new version of <swarmobject.h> requires that you
    must explicitly import a class header file if you want to subclass
    from it.  You are also restricted from use of class-based typing, since
    details of classes inside a library remain open to change.  See the
    instructions on porting apps to the nwe swarmobject interface (in the
    swarmobject library documentation) for more information.

 4. A new version of the collections library has *not* been included in this
    release.  Major upgrade of the collections library is still imminent,
    but was excluded from this release due to the complexity of changes and
    the priority of more basic cleanup in the defobj and activity libraries.

    The new version of the collections library will include a new,
    general-purpose facility for subclassing from custom-generated classes,
    which will also be retrofitted to classes in defobj and activity.

 5. There is an entirely new framework for mapping internal storage
    allocations made by an object.  User code that creates objects need
    not be aware of the new framework, but it is used heavily by the
    swarm foundation libraries to manage their internal storage.  The new
    framework will support future versions of zones that reclaim unused
    storage and that keep storage locally contained in their own pages.

    IMPORTANT NOTE!  The dropFrom: message has been removed.  Even though
    it was still present in recent releases, its behavior was identical to
    drop.  Any existing usage should be replaced by a simple drop message
    without any zone argument.  SwarmObject subclasses are now restricted
    from accessing the zone that was once contained in an instance variable;
    the message getZone must be used instead.

 6. Standard methods for printing a short description of any object have
    been established for debug purposes.  A default describe method is
    provided for all objects, and more detailed methods that print useful
    information are provided for many of the fundamental classes.  For
    example, zones print a summary of the total number and size of objects
    and other allocations, and collections have the ability to print all
    their members.  See defobj and debugging documentation for details.

 7. Storage leaks have been eliminated from the most basic swarm libraries,
    including collections and activity.  The new allocation framework and
    debug print methods make it much easier to track down the existence of
    storage leaks (failure to reclaim unused storage) and to determine the
    code responsible.

 8. Swarms now inherit from Zone in addition to defining their own behavior.
    This means that you can allocate objects directly inside a swarm, using
    the swarm as the argument of a create: or createBegin: message, instead
    of having to create or refer to a separate zone variable.

    Swarms as zones means that a swarm can take total responsibility for
    the model of a world that makes up an experiment, including both
    objects that belong to the world and the schedule of actions to occur.
    A new message, getPopulation, returns a collection of all objects that
    have been created within a swarm or a zone but not yet dropped.

 9. Any object now supports an ability to register an external reference to
    the object, and to have this reference notified (via the calling of a
    function) whenever the referenced object is dropped.  Registration of
    references will allow automatic dropping of probes when the objects they
    refer to disappear; currently such probes still crash.

10. An externally-supplied character string can now be associated with any
    object.  This character string is referred to as the "DisplayName" of
    the object and may be used to identify the object in a user-meaningful
    way when displaying the object for probe or debug purposes.

11. The defobj and activity libraries have had much obsolete or
    unimplemented behavior removed from their published interfaces.

    The collections library has not been through this kind of cleanup yet.
    Its current capabilities remain limited to what is essential to the
    implementation of warms and schedules in the activity library.  The
    basic List and Array classes remain fairly complete and close to the
    advertised interface, but Map and Set don't even come close yet.

12. In the defobj library, methods inherited from the gcc Object
    superclass have been disabled if they don't work with the zone-based
    allocation required of all swarm objects.  These include the
    no-argument forms of alloc, free, and copy.  A compile-time option,
    -DINHERIT_OBJECT_WITH_ERRORS is available to test dependence on
    any method inherited from Object, since Swarm provides its own
    equivalents for almost all of these.  The exact extent of dependence
    on the built-in Object superclass will be reviewed in future releases.

13. The defobj library includes a new script, m2h, that can automatically
    maintain the method declarations in a .h file to precisely match the
    methods actually implemented in a corresponding .m file.

14. In the activity library, the Schedule type now supports the convenience
    messages create:setRepeatInterval: and create:setRelativeTime: for
    these common create options.  The same createAction messages defined
    for an action group (without the at: time value) are also defined for
    schedules, where they schedule the action at a default time of zero.
    These messages are a convenience for actions in a repeating schedule
    that all occur at a zero relative time.

15. The high-level structure of activity library interfaces has changed to
    incorporate additional action types in the future, but creatable objects
    and their messages all remain the same.  A new standard message,
    getActivity, will eventually replace the message getSwarmActivity on a
    Swarm; either message may be used for now.

16. The macro getCurrentActivity() is not currently supported due to a
    change in the level of activity that it would return.  All the macros
    that return activities at higher levels (e.g., getCurrentTime(),
    getCurrentSwarm(), and getTopLevelActivity()) remain available.
    Only these should be used to control a running activity (for example,
    to terminate a current activity).  All these macros now raise an error
    if used while an activity is not actually running.

    IMPORTANT NOTE!  If you used the old getCurrentActivity() in your code,
    it won't work now.  Use of this macro was not very widespread, since its
    main use is to access activity library internals.  One of the other
    macros should be sufficient for any application.

17. In the swarmobject library, a convenience object, ActivityControl,
    has been added to help understand and manipulate activities.  It
    supports just the execution control messages (run, stop, step,
    terminate, etc.) for an activity that has already been created.

18. ProbeMaps no longer reorder their contents alphabetically.  The order
    is now the same as in the defining class.

19. Two new classes, QSort and NSelect have been added to the simtools
    library.  These package the ability to sort the members of a collection
    and to select a random member from the collection.

20. The ability to read and write unsigned types has been added to the
    InFile and OutFile classes of the simtools library.



      ----------------------------------------------------------

                          Swarm Beta Release Notes

Version 961002:

   1. Added Gaussian. Draws a uniform random number with a normal
      distribution around a given mean, standard deviation, and 
      seed. Soon there will be even more stuff thanks to Sven.
   2. Added scrollbars to the probes.
   3. Changed controlPanel functionality.  
         One implication is that instead of
             [controlPanel waitForControlEvent] 
         users that want to stop the simulation (from the software, e.g.
         to wait for the user to fill in datafields) should use 
             [controlPanel setStateStopped]

   4. Added the method 
             -removeProbeDisplayFor: anObject
         to the ProbeDisplayManager class so that you may remove a probe
         display for an object without the probe id.
   5. Added the long-awaited -batchmode flag!
   6. New library <analysis.h> which contains the following new classes:
             EZBin.h EZDistribution.h EZGraph.h Entropy.h
         It also serve as a new home for the following class:
             Averager.h 
   7. Upgraded Entropy and Average so that they can take any collection
         (not necessarily a list).
   8. Fixed getAverage on Averager when the collection is empty.
   9. The following classes have moved from <swarmobject.h> to <simtools.h>:
         ActiveGraph.h ActiveOutFile.h
  10. The following _new_ classes have landed in <simtools.h>:
         InFile.h OutFile.h ObjectLoader.h ObjectSaver.h UName.h
  11. Added new methods to Discrete2d:
         -fastFillWithValue: (int) aValue
         -fastFillWithObject: anObject
         -fillWithValue: (int) aValue
         -fillWithObject: anObject
  12. Added new class (Int2dFiler.h) for filing of discrete2d spaces.
  13. Added the CompleteVarMap class to the probing capabilities.
  14. Added a message to the ProbeLibrary:
         -getCompleteVarMap: (Class) aClass
  15. Added methods to the VarProbe class:
         -setNonInteractive 
         -(int) isInteractive 
  16. Added methods to the Histo class (tkobjc):
         -drawHistoWithDouble: (double *) points 
                   atLocation: (double *) locations
         -drawHistoWithInt: (int *) points 
                atLocation: (double *) locations 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]