We are pleased to announce the release of libSBML-5.10.0 which is
available for download from
* New features
- New ASTNode infrastructure
The code underlying the ASTNode class has been refactored to
facilitate the extension of MathML by SBML L3 packages. The
API and behaviour has not changed except in places where
invalid MathML was being incorrectly parsed or created. It is
no longer possible to add a child to an ASTNode that represents
a number, for example.
Extensive testing has been done to ensure that the API and
correct behaviour of the ASTNode class remains unchanged and
unless you have derived your own classes from the ASTNode class
this change should not affect your implementation in any way.
** Please inform us if this turns out to be incorrect. We have
tried to anticipate and test use cases but we are aware that
it is possible that we have missed some.
In order to allow people to continue to use the original AST code
if they choose, the source code archives provide this code within
a 'math-legacy' directory and the libSBML configuration system
provides an option to build libSBML using this legacy code.
- General maintenance: we have done a number of sweeps of code to
identify and add such things as missing virtual functions. We
have also investigated memory leaks reported by users and have
done some extensive memory leak checking on the more intensive
functionality such as validation/comp flattening etc. However,
this remains an ongoing task.
- There is a new converter, the SBMLReactionConverter, which
will replace any Reactions within a Model with the equivalent
RateRules. An example of the use of this converter can be
found at examples/c++/convertReactions.cpp.
- There are new functions available on the Model class:
InitialAssignment* getInitialAssignmentBySymbol(const std::string&
Rule* getRuleByVariable(const std::string& variable);
AssignmentRule* getAssignmentRuleByVariable(const std::string&
RateRule* getRateRuleByVariable(const std::string& variable);
These functions return the designated object using the 'symbol' or
'variable' attribute. This is duplicate functionality as the
objects can be retrieved using getRule and getInitialAssignment.
However the other similar functions on the Model class retrieve
objects by the 'id' attribute. If future versions of SBML
introduce the 'id' attribute on Rules and InitialAssignments we
will need functions that act differently.
- 'comp' package-specific updates:
- The code that facilitates resolving files in relation to
ExternalModelDefinitions has been reviewed and made as robust
- The ability to customize the way SIds and SIdRefs are
renamed during the flattening process has been added. A
class of type PrefixTransformer can be created and assigned.
This allows the user to add additional changes to the renaming
process. An example that illustrates the use of this facility
to also rename the 'name' attribute of objects originating in
subModels has been included in the examples/c++/comp directory.
- Unit tests have been added for the C API, and this exposed some
missing functions. The missing functions have now been added.
* Bug fixes
- There were issues with propagating the package-enabling
functionality through the children of an element. These issues
have been resolved.
- The converters that apply structural changes to the SBML document
used a setDocument function that expected a const SBMLDocument
object. Since the converters change the document, and in fact
immediately re-cast the document object, this function was both
confusing and inaccurate. There is now a setDocument function
that does not expect a const SBMLDocument object.
- There were some inconsistencies in the behaviour of LocalParameter
objects from SBML Level 3 in relation to the 'constant'
attribute. These have been fixed.
- 'layout' package-specific bug fixes:
- There were some discrepancies between the naming of arguments
to some constructors and the actual values being set using
these arguments. These have been corrected without changing
the resulting behaviour.
- Sometimes when an SBML Level 2 document with 'layout' and
'render' annotations was upgraded to SBML Level 3, the 'render'
namespace went missed from the annotation in the Level 3
document. This has been fixed.
- The 'render' package "objectRole" attribute was not being
correctly handled by the 'layout' code when the 'render' package
was disabled. This has been corrected.
- 'qual' package-specific bug fixes:
- Certain validation errors were not being correctly reported,
with either missing information or bad line numbers. This
problem has been fixed. Thanks to Nicolas Rodriguez for
reporting the problem.
* Configuration/build system changes
- WARNING: There is a bug in the Microsoft Visual Studio 2013
compiler that can cause strange output when doing repetitive file
reading and writing. We became aware of this when running our
unit tests on the comp flattening routines.
included a fix in our test files (libsbml/src/sbml/packages
/comp/util/test/TestRunner.c) but users should be aware that this
is an issue that may arise with this particular version of the
- The CMake files have been updated to allow for the use when
libSBML is merely being referenced within a CMake build, rather
being specifically built.
- Both the GNU make and CMake configuration systems generate certain
header files that are specific to the libSBML build being
requested. Previously, libSBML source code included project
definition files for MSVC. These files were checked into SVN and
included within the released src archive distribution. Their
inclusion could potentially cause problems for people who wanted
to create different build configurations from the same source
code. Given that with CMake it is possible to generate MSVC
project files directly, we no longer include them in the source
archive distribution, and therefore, it is also not necessary to
include the header files generated by the configuration process.
Thus, these header files have been removed, and for CMake users
they will be generated within the build directory to facilitate
different builds using the same src tree.
- There were issues with classes exported across the Windows dll
interface. These have been fixed, and we have added additional
tests to catch these issues. Thanks to Andy Somogyi for reporting
- Python installers for various Linux distributions are now
available from the Open Build Service and via pypi. Links to the
relevant release can be found in the documentation on SourceForge
download pages for libSBML.
- The copyright statement for all example programs that we produced
ourselves has been changed to use a less restrictive license, so
that users can use the examples in their software without
limitation. The new license is the MIT license.
- The LICENSE.* files for libSBML now include a previously-missing
3rd party software acknowledgement for the Python argparse library
by Steven J. Bethard. (The argparse.py module is included with
- A number of extraneous files have been removed from the
documentation source directory (docs/src/); in addition, the
directory has undergone some minor restructuring.
* New features
- Support for the 'arrays' package according to the specification
dated September 11, 2013 (0.1 alpha) has been added to the
experimental release files. Note the extended MathML is accessible
via the ASTNode class; however, the current version version does
not yet include support for parsing to and from infix notation.
- 'multi' package-specific updates:
- The ability to extend ASTNodes and hence use extended MathML
has been added and thus it is now possible to use the attributes
on the <ci> elements of math as specified by the 'multi'
package. The example relating to this has been updated accordingly.
* Bug fixes
- 'render' package-specific bug fixes:
- On occasion when an L2 document with layout and render
annotations was being upgraded to L3 the render namespace
was missed from the annotation in the L3 document.
Please report any problems you encounter using libSBML either to the
mailing list libsbm...@caltech.edu
or using the issue tracker
for libSBML at