
We are happy to announce the release of Vcsn 2.7! As most of our efforts are currently on Vcsn 3, this is mostly a bug fix release, with improvements in the documentation based on user feedback. For more information see the detailed news below. Release page: https://vcsn.lrde.epita.fr/Vcsn2.7 Tarball: https://www.lrde.epita.fr/dload/vcsn/2.7/vcsn-2.7.tar.xz Home page: https://vcsn.lrde.epita.fr The various packages (Arch, Debian, Docker, MacPorts, etc.) will appear soon. ## New features ### Improved compatibility between single- and multitape expressions The automatic promotion from single-tape to multitape is more general. For instance (| separates tapes and @ denotes composition): In [2]: c = vcsn.context('lat<lan, lan>, b') In [3]: c.expression('a') Out[3]: a|a In [4]: c.expression('a*b* @ (ab)*') Out[4]: (a|a)*(b|b)*@((a|a)(b|b))* In [5]: c.expression('a*b* @ (ab)*').shortest(10) Out[5]: \e|\e + ab|ab ### vcsn doc is a new tool Run `vcsn doc automaton.determinize`, or `vcsn doc Automata`, etc. The special shortcuts `vcsn doc` opens the Read-me-first notebook, and `vcsn doc index` leads to Algorithms, the page that lists the existing documentation of algorithms (`automata.determinize`, etc.). ### Compressed efsm files Vcsn can read efsm files compressed with bzip2 and xz. In some extreme cases, the xz-compressed efsm file was reduced to 5% of the original size. The files for the sms2fr demo are now compressed with xz. ### vcsn score has several new options The command `vcsn score` benchmarks Vcsn. Its output can be processed with `vcsn score-compare` to see the trends in performances between versions. Benchmarks are now numbered, to give a hint of the progress: $ vcsn score vcsn version: 2.6-085-g6dcae17ef 1/116 0.25s : a.is_proper() # a = "", 1000000x 2/116 0.11s : b.format("text") # b = [abc] -> B, 100000x 3/116 0.35s : b.expression(e) # e = [ab]{20000}, 1000x ... 115/116 0.75s : a.weight_series() # a = std(a{12000}+<1>[b-z]{12000}), c = [a-z] -> Nmin, 200x 116/116 0.89s : a.weight_series() # a = std([a-z]{200}), c = [a-z] -> Z, 10x The new option `-o`/`--output` allows to specify the output file name. Better yet: option `-d`/`--dir` specifies the directory in which the score file is saved; its name will be forged from `git describe`, something like `v2.5-050-g01dbf326`. Such names are interpreted by `vcsn score-compare` to relate the benches to the git commit title. Both features need that you run these commands from a git repository of Vcsn. Option `-j`/`--job` allows to run the benchmarks concurrently. This can be very useful to "warm" vcsn (have it compile the needed algorithms), or to get a nice approximation of the actual benches, however, sticking to a single bench at a time is recommended to get faithful measurements. Option `-l`/`--list` lists the benches without running them. Option `-s`/`--sort` sorts the benchmarks before running them. ### Documentation Several errors were fixed. The page `expression.compose.ipynb` is new. ### Examples of C++ The directories `tests/demo` and `tests/benchmarks` contain more examples using the Vcsn C++ library. ## Bug fixes ### Incorrect order for 8bit characters Calling `compare` on labels would lead to surprising results with 8bit characters (seen as negative ints). This resulted in the incorrect display of the expression `[\x01-\xfe]` as `[\x80-\xfe] + [\x01-\x7f]`. Both are fixed, and 1 is less than 254 again.
participants (1)
-
Akim Demaille