==============================
 Release notes for Vaucanson_
==============================

This document describes major updates to the Vaucanson_ project.

.. _Vaucanson: http://vaucanson.lrde.epita.fr

:Contact: vaucanson@lrde.epita.fr

Vaucanson 1.3.2, September 22th, 2009
=====================================

This release contains minor adjustments to the build infrastructure,
and a couple of bug fixes for TAF-Kit.

- The build infrastructure has been updated to newer Autotools
  (Autoconf 1.64, Automake 1.11, Libtool 2.2.6).  This simplified our
  test-suite, and speeded-up ``configure``.

- We removed the ``--with[out]-xerces`` and ``--with[out]-boost``
  options from ``configure``.  These libraries are always needed, and
  if you have them installed in a non-standard location, you should
  specify ``CPPFLAGS`` and ``LDFLAGS`` as explained in the ``README``
  file.

- Makefiles are compatibles with BSD Make.

- The demos of ``cbs/`` are no longer built by default because some of
  them require profiling libraries which are not always installed.

- Two bugs have been corrected in TAF-Kit:

  + the default ``VCSN_DATA_PATH`` is now correctly derived from
    the ``--prefix`` option passed to ``configure``.
  + looking up automata from the automata library will now work
    even if TAF-Kit is called using an absolute path.


Vaucanson 1.3.1, July 8th, 2009
===============================

- VaucanSWIG has been deleted.

- gnulib has been updated.

- The Vaucanson library

  + Two new contexts have been added ``int-int-z`` and
    ``char-char-z``.
  + Method ``pair_to_fmp()`` is available in FMP contexts.
  + ``minimization_hopcroft()`` has been optimized.
  + listg has been restaured as the default graph implementation for
    being faster than bmig.

- TAF-Kit

  + New command: ``pair-to-fmp``.

- Benchmarks

  + CBS (C++ Benchmarking Suite) has been added into Vaucanson to
    measure its performances.
  + Algorithms have been equiped with CBS.
  + Benchmarks can be launched with ``make bench`` generating
    callgraphs in dot format and text files.

Vaucanson 1.3, May 26th, 2009
=============================

- Support recent versions of Boost Multi-Index (1.36 to 1.38).
- Support G++ 4.4.0.

Vaucanson 1.2.96, May 4th, 2009
===============================

- Out-of-date documentation has been trashed away.  What remains is an
  overhauled documentation for TAF-Kit, but still partial and under
  ongoing writing.  It can be read in
  ``doc/manual/taf-kit-manual.pdf``.

- Vaucanson library

  + The ``has_succ_comp()`` function has been renamed to ``is_useless()``,
    and its result reversed.
  + Rational expression can be exported into XML.
  + ``standard_of()`` and ``thompson_of`` have been improved to build
    the automaton in place.

- TAF-Kit

  + The ``has-succ-comp`` command has been replaced by the ``is-useless``
    command, following the change in the library.
  + The ``co-accessible`` command is now spelled ``coaccessible``.
  + Commands that output rational expression will output XML files
    if given the ``-o xml`` option, and will read XML files if given
    the ``-i xml`` option.
  + Two new instances: ``vcsn-char-zmin`` and ``vcsn-char-zmax``.
  + A couple of unusual commands have been removed from the output
    of ``--list-commands`` and are now only shown by the new
    ``--list-all-commands`` option.

Vaucanson 1.2.95, January 22th, 2009
====================================

- Enable choosing default implementation by using the option
  ``--with-default-graph-impl`` at configure time.

- The Vaucanson library

  + The following iterator interfaces have been removed: ``deltac``,
    ``rdeltac``, ``delta_state_iterator``, ``rdelta_state_iterator``.
  + New interface ``parse_letter`` to check whether a character string
    represents a single letter of an alphabet or not.
  + Add an implementation of the reduce algorithm for automata with weights
    in a division ring.

- Automaton library

  + New program quotkbaseb.

- XML

  + Support of Xerces 3.0.

- TAF-Kit

  + ``$VCSN_DATA_PATH`` now supports colons.
  + New instance: ``vcsn-char-r`` for automata on a free monoid of char
    and with weights in R (implemented as floats).
  + New command: ``realtime-exp``.

