1/7/12 2.0.0 - MML++, MPL, MDL, MMage, improvements to MML. Various
fixes and improvements.
-Introduces the MML++ language and compiler, MPL (Meta
Performance/Parallelism Language), MDL (Meta Domain Language) and
knowledge base.
-Refinements to MML including a simpler syntax. To allow greater
flexibility, MML is now a strictly interpreted language.
-Introduces MMage (Math and Genetic-algorithms Evolver).
-Several fixes, performance improvements, and design refinements.
-Adds new examples which demonstrate the above features.
---------------------------------------------------------
9/23/10 1.5.0 - Implementation and performance improvements, MML
locality, various fixes and additions.
-Implementation and performance improvements, fixes for memory leaks
and various bugs.
-MML locality allows such things as collision detection or other
locality-based interactions to be easily accomplished in MML in a
high-performance manner. An entity opts to have one of it
attributes, such as position tracked with radius 0.12 by the
specified tracker entity, root in this case:
addLocality("position", 0.12, root);
When another entity O that has opted to track its attribute A on
root enters within a radius of R of the first entity E, E is sent
an event evt:
evt.type = "locality"
evt.entity = <entity O>
evt.attribute = <attribute A>
evt.radius = <radius R>
The locality attribute may be a scalar or n-dimensional numerical
sequence value.
The two parameter version of addLocality, equivalent to the
above, is:
addLocality("position", 0.12);
and defaults to tracking on root.
examples/locality has been added as a simple example to demonstrate
how MML locality is used.
-A more efficient underlying implementation for threading,
synchronization, and networking constructs.
-Fixed a bug with precision and string output of MReal.
-In MML, the root entity class name must now be "Root", before
it was "root". The examples have been revised to use upper-case
class names.
-Added MMLParser::isReservedName().
-Added mmlcode() convenience function in MMLParser.h.
-Added the following keys which may be set upon MProgram initialization:
mMapDuplicateKeys - Set to false to have an MError thrown when an mvar
is created which contains duplicate keys. Default value is true.
mPrecise - Set to true to have floating point values outputted
with maximum precision. Default value is false.
---------------------------------------------------------
3/24/10 1.4.0 - Licensing changes.
-AndroMeta is now available free for non-commercial and academic
use. See the LICENSE file for details.
-Various fixes and additions.
---------------------------------------------------------
1/25/10 1.3.0 - Improved support for discrete-event systems simulation.
-To better support discrete-event systems simulation, MMLEntity and
MMLRoot have been revised to allow more control over time
advancement and the run cycle. By default, time is initialized to 0
and a run event is scheduled at regular intervals given by
MMLRoot::setInterval(), defaulting to 1. Run events are received by
every entity at each run cycle and are handled transparently,
causing the entity's run() method to be called. Run cycling can be
disabled by calling MMLRoot::stopRunCycle() in order to enable pure
discrete-event systems handling. In this mode, the usual event
handling mechanism is triggered to respond to events but
MMLEntity::run() is never called. examples/qsys has been revised as
a basic example of using MML in such a way.
-Various fixes and improvements.
---------------------------------------------------------
12/29/09 1.2.1 - Improvements to MML grid, fixes.
-MMLGrid now supports initialization from a data file. See
examples/grid3.
-MMLGridScene now supports setting a background and foreground color
and shapes/stencils for each cell.
-MMLGridScene now generates events for mouse movement, mouse down,
and mouse up for actions within cells. examples/grid1 has been
updated to provide an example of this.
-MMLGridScene now displays cell coordinates as a cursor tool-tip
when the mouse hovers above a cell.
-Fixed a problem with the MMLGrid not wrapping properly on the far
boundary in "BoundaryWrap" mode.
-The MMLCluster class and libmetanv have been removed.
-Fixed a problem with MNum::operator*= when applied to integers and
reals.
-Fixed problems with MMLGraphScene not displaying grid properly on some
graphics cards and a shading issue with MMLRobotScene.
-Added MLib:inf() and MLib::negInf().
-Fixed a problem with scene delay not working properly.
-Fixed a problem in MCPPGenerator where some symbols which are
referenced but not previously defined were not reported as errors.
---------------------------------------------------------
12/17/09 1.2.0 - MML grid and XML parser.
-Added MMLGrid and MMLGridScene. The MMLGrid allows for the
construction of a grid in an arbitrary number of dimensions and for
light-weight agents positioned on it. A grid defines a locality
which determines how agents interact with cells and other
agents. Boundary rules may be specified which effect locality and
control what happens when agents attempt to cross over a boundary,
and in this way, the grid may be configured such that it is
toroidal, either partially or completely. Agents may select other
cells or agents in their locality which meet an
application-specific criteria defined by selectCell() or
selectAgent(), then, this selection may have an operation applied
to it via applyCells() or applyAgents(). The grid is designed for
high-performance, allowing it to scale to a large number of cells
and agents. MMLGridScene is designed to be used in conjunction with
MMLGrid, providing an OpenGL-based scene for rendering and
projecting MMLGrid onto a 2d grid. See MMLGrid.h and MMLGridScene.h
for more details.
-Added the MXMLParser class which provides a basic parser for
reading XML code into mvar format. The input XML code is parsed and
emitted as an mnode/mvar using its map and vector to provide a
nested representation. All data read is stored as strings -- it is
up to the user to perform semantic interpretation and conversion to
the appropriate types.
-In MML, for, while, foreach loops as well as if and else clauses
now require braces. For example, the following syntax was
previously allowed:
if(x < 2)
++x;
Which now must be written as:
if(x < 2){
++x;
}
This change was motivated for technical reasons, however we believe
that it also makes MML clearer and more consistent.
-Fixed a problem in MNum related to division with MReal's.
-MVar::toDouble() and MVar::toLong() now throw an MTypeError on
failed conversions.
-Added an MProgram argument "mVerify" which can be enabled to
perform additional run-time checks on various call parameters
throughout the framework. This verification is disabled by default
as it could impact performance significantly. Turning this flag on
can be useful in some situations for debugging purposes such as
upon getting an exception, seg fault, etc.
-Various improvements to mvar and other fixes.
---------------------------------------------------------
10/28/09 1.1.1 - 32-bit Linux, fixes.
-Added 32-bit Linux build for ongoing releases.
-Fixed a problem related to the install script.
---------------------------------------------------------
10/14/09 1.1.0 - Improved high precision numerics
-Thanks to the GMP (GNU Multiple Precision Arithmetic Library) and
MPFR (Multiple-precision Floating point) libraries, AndroMeta's
high precision numerical capabilities have been greatly
improved. The existing MReal operators have been re-implemented to
use GMP/MPFR and now all MMath methods support arbitrary precision
operations. The MProgram argument "mPrecision" may be used to set
the default precision which is now specified in bits which defaults
to 256. Added examples/high-precision. Various math-related methods
have been added to MObject.
---------------------------------------------------------
9/21/09 1.0.1 - Minor fixes.
-ImmediateExit is now the default exit mode in MProgram::exit().
9/17/09 1.0.0 - First public release.




