]> granicus.if.org Git - re2c/commitdiff
Release notes for 0.16.
authorUlya Trofimovich <skvadrik@gmail.com>
Thu, 21 Jan 2016 11:56:46 +0000 (11:56 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Thu, 21 Jan 2016 11:56:46 +0000 (11:56 +0000)
Makefile
src/about/about.rst
src/feed/atom.xml
src/install/install.rst
src/news/changelog/0_16.rst [new file with mode: 0644]
src/news/changelog/changelog.rst
src/news/news.rst
src/news/release_notes/0_16.rst [new file with mode: 0644]

index eef9f9ec4ab6a215a69acd64f7889fd7beeb9fa9..9a772f870b194f47d6e81e219045c49039a0c45a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -58,6 +58,7 @@ SRC_RST = \
     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 \
@@ -71,6 +72,7 @@ SRC_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 \
index edc8ff9fcf1db048be1f546b9197080250921501..c08234ef31a02515f532eaefdfca4ba93282028e 100644 (file)
@@ -43,5 +43,5 @@ be appreciated.
 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.
 
index bb152c55b54e841f08dfdfec8629afd111e661b4..91882205e4db46e24c3f9c42f7f3c6b0b2ba721e 100644 (file)
@@ -4,7 +4,7 @@
     <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>
index 95b366f5e5e55e17e308cce70a659ae02c5ebf9b..5ed45c664b9eca7db997e9ece0dbbd042cc89611 100644 (file)
@@ -11,6 +11,7 @@ Download
 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>`_
diff --git a/src/news/changelog/0_16.rst b/src/news/changelog/0_16.rst
new file mode 100644 (file)
index 0000000..81c825e
--- /dev/null
@@ -0,0 +1,13 @@
+-----
+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"
+
index 8998b80e26fdacb3bfd2fa1cc1d36b47b68e92c7..eb416e1753d62e55bcf9afacd75727dd6b9e1965 100644 (file)
@@ -5,6 +5,7 @@ Changelog
 .. include:: ../home.rst
 .. include:: ../../contents.rst
 
+.. include:: 0_16.rst
 .. include:: 0_15.rst
 .. include:: 0_14.rst
 .. include:: 0_13.rst
index b5e06b8782087075422f9a8a77675e534c10a5f7..604e2a1c8c975cdd3cd5a2d6c94a900f7cb6104e 100644 (file)
@@ -6,6 +6,7 @@ News
 
 ★
 
+* `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>`_
diff --git a/src/news/release_notes/0_16.rst b/src/news/release_notes/0_16.rst
new file mode 100644 (file)
index 0000000..a5f7f6f
--- /dev/null
@@ -0,0 +1,43 @@
+==============
+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.
+