- Demo

  + New Demo ``ORR_iterate``.

- Many bug fixes.

Vaucanson 1.2.94, November 17th, 2008
=====================================

- The Vaucanson library

  + Add pair_to_fmp algorithm.
  + Redesign the representation system off algebra.

- XML

  + Add support for the new representation system.

- TAF-Kit

  + Add command ``is-ltl``.
  + Options ``-o`` and ``-i`` no longer request uppercase arguments.
  + Command ``define-automaton`` has been merged into ``edit-automaton``.
  + Command ``dot-dump`` has been removed: any command can produce DOT
    output using the ``-o dot`` option.  The effect of ``dot-dump`` can
    be achieved using ``identity -o dot``.
  + Command ``dump`` has been removed.  Instead, any command will
    search the file corresponding to their automata arguments into the
    current directory first, then into the directory specified by
    ``$VCSN_DATA_PATH``.  The effect of ``dump a1.xml`` can therefore
    be achieved using ``identity a1.xml`` provided no ``a1.xml`` exist
    in the current directory.

Vaucanson 1.2.93, October 10th, 2008
====================================

- Mostly bug fixes.

- The Vaucanson library

  + Support for ascii alphabet in XML.

- Demos

  + Remove function_library.
  + Add hulden demo.

- TAF-Kit

  + Remove the ``vcsn-int-char-b`` instance.
  + Add ltl-to-pair and identity-exp.
  + Revive transpose on transducers.

Vaucanson 1.2.92, September 10th, 2008
======================================

- TAF-Kit

  + New instances that handles letters that are pairs (of char or int):
    ``vcsn-char-char-b``, ``vcsn-int-int-b``, ``vcsn-char-int-b``, and
    ``vcsn-int-char-b``


Vaucanson 1.2.91, August 23rd, 2008
===================================

- TAF-Kit

  + Rename ``vcsn-tdc`` to ``vcsn-char-fmp-b``.
  + New instances: ``vcsn-char-fmp-z``, ``vcsn-int-fmp-b``,
    and ``vcsn-int-fmp-z``.

Vaucanson 1.2.90, August 1st, 2008
==================================

- The Vaucanson library

  + New delta functions to iterate over states and transitions.
  + New rational expression parser, with customizable token representations.
  + New XML input/output system based on the new FSMXML version.
  + Overhaul letters to ease adding automaton contexts.
  + New automaton contexts based on int letters.

- Algorithms

  + Remove ``backward_realtime()`` and ``forward_realtime()``
    functions factorized in ``realtime()`` function.
  + Fix ``rw_composition()``.

- Demos

  + Improve One Rule Rewriting.

- TAF-Kit

  + New option ``--parser`` to change token representation on rational
    expression.
  + Rename ``vcsn-b``/``-z``/``-tdc`` to ``vcsn-char-b``/``-z``/``-fmp-b``.
  + New instances: ``vcsn-int-b`` and ``vcsn-int-z``.

Vaucanson 1.2, March 19th, 2008
===============================

- The Vaucanson library

  + New graph data structure based on boost multi index: bmig.
  + It is now possible to choose between bmig and the old implementation
    which is now called listg.

- Algorithms

  + Rename ``fmp_to_realtime()`` as ``fmt_to_rw()``.
  + Rename ``realtime_to_fmp()`` as ``rw_to_fmp()``.
  + Rename ``realtime_composition()`` as ``rw_composition()``.

- TAF-Kit

  + Rename ``sum`` as ``union``.
  + ``is_empty`` is now ``is_void``.
  + New ``is_empty``.

- Dependencies

  + GNU C++ Compiler (GCC) version 4 or higher.
  + Boost C++ version 1.34 or higher.

Vaucanson 1.1.1, December 14th, 2007
====================================

- Mostly bug fixes.

- Algorithms

  + ``are_equivalent``: compare the languages of two boolean automata

Vaucanson 1.1, July 29th, 2007
==============================

- XML

  + New XML Parser (SAX implementation)
    With New XSD.
  + Parser doesn't omit transitions with bad label anymore instead of failing

- Algorithms

  + ``eps_removal_sp(a);``
    Various optimizations.

