[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Swarm 1.0.0 Released,
glen e. p. ropella <=