Vcsn 2.3 (July 8th, 2016)


About four hundred commits and five months after Vcsn 2.2, we are proud to announce the release of Vcsn 2.3, code-named "the tuple release"!

As usual, many bugs were fixed (some quite old yet unnoticed so far!). Noteworthy changes include:

  • a particular effort was put on the documentation: there are thirty-five new documentation pages, and about forty others were improved.

  • full support for a "tuple" operator on all entities: expressions, polynomials, automata, etc.

    In [13]: aut = lambda e: vcsn.context('lan, q').expression(e).automaton()
    In [14]: a = aut('[ab]*') | aut('x')
    In [15]: a.shortest(6)
    Out[15]: |x + a|x + b|x + aa|x + ab|x + ba|x
  • It is also available in the rational expressions themselves:

    In [16]: c = vcsn.context('lat<lan, lan>, q'); c
    Out[16]: {...}? x {...}? -> Q
    In [17]: e = c.expression('[ab]*|x'); e
    Out[17]: (a+b)*|x
    In [18]: e.shortest(6)
    Out[18]: \e|x + a|x + b|x + aa|x + ab|x + ba|x

    The derived-term algorithm supports this operator, and generates equivalent multitape automata.

  • many error messages were improved, to help users understand their mistakes. For instance, instead of

    In [2]: vcsn.Q.expression('a**').derivation('a')
    RuntimeError: q: star: invalid value: 1
  • we now display:

    In [2]: vcsn.Q.expression('a**').derivation('a')
    RuntimeError: Q: value is not starrable: 1
      while computing derivative of: a**
                    with respect to: a
  • in addition to %automaton a, which allows interactive edition of automata, the notebooks now feature two new interactive editors: %context c to edit/create context c, and %expression e for expressions (with an interactive display of the generated automata).
  • one may now generate random rational expressions and control the operators and their probabilities.
  • a lot of code improvement and consistency enforcement, both in C++ and in Python.

People who worked on this release:

  • Akim Demaille
  • Clément Gillard
  • Lucien Boillod
  • Raoul Billion
  • Sébastien Piat
  • Thibaud Michaud

People who have influenced this release:

  • Alexandre Duret-Lutz
  • Jacques Sakarovitch
  • Luca Saiu
  • Sylvain Lombardy


Available Ports

  • Docker
Run this command to pull and start the Vcsn docker image on port 8888
docker run -d -p 8888:8888 lrde/vcsn:2.3
  • Debian Jessie
Run this command
echo 'deb stable/' >/etc/apt/sources.list.d/lrde.list
apt-get update
apt-get install vcsn
# Jupyter is not currently available on Debian
apt-get install python3-pip python3-dev libzmq3-dev
pip3 install jupyter
  • Archlinux (AUR)
Run this command:
yaourt -S vcsn
  • MacPorts
Run this command:
sudo port sync && sudo port install vcsn


  • Tarballs (sources to compile):


In order to compile Vcsn 2.3, you need:

C++ compiler
Clang 3.6 or newer and GNU G++ 4.9 or newer are known to work properly.
The display of automata is made using AT&T Graphviz library. (On Ubuntu/Debian, install the following package: graphviz)
Boost (version 1.49 or later) provides free peer-reviewed portable C++ source libraries (at least the Boost.Python and Boost.Regex components, and probably others).
The Flex scanner generater, 2.5.37 or better.
Compiler cache.
To build the C++ reference manual.
Python 3 is required
Although not strictly needed, it is required if you want to enjoy the Vcsn interactive notebooks.