- TAF-Kit

  + Timer has been improved.
  + Intern pipe can now be used:
    ``./vcsn-b identity ab.xml \| product b.xml -``
    is equivalent to
    ``./vcsn-b identity ab.xml | ./vcsn-b product b.xml -``

Vaucanson 1.0a, June 13th, 2007
===============================

- Documentation

  + The Doxygen documentation is now installed expanded, rather than
    compressed.

- Algorithms

  + ``eps_removal_sp(a);``
    New generic epsilon_removal algorithm based on shortest_path.

  + ``minimize(a);``
    Various optimizations.

  + ``transpose(a);``
    Transition labels are now transposed too.

  + ``image(a, b)`` and ``domain(a, b);``
    they replace ``output_projection`` and ``input_projection``. These
    algorithms work for both FMP transducers and RW transducers.

- XML

  + Bug fixes.
  + I/O optimizations.

- Utilities

  + Lib VCSN
    Provides C++ libraries for the main automaton types.
  + SWIG
    Fix compilation issues.

- TAF-Kit

  + The option ``--bench`` relies on iterations of ``--report-time`` to
    benchmark the algorithms.

Vaucanson 1.0, July 28th, 2006
==============================

- XML.

  + Many bug fixes, for instance, the alphabet is no longer filled
    with the default range if it is said to be empty.

  + Nodes like ``<label_type>`` are renamed to ``<labelType>``, so as to
    conform to XSD coding style.

  + ``VCSN_XSD_PATH`` is no longer used.
     The environment variable ``VCSN_DATA_PATH`` should point to the
     Vaucanson data directory, containing, among others, the
     ``vaucanson.xsd`` file.

  + ``vaucanson.xsd`` is no longer looked for in the current directory.

  + transcode (s);
    Overloaded function. Convert a std::string (respectively a char) into XML.

- TAF-kit.

  + The new binaries ``vcsn-z`` and ``vcsn-tdc`` are toolkit to work with
    Z automata and FMP transducers.

  + Many commands (algorithms) have been added in ``vcsn-b``.

- Algorithms.

  + ``is_ambiguous(a);``
    Test if `a` is ambiguous.

  + ``trim_here(a);``
    Trim the automaton `a`.

  + ``sub_normalize_here(a);``
    Sub-normalized the automaton `a`.

  + ``invert(t);``
    Return the inverse of the RW transducer `t`, i.e. the
    transducer that performs the invert rational relation.

  + ``u_compose(a):``
    Composition for boolean transducers that keeps the same number of paths.

- Renaming and minor additions.

  + ``Support::operator*`` simplifies the writing for one-letter
    supports.  Instead of ``*e.supp().begin()``, write ``*e.supp()``.

  + The ``closure`` functions were renamed as ``eps_removal``, since
    that's what they actually do.

  + The macros ``for_each`` are now called ``for_all``.

  + ``normalized_composition`` functions are now called ``compose``.

  + The automaton library is installed with ``make install``.

