src/manual/options/options_list.rst \
src/news/news.rst \
src/news/changelog/changelog.rst \
+ src/news/changelog/0_16.rst \
src/news/changelog/0_15_list.rst \
src/news/changelog/0_15.rst \
src/news/changelog/0_14.rst \
src/news/release_notes/0_15_1.rst \
src/news/release_notes/0_15_2.rst \
src/news/release_notes/0_15_3.rst \
+ src/news/release_notes/0_16.rst \
src/news/home.rst \
src/about/about.rst \
src/install/install.rst \
Version
-------
-This page describes ``re2c`` version 0.15.3 packaged on 02 Dec 2015.
+This page describes ``re2c`` version 0.16 packaged on 21 January 2016.
<title>re2c</title>
<link rel="self" href="http://re2c.org/feed/atom.xml"/>
<id>http://re2c.org/</id>
- <updated>2015-12-02T00:00:00Z</updated>
+ <updated>2016-01-21T00:00:00Z</updated>
<entry>
<title>Release 0.15</title>
</author>
</entry>
+ <entry>
+ <title>Release 0.16</title>
+ <link href="http://re2c.org/news/release_notes/0_16.html"/>
+ <id>http://re2c.org/news/release_notes/0_16.html</id>
+ <updated>2016-01-21T00:00:00Z</updated>
+ <summary type="xhtml">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ Major release re2c-0.16 (<a href="http://re2c.org/news/release_notes/0_16.html">release notes</a>).
+ </div>
+ </summary>
+ <author>
+ <name>Ulya Trofimovich</name>
+ <email>skvadrik@gmail.com</email>
+ </author>
+ </entry>
+
</feed>
Tarballs
--------
+* `re2c-0.16.tar.gz <https://github.com/skvadrik/re2c/releases/download/0.16/re2c-0.16.tar.gz>`_
* `re2c-0.15.3.tar.gz <https://github.com/skvadrik/re2c/releases/download/0.15.3/re2c-0.15.3.tar.gz>`_
* `re2c-0.14.3.tar.gz <https://github.com/skvadrik/re2c/releases/download/0.14.3/re2c-0.14.3.tar.gz>`_
* `re2c-0.13.7.5.tar.gz <https://github.com/skvadrik/re2c/releases/download/0.13.7.5/re2c-0.13.7.5.tar.gz>`_
--- /dev/null
+-----
+0.16x
+-----
+
+
+0.16 (2016-01-21)
+~~~~~~~~~~~~~~~~~
+
+- Fixed bug #127 "code generation error with wide chars and bitmaps (omitted ``goto`` statement)"
+- Added DFA minimization and option ``--dfa-minimization <table | moore>``
+- Fixed bug #128 "very slow DFA construction (resulting in a very large DFA)"
+- Fixed bug #132 "test failure on big endian archs with 0.15.3"
+
.. include:: ../home.rst
.. include:: ../../contents.rst
+.. include:: 0_16.rst
.. include:: 0_15.rst
.. include:: 0_14.rst
.. include:: 0_13.rst
★
+* `Release 0.16 <release_notes/0_16.html>`_
* `Release 0.15.3 <release_notes/0_15_3.html>`_
* `Release 0.15.2 <release_notes/0_15_2.html>`_
* `Release 0.15.1 <release_notes/0_15_1.html>`_
--- /dev/null
+==============
+Release 0.16
+==============
+
+.. include:: ../home.rst
+
+This release adds a very important step in the process of code generation:
+minimization of the underlying DFA (deterministic finite automaton).
+Simply speaking, this means that re2c now generates less code
+(while the generated code behaves in exactly the same way).
+
+DFA minimization is a very well-known technique
+and one might expect that any self-respecting lexer generator would definitely use it.
+So how could it be that re2c didn't?
+In fact, re2c did use a couple of self-invented tricks to compress the generated code
+(one interesting technique is constructing *tunnel* automaton).
+Some of these tricks were quite buggy (see `this bug report <https://bugs.gentoo.org/show_bug.cgi?id=518904>`_ for example).
+Now that re2c does canonical DFA minimization all this stuff is obsolete and has been dropped.
+
+A lot of attention has been paid to the correctness of DFA minimization.
+Usually re2c uses a very simple criterion to validate changes:
+the generated code for all tests in testsuite must remain the same.
+However, in case of DFA minimization the generated code changes dramatically.
+It is impossible to verify the changes manually.
+
+One possible verification tool is `skeleton <../../manual/features/skeleton/skeleton.html>`_.
+Because skeleton is constructed prior to DFA minimization, it cannot be affected by any errors in its implementation.
+
+Another way to verify DFA minimization is to implement two different algorithms
+and compare the results. Minimization procedure has a very useful property:
+the miminal DFA is unique (with respect to state relabelling).
+We used Moore's and so-called *table filling* algorithms:
+Moore's algorithm is fast, while table filling is very simple to implement.
+There is an option ``--dfa-minimization <moore | table>`` that allows to choose
+a particular algorithm (defaults to ``moore``), but it's only useful for debugging
+DFA minimization.
+
+A good side effect of messing with re2c internals is a significant speedup
+of code generation (see `this issue <https://github.com/skvadrik/re2c/issues/128>`_ for example).
+Test suite now runs twice as fast (at least).
+
+See `changelog <../changelog/changelog.html>`_ for the list of all changes.
+