LIBRARY HISTORY
 

The B++ Library is perpetually under development, so new versions occur regularly. Here is an historical record of the important changes in the library. Some dates are not accurate (we have been maintaining a precise record since April 2001) but they show the evolution of the library from the beginning. The most important steps are highlighted in green, or in orange if they have major impact on the way of (re)using the library and mean changes for the user.

01/15/1999 Start of the project.
06/01/1999 First version of the library under Windows (with Cygwin and Borland C++ 5.02) and AIX. Only the standard layer and the graph structure.
09/01/1999 Basic algorithms for the minimum cost tension problem with linear costs.
11/01/1999 - Tools to manage files (Cut File, Dos Unix, Remove Files and Show Dir).
- Full portability under AIX, Linux and Windows (with Cygwin, Borland C++ 5.02 and C++ Builder 4).
12/01/1999 - First release of the library on the Web.
- Tools for the semi automatic generation of the documentation (Make Doc) and the makefile of the library (Build Makefile).
01/15/2000 An algorithm for the minimum cost tension problem with convex costs.
03/01/2000 Basic algorithms to solve classical problems: connectivity, minimum spanning tree, shortest path, maximum flow...
05/01/2000 - A tool to generate random graphs and problems (Build Graph).
- Tools to solve these problems (Solve Graph and Solve Tension).
08/01/2000 A tool to build the layout of a graph in the EPS format (Graph Layout).
09/01/2000 A tool to analyze and extract series of tests on algorithms that solve graph problems (Analyze Result).
11/01/2000 - Imperceptible changes in many modules that increase the speed of some algorithms.
- A new section in the documentation that explains how to use the library.
02/01/2001 - A new algorithm for the minimum cost tension problem with linear costs in serial-parallel graphs.
- Modification of the Graph Layout tool: an algorithm to build the layout of a binary tree.
03/01/2001 Basic algorithms to generate and solve the minimum cost flow problem.
04/04/2001 - A cost-scaling algorithm for the minimum cost flow problem.
- Another basic algorithm for shortest path problems.
04/27/2001 A new algorithm for the minimum cost tension problem with linear costs based on the cost-scaling algorithm for the minimum cost flow problem.
05/15/2001 - A tool to encrypt files (Encrypt).
- A tool to rename files (Renum Files).
06/02/2001 A new initialization and termination mechanism for the modules of the library. It makes the DLL version of the library fully operational. Warning: there are major changes in the way of compiling and using the library.
06/25/2001 - End of the testing with Borland C++ 5.02 and C++ Builder 4. They are replaced by Borland C++ 5.5 freely available here.
- A new algorithm to find a compatible tension in a graph that must significantly increase the speed of several algorithms.
08/29/2001 - A new display mechanism: instead of non implemented functions, there is an abstract class. Warning: there are changes in the way of initializing the library.
- A module to load a dynamic library at run time.
- A module to use the Java Native Interface (JNI). For the moment it only provides the load of a Java Virtual Machine.
11/24/2001 - Encapsulation of the library in a namespace and a folder, add of a prefix to the library names. This should avoid the clash of names. Warning: there are minor changes in the way of using the library.
- A module to manipulate threads.
- Modification of the makefile and the documentation generation to deal with Java modules in the library.
- Jirk++ mechanism to manipulate Java classes directly in C++. Documentation available .
01/04/2002 - Correction in the random generation of serial-parallel graphs with disruption.
- A new algorithm to decompose a graph into serial-parallel components.
01/26/2002 A new linear solver wrapper to use the GNU Linear Programming Kit.
03/11/2002 - Improvement of the accuracy of the error and debugging reports.
- A new algorithm for the minimum cost tension problem.
- An algorithm to find a topological ordering of the nodes of a graph.
06/09/2002 - Mutex mechanism in the thread module.
- First release of the library with thread-safety.
11/10/2002 - Improvement of the serial-parallel decomposition algorithms for graphs.
- Correction in the aggregation/reconstruction algorithm for the minimum cost tension problem.
- Move of the B++ Library official site to Nawouak.net.
05/30/2003 - Full compatibility with GCC 3 compilers.
- Improvement in the search of independent cycles, so they can be shorter.
- Data structure and random generation for the minimum cost discrete tension problem.
- CGI interface to use Build Graph online, available .
08/15/2003 - Modification of the GNU Linear Programming Kit wrapper to use the last 4.0 version.
- Basic heuristics to solve the minimum binary cost tension problem.
- New facilities in the decomposition of serial-parallel graphs.
- Improvement of the reconstruction method for the minimum cost tension problem.
11/05/2003 Full compatibility with Microsoft Visual C++ 7 compiler. Thanks to Toni Rönkkö for porting the POSIX "dirent" interface to this compiler.
03/02/2004 - Minor changes in the Environment module: any object with an output stream operator can be displayed now.
- An exact algorithm to solve the minimum binary cost tension problem on serial-parallel graphs.
05/08/2004 - Full compatibility with GCC 3.2 compiler.
- Improvement of the cutting algorithm to solve the minimum binary cost tension problem (aggregation used to solve the subproblem on a cycle).
- A wrapper for the CPLEX Callable Library (version 8.0).
11/27/2004 - A module for basic statistics.
- Pool facilities to speed up the allocation and deallocation of bunches of objects.
- New keywords for code generation (especially to design patterns for methods or functions with variable arguments).
- Mechanism and new keywords to provide identification for classes and methods. Introduction of the notion of method slot.
- Demangling for symbol and type strings provided by the RTTI mechanism (for GCC compilers only). Thanks to Carlo Wood for the source code.
- A framework called B++ Simulator for discrete-event visual simulation.
12/14/2004 - A module to make extendable data structures in Java.
- An extendable graph structure for Java.
01/17/2005 - Rewriting of the generic make_pair function of the STL (for efficiency reasons). A specific version dedicated to the STL map structure is proposed.
- A Java wrapper to use Solve Tension in the HyperProp software.
02/16/2005 - Documentation on the B++ Simulator framework, available .
- A standalone package for Solve Tension, its name is B++ Tension Solver.
10/02/2005 - Full compatibility with GCC 3.4 compiler.
- Best portability of the method slot mechanism.
12/29/2005 - Full compatibility with Borland C++ 5.6.4 compiler.
- Changes in the Jirk++ mechanism to support Java 1.5.
02/23/2006 - The library is now fully deterministic: the execution only depends on the seed of the random generator (which is portable).
- Performance improvement of the graph and linear system structures.
- Modification of the GNU Linear Programming Kit wrapper to use the last 4.9 version.
09/08/2007 - With late Cygwin versions, JNI and Cygwin are incompatible: impossible to load into Java a DLL that is linked against cygwin1.dll. Warning: the MinGW compiler must be used instead of the Cygwin compiler until this issue is corrected. The binary code of the B++ Tools, provided , is now built with the MinGW compiler. It is advised to update if you use them through JNI.
- A contribution module to replace low-level string functions such as sprintf and sscanf.
- A module to manage the B++ Library environment in Java. Warning: there are minor changes in the way of loading the library into Java. Check the documentation on for details (section "Native Methods").
- Modification of the GNU Linear Programming Kit wrapper to use the last 4.18 version.
08/12/2009 - Full compatibility with GCC 4.1.2 compiler.
- Full compatibility with Borland/CodeGear 6.10 compiler.
- Full compatibility with Microsoft Visual C++ 9 compiler.
- A module to serialize objects.
- A multijob version of the makefile.
- Modification of the CPLEX Callable Library wrapper to use the 11.0 version.
07/12/2016 - Full compatibility with GCC 4.8.3 compiler.
- Full compatibility with Borland/Embarcadero 7.20 compiler.
- Full compatibility with Microsoft Visual C++ 14 compiler.
- Minor changes to support Java 1.8.
- Modification of the GNU Linear Programming Kit wrapper to use the 4.54 version.