- Layout.

  The layout of the sources was changed to match the layout of
  Vaucanson when installed.

  + ``vaucanson.xsd`` is now is the data/ directory.

  + The automaton library is now split by type. See ``data/b`` and
    ``data/z``. The generators used there are nice demo programs.

  + VaucanSWIG is at the top level.

  + ``demos/utilities/*`` has been moved into ``demos/``.

- This release was made and coordinated by:

  + Akim Demaille
  + Florent Terrones
  + Guillaume Lazzara
  + Guillaume Leroi
  + Jacques Sakarovitch
  + Matthieu Varin
  + Michaël Cadilhac
  + Robert Bigaignon
  + Sylvain Lombardy


Vaucanson 0.8 May 15, 2006
==========================

- TAF-Kit.

  The Typed Automata Function Kit of Vaucanson (TAF-Kit). This is
  a packaging through binary programs of the main algorithms of
  Vaucanson. In this release, only the Boolean semiring is supported.
  See the related documentation for help.

- Documentation.

  A first user's manual for TAF-Kit has been introduced.

  The Doxygen_ documentation has been reworked.

.. _Doxygen: http://www.stack.nl/~dimitri/doxygen/


- XML system.

  The XSD file has been extended to express transitions as XML trees.

  The XML proposal has been completly reworked.

  The XSD file path can now be set by either the environment variable
  or the CPP macro VCSN_XSD_PATH. It is also automatically checked in
  the ``share`` directory where this file would be installed on ``make
  install``.

- Renaming.

  The following renaming have been made:

  + ``edge`` is now ``transition``,
  + ``new_*`` functions are now ``make_*``,
  + ``origin_of`` and ``src_of`` are now ``aim_of`` and ``dst_of``,
  + ``for_each`` loops have been changed to ``for_all``, for consistency
     with STL ``for_each`` that uses functor.

- Delta functions.

  Delta functions,  used to extract  the successor states or  edges of
  a  state, can  now  take functor  with  the ``deltaf``  methods of  an
  automaton. If the ``operator()`` of  the functor returns Booleans and an
  application  of  the functor  returns  ``false``,  the  loop over  all
  successors is stopped.

- Benchmarks.

  Some Vaucanson benchmarks were added to the distribution.  Feel free
  to make your bench results and please send us them!

- Bug fixes.

  Many bugs have been fixed in the core library and some algorithms
  have been cleaned.

- This release was made and coordinated by

  + Akim Demaille
  + Florent Terrones
  + Guillaume Lazzara
  + Guillaume Leroi
  + Jacques Sakarovitch
  + Matthieu Varin
  + Michael Cadilhac
  + Robert Bigaignon
  + Sylvain Lombardy

Vaucanson 0.7.2 November 9, 2005
================================

- Vaucanson works with `GNU C++`_ 3.3, 3.4, 4.0 and ICC_ 9.0.

.. _GNU C++: http://gcc.gnu.org
.. _ICC: http://www.intel.com/software/products/compilers/

- Compliance with GCC 4.0 and ICC 9.0.

  Vaucanson is compliant with the latest version of GCC and ICC, and
  was successfully tested on Linux and MacOs.


- Bug fixes.

  Some bugs were fixed in the core library, and in the XML system.


- XML system.

  The system now handles geometric attributes in Vaucanson automata. See
  product algorithm for a sample use.


Vaucanson 0.7.1 June 25, 2005
=============================

- More algorithms on transducers seen as automata over a direct
  product of free monoid are available: evaluation, composition covering,
  composition co-covering, intersection.

- A Broken Derived Term automaton algorithm has been added.

- Two heuristics for state elimination method algorithm have been added.

- src/demos directory has been rearranged:

  + algorithms            : Contains demos of small algorithms.

  + automaton_library      : Contains binaries that generate XML samples of  various automata.

  + function_library      : Contains binaries that call common algorithms available in the library for most of the available predefined types (B, Z, R, (Z, min, +), (Z, max, +), transducers, realtime transducers).

  + transducers
    -  one_rule_rewriting : Fibonnaci and One Rule Rewriting demonstration.

  + utilities
    - vgrep              : grep demonstration.

- Some bugs were fixed to ensure library stability. Mainly, algorithms Moore
  minimization, sub-normalized composition, realtime and projection were fixed.

- Context headers now include by default all standard algorithms.

- All deprecated documentation has been removed.

- XML proposal has been changed, and some documentation added. As an
  example, Boolean automaton that recognize "a+b" is described as
  follows::

    <automaton>
      <content>
        <states>
          <state name="s0"/>
        </states>
        <transitions>
          <transition src="s0" dst="s0" label="a"/>
          <transition src="s0" dst="s0" label="b"/>
          <initial state="s0"/>
          <final state="s0"/>
    </automaton>

  Note that now <initial> and <final> are children of <transitions>, and the
  <initials> and <finals> tag are removed. From now on, all files compliant
  with the previous XML proposal are not compliant with the new proposal.

.. _Vaucanson-XML: http://vaucanson.lrde.epita.fr/VaucansonXML

- This version of Vaucanson is released under the GNU General Public Licence.

Vaucanson 0.7 May 17, 2005
==========================

- Vaucanson works with `GNU C++`_ 3.2, 3.3, 3.4 and ICC_ 8.1.

.. _GNU C++: http://gcc.gnu.org
.. _ICC: http://www.intel.com/software/products/compilers/


- Transducers seen as automata over a free monoid product are now available.

  Until now, transducers in Vaucanson could only be seen as automata
  with multiplicity in a series. It is now possible to manipulate
  transducers seen as automata over a free monoid product.

  - Two context headers have been written: ``fmp_transducer`` and
    ``z_fmp_ransducer`` (fmp stands for Free Monoid Product), which
    can be used in the same way as previous context headers.

    On top of the classical types defined in all context headers, they
    define several types needed when manipulating this type of
    transducers:

    ===================== ======================= =========================
    ALGEBRAIC SETS        ELEMENTS OF SET         LOW LEVEL IMPLEMENTATIONS
    ===================== ======================= =========================
    first_alphabet_t
    second_alphabet_t
    first_monoid_t	  first_monoid_elt_t	  first_monoid_elt_value_t
    second_monoid_t	  second_monoid_elt_t	  second_monoid_elt_value_t
    ===================== ======================= =========================


    In addition to that, the contexts provide the user with the
    following functions::

      // Create an empty automaton.
      automaton_t new_automaton(first_alphabet_t, second_alphabet_t);

      // Create a couple of words that can directly be given to
      // add_series_edge() for instance.
      series_set_elt_t make_couple(first_alphabet_t, second_alphabet_t,
				   std::string, std::string);

  - Some new algorithms have also been added:

    - ``fmp_to_realtime`` and ``realtime_to_fmp``: Enables the
      user to switch from one view of transducers to another.

    - ``normalized_composition``: Enables the composition of
      normalized and sub-normalized transducers seen as automata over
      a free monoid product. (edges with labels of types (a,b), (1,a)
      and (a,1)).


- New XML I/O system.

  The former XML system based on a DTD grammar was replaced by a
  system based on XSD schema specification. The new system is
  backward-compatible with old XML documents, just change namespace
  reference to ``http://vaucanson.lrde.epita.fr`` and remove DTD node.

  This new specification comes with full transducer support, and a set of
  default types for both automata and transducer. To declare a transducer on
  free monoid product, do as the following::

    <transducer xmlns=``http://vaucanson.lrde.epita.fr``>
      <content>
        <states>
          <state name=``s0``/>
        </states>
        <transitions>
          <transition src=``s0`` dst=``s0`` in=``a`` out=``b``/>
        </transitions>
        <initials/>
        <finals/>
    </transducer>


   To load an automaton (for example on Z semiring) from a stream
   (containing the XML document), do as the following::

   #include <vaucanson/xml/XML.hh>
   #include <vaucanson/z_automaton.hh>
   using namespace vcsn;
   using namespace vcsn::z_automaton;
   using namespace vcsn::xml;
   automaton_t a = new_automaton(alphabet_t());
   std::cin >> automaton_loader(a, io::string_out(), xml::XML());


   To dump automaton as an XML document, do::

   #include <vaucanson/tools/xml_dump.hh>
   ...
   tools::xml_dump(std::cout, a, "A name");
   ...

   Or use the automaton_saver() function.


- Big cleaning in the graph implementation.

  A lot of superfluous operations were done in the former implementation.
  Cleaning the code provided huge performance improvement. The actual
  implementation has the same interface than the former one.


- Update context headers.

  More granularity has been added to context headers. To create one,
  you need to include desired files from the include/vaucanson/contexts
  directory in a specific order. Please refer to the sources for more
  details.


- A long-standing bug in the core of the library was corrected.

  Until now, some compiler optimisation that was believed to happen
  did not happen. Because of this, all Element instances had an
  overhead of at least a few bytes in their memory footprint, while in
  most cases it was not necessary. The code was rewritten to allow for
  this expected optimisation.


- This version of Vaucanson is released under the GNU Lesser General Public
  Licence.


Vaucanson 0.6.1 October 26, 2004
================================

- Vaucanson works with `GNU C++`_ 3.2, 3.3, 3.4 and ICC_ 8.1.

.. _GNU C++: http://gcc.gnu.org
.. _ICC: http://www.intel.com/software/products/compilers/

- Vaucanswig is no longer enabled by default.

  To enable the compilation of Vaucanswig, run::

     ./configure --enable-vaucanswig

  **Be warned**: this compilation takes several hours on a modern
  computer.

- The demos in ``src/demos/xml`` were updated.

  The demo formerly named ``algorithms`` is now compiled for various
  semirings under the following names:

  ``b``:
    Boolean semiring.

  ``z``:
    usual semiring on Z.

  ``r``:
    usual semiring on R.

  ``z_max_plus``:
    tropical semiring with (max, +) on Z.

  ``z_min_plus``:
    tropical semiring with (min, +) on Z.

  Furthermore, additional algorithms may be called from this demo:
  ``transpose`` and ``eval``. A list of states may be provided to the
  ``aut_to_exp`` algorithm, thus allowing the elimination of states to
  be performed in a specified order.

  An additional ``src/demo/xml/samples`` directory was created, with
  some XML samples, and some programs that can generate XML samples.

- ``expand()`` definitively replaces ``verbalize()``.

  The ``verbalize()`` function does not exist anymore.  It is replaced
  by ``expand()``, which was introduced in Vaucanson 0.6.  A short
  description of ``expand()`` can be found below, in the description
  of Vaucanson 0.6.

- This version of Vaucanson is released under the GNU Lesser General Public
  Licence.

Vaucanson 0.6 July 18, 2004
===========================

- Big cleanings in Vaucanson XML.

  A big work was done around Vaucanson XML, which should be fairly
  more usable now. To save an automaton in a XML representation, just
  include ``vaucanson/xml/static.hh`` and do::

    stream << vcsn::automaton_saver(auto,
                                    vcsn::io::string_out (),
                                    vcsn::xml::xml_loader ());

  To reload the automaton, you may do the opposite operation::

    stream >> vcsn::automaton_loader(auto,
                                     vcsn::io::string_out (),
                                     vcsn::xml::xml_loader ());

  Of course, if you want to get rid of ``vcsn::io``, ``vcsn::xml``,
  etc. you may do:

    using namespace vcsn::xml;
    using namespace vcsn::io;

  Many more examples and utilities can be found in the directory
  ``src/demos/xml``.  Just browse the sources!

- Few more examples.

  A few programs were written for the CIAA 2004 conference. It is not
  an extraordinary or complex code, but it demonstrates how quick and
  easy it may be to use Vaucanson for assembling some algorithms and
  building simple automata. It may also be a good introduction to
  learn Vaucanson by practice.

  These examples are in ``src/demos/ciaa``.

- New features in context headers.

  A new context header for automata over the tropical semiring with
  the "min" and "+" operators was added. Furthermore, some new
  functions and typedefs are declared in each header.

  If you want to use the context "foo", then include
  ``vaucanson/foo.hh``. You will get the following types in the
  namespace ``vcsn::foo``:

  ===================== ======================= =========================
  ALGEBRAIC SETS        ELEMENTS OF SET         LOW LEVEL IMPLEMENTATIONS
  ===================== ======================= =========================
  alphabet_t                                    letter_t
  monoid_t              monoid_elt_t            monoid_elt_value_t
  semiring_t            semiring_elt_t          semiring_elt_value_t
  series_set_t          series_set_elt_t        series_set_elt_value_t
  automata_set_t        automaton_t             automaton_impl_t
  series_set_t          rat_exp_t               rat_exp_impl_t
  ===================== ======================= =========================

  As the user, you will probably only be interested in ``alphabet_t``,
  ``automaton_t`` and ``rat_exp_t``, respectively for alphabets,
  automata and rational expressions.

  For transducers, you will get the following extra types:

  ===================== ======================= =========================
  ALGEBRAIC SETS        ELEMENTS OF SET         LOW LEVEL IMPLEMENTATIONS
  ===================== ======================= =========================
  output_semiring_t     output_semiring_elt_t   output_semiring_elt_value_t
  output_series_set_t   output_series_set_elt_t output_series_set_elt_value_t
  ===================== ======================= =========================

  In addition  to that, a context  provides the user  with the following
  functions::

    automaton_t new_automaton(alphabet_t); // Create an empty automaton.
    rat_exp_t   new_rat_exp(alphabet_t); // Create an empty rational expression.
    rat_exp_t   new_rat_exp(alphabet_t, std::string); // Create a rational
                    // expression and initialize it. Ex: new_rat_exp(a, "a+b*");
    automaton_t standard_of(rat_exp_t); // Build the standard automaton of an exp.
    automaton_t thompson_of(rat_exp_t); // Build the thompson automaton of an exp.
    rat_exp_t   aut_to_exp(automaton_t); // Build an exp from an automaton.

  If you want more algorithms, just browse the ``vaucanson/algorithms``
  directory, or look in the HTML documentation.

  Currently, the following contexts are available:

  - ``boolean_automaton``

  - ``z_automaton``

  - ``r_automaton``

  - ``z_max_plus``

  - ``z_min_plus``

  - ``boolean_transducer``

- Many bug fixes.

  As usual many bugs were fixed.  Especially the quotient should be
  correct now.  There were also some fixes in the ``standard_of``
  algorithm, and ``derived_term_automaton`` now works with expressions
  that have right weights.  The closure was rewritten and should be
  faster now.

  Beside from the algorithms a big bug was fixed in the algebra core
  of Vaucanson, which used to cause some problems when one wanted to
  use different alphabets in different automata in the same program.

  Also, rational expressions which weights are implemented as floats
  or doubles now work correctly.

- ``verbalize()`` is deprecated, use ``expand()``!

  A new ``expand()`` function was created. It performs a simple
  expansion of a rational expression. For example::

    expand(a(a+b))      =       aa+ab
    expand(a(a+b*))     =       aa+a.b*
    expand(a(a+(a+b*))) =       aa+a.(a+b)*
    expand(a+(a(a+b))*) =       a+(aa+ab)*

  To use this function, include
  ``vaucanson/algorithms/krat_exp_expand.hh`` and call the
  ``vcsn::expand()`` function on an ``Element< Series, rat::exp<M, W>
  >`` (or a ``rat_exp_t`` if you are using a context).

  While this function behave exactly as verbalize on series which have
  a finite support, the latter is deprecated. It will probably be
  removed in next releases.

- ``krat_exp_print()`` does not exist anymore.

  The file ``vaucanson/algorithms/krat_exp_print.hh`` was removed. To
  print a rational expression with no extra parenthesis, just use the
  ``<<`` operator onto a C++ stream::

     std::cout << exp << std::endl;

  To make this operator behave as in previous versions, send the right
  format onto the stream::

     std::cout << setpm (MODE_ALL) << exp << std::endl;

  (``setpm`` and ``MODE_ALL`` are in the ``vcsn::rat`` namespace).  To
  have an exhaustive list of the different manipulators and print
  modes, you may look in
  ``vaucanson/algebra/implementation/series/rat/dump_visitor.hh``.

- ``tools/usual.hh`` was removed.

  A system of context headers is used since vaucanson 0.4.2, and
  therefore ``usual.hh`` became useless. Furthermore it was a bad idea
  to use it since it has many includes and may slow a lot a
  compilation.

  This include has been removed from the distribution. if you were
  using some of its definitions (e.g. ``usual_automaton_t``) you now
  need to use the context headers (e.g.  include
  ``boolean_automaton.hh`` and use ``automaton_t`` in namespace
  ``vcsn::boolean_automaton``). You will also find all the macros that
  may be needed in ``tools/usual_macros.hh``.


- This version of Vaucanson is released under the GNU Lesser General Public
  Licence.


Vaucanson 0.5 March 24, 2004
============================

- New XML Input/Output system.

  An XML Input/Output system have been added to Vaucanson.  To use it,
  you will need the Apache Xerces C++ library version 2.3.*. To enable
  the test suite on the XML I/O system, you need to use the configure
  option ``--enable-xml``.

  ``doc/xml/``:
     You can find a minimal documentation here.

  ``xml/``:
     DTD and XSL files and some scripts.

  ``include/vaucanson/xml/``:
     Header files.

  ``src/test/xml/``:
     Test files. Can be used as examples.

- Better documentation.

  An effort has been made to make the Doxygen documentation look
  better.  The documentation is still incomplete, and some errors
  probably remain, but it should be far more usable now.

  Especially, the "Algorithm" section of the documentation should now
  be exhaustive.

- Instantiation of Element which set is dynamic may fail when you do
  not specify the set.

  To get more safety at runtime, trying to instantiate an Element
  which set is dynamic without initializing the set will fail at
  compile time.  This ensures every Element you will manipulate has
  its corresponding set associated. This has two consequences:

  - Using ``Element::set()`` should provoke no more segmentation
    faults or similar undesired behavior.

  - The ``bound()`` method has no sense anymore and therefore has been
    removed.  If you make calls to this method in your programs, just
    consider it returns true every time now and remove the call.

- Many renamings.

  To get a more consistent interface, a few methods have
  changed. Consequently, your old code designed for Vaucanson 0.4 may
  not work properly with Vaucanson 0.5. However, converting it to the
  new nomenclature should be straightforward:

  - All names containing the word "``serie``" are now written with
    "``series``" instead.  For example, ``serie_get()`` is now
    ``series_get()``.

  - All ``serie_t`` typedefs are now ``series_elt_t``.

  - The method ``value_get()`` for the elements of series is now
    called ``get()``.

  - The method ``value_set()`` for the elements of series is now
    called ``assoc()``.

  - The convenience files ``vaucanson_*.hh`` in the
    ``include/vaucanson`` directory have been stripped from their
    leading "``vaucanson_``".

  - ``hopcroft_minimization.hh`` is now named
    ``minimization_hopcroft.hh`` to be consistent with
    ``minimization_moore.hh``.

- New implementation for numerical semirings.

  It is now possible to use rational numbers as an implementation in
  numerical semirings. In order to do so, the header
  ``<vaucanson/algebra/concrete/semiring/rational_number.hh>`` must be
  included.  All you need to do then, is to declare a variable as
  follows::

    vcsn::Element<semiring_t, vcsn::algebra::RationalNumber> q(num, denom);

  ``semiring_t`` can be any numerical semiring.

  The usual operators have been overloaded, and you can get the
  integer or double value of the fraction by using ``to_int()`` or
  ``to_double()``. You can also access the numerator with ``num()``
  and denominator with ``denom()``.

- Many more tests.

  The test suite has been extended and improved. Generic tests are now
  instantiated on many more types.  Also, existing tests have been
  enriched with extra checks and non-existing tests have been written.
  Some bugs have been discovered, fixed, and now have their
  corresponding regression test.

  As a result, running "``make check``" should take more time than
  before, but now trusting a successful check sequence is less
  hazardous. Note that it is still possible to disable some tests by
  removing the test directory and running the configure script again.

  Tests have shown that using some rational expressions which weight
  are implemented with double can be potentially dangerous.  This
  requires more checks before we can fix it.  For the moment try to
  avoid doing that.

- Rewriting of the ``minimization_moore()`` algorithm.

  The minimization algorithm named ``minimization_moore()`` has been
  rewritten. It should be more readable and more reliable now.

- This version of Vaucanson is released under the GNU Lesser General Public
  Licence.


Vaucanson 0.4 October 29, 2003
==============================

- Addition of an automata I/O subsystem.

- Nearly-complete SWIG bindings for algorithms in Vaucanswig.

- Preliminary documentation for Vaucanswig.

- Addition of a Bitset class which behave almost like a
  ``std::set<int>``.

- Addition of a Window class to permit easy text manipulation.

- Addition of a generic search algorithm able to skip characters in
  the input stream.

- This version of Vaucanson is released under the GNU Lesser General Public
  Licence.

Vaucanson 0.3 July 11, 2003
===========================

- More documentation.

- Addition of SWIG modules (Vaucanswig).

- Noticeable performance boost thanks to a working unification of
  references to structural elements.

- This version of Vaucanson is released under the GNU Lesser General Public
  Licence.

Vaucanson 0.2 July 02, 2003
===========================

- First public release.

- Rewrite of the ``fundamental`` module.

- New graph structure to replace the old, legacy ``ManyLinks``
  implementation.

- Rewrite of most algorithms.

- Implementation of algorithms on rational expressions.

- Initial Doxygen documentation efforts.

- This version of Vaucanson is released under the GNU Lesser General Public
  Licence.

Vaucanson 0.1 January, 2002
===========================

- Initial release.

- This version of Vaucanson is released under the GNU Lesser General Public
  Licence.

.. Local Variables:
.. mode: rst
.. ispell-local-dictionary: "american"
.. End:
