<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>History</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="home" href="../../index.html" title="Boost.Regex">
<link rel="up" href="../background_information.html" title="Background Information">
<link rel="prev" href="acknowledgements.html" title="Acknowledgements">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background_information.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background_information.history"></a><a class="link" href="history.html" title="History"> History</a>
</h3></div></div></div>
<p>
        New issues should be submitted at <a href="http://svn.boost.org" target="_top">svn.boost.org</a>
        - don't forget to include your email address in the ticket!
      </p>
<p>
        Currently open issues can be viewed <a href="https://svn.boost.org/trac/boost/query?status=assigned&amp;status=new&amp;status=reopened&amp;component=regex&amp;order=priority&amp;col=id&amp;col=summary&amp;col=status&amp;col=type&amp;col=milestone&amp;col=component" target="_top">here</a>.
      </p>
<p>
        All issues including closed ones can be viewed <a href="https://svn.boost.org/trac/boost/query?status=assigned&amp;status=closed&amp;status=new&amp;status=reopened&amp;component=regex&amp;order=priority&amp;col=id&amp;col=summary&amp;col=status&amp;col=type&amp;col=milestone&amp;col=component" target="_top">here</a>.
      </p>
<a name="boost_regex.background_information.history.boost_1_44"></a><h5>
<a name="id1068774"></a>
        <a class="link" href="history.html#boost_regex.background_information.history.boost_1_44">Boost
        1.44</a>
      </h5>
<p>
        Fixed issues: <a href="https://svn.boost.org/trac/boost/ticket/4309" target="_top">#4309</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/4215" target="_top">#4215</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/4212" target="_top">#4212</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/4191" target="_top">#4191</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/4132" target="_top">#4132</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/4123" target="_top">#4123</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/4114" target="_top">#4114</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/4036" target="_top">#4036</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/4020" target="_top">#4020</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/3941" target="_top">#3941</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/3902" target="_top">#3902</a>,
        <a href="https://svn.boost.org/trac/boost/ticket/3890" target="_top">#3890</a>
      </p>
<a name="boost_regex.background_information.history.boost_1_42"></a><h5>
<a name="id1068849"></a>
        <a class="link" href="history.html#boost_regex.background_information.history.boost_1_42">Boost
        1.42</a>
      </h5>
<div class="itemizedlist"><ul type="disc">
<li>
            Added support for Functors rather than strings as format expressions.
          </li>
<li>
            Improved error reporting when throwing exceptions to include better more
            relevant information.
          </li>
<li>
            Improved performance and reduced stack usage of recursive expressions.
          </li>
<li>
            Fixed tickets <a href="https://svn.boost.org/trac/boost/ticket/2802" target="_top">#2802</a>,
            <a href="https://svn.boost.org/trac/boost/ticket/3425" target="_top">#3425</a>,
            <a href="https://svn.boost.org/trac/boost/ticket/3507" target="_top">#3507</a>,
            <a href="https://svn.boost.org/trac/boost/ticket/3546" target="_top">#3546</a>,
            <a href="https://svn.boost.org/trac/boost/ticket/3631" target="_top">#3631</a>,
            <a href="https://svn.boost.org/trac/boost/ticket/3632" target="_top">#3632</a>,
            <a href="https://svn.boost.org/trac/boost/ticket/3715" target="_top">#3715</a>,
            <a href="https://svn.boost.org/trac/boost/ticket/3718" target="_top">#3718</a>,
            <a href="https://svn.boost.org/trac/boost/ticket/3763" target="_top">#3763</a>,
            <a href="https://svn.boost.org/trac/boost/ticket/3764" target="_top">#3764</a>
          </li>
</ul></div>
<a name="boost_regex.background_information.history.boost_1_40"></a><h5>
<a name="id1068942"></a>
        <a class="link" href="history.html#boost_regex.background_information.history.boost_1_40">Boost
        1.40</a>
      </h5>
<div class="itemizedlist"><ul type="disc"><li>
            Added support for many Perl 5.10 syntax elements including named sub-expressions,
            branch resets and recursive regular expressions.
          </li></ul></div>
<a name="boost_regex.background_information.history.boost_1_38"></a><h5>
<a name="id1068966"></a>
        <a class="link" href="history.html#boost_regex.background_information.history.boost_1_38">Boost
        1.38</a>
      </h5>
<div class="itemizedlist"><ul type="disc">
<li>
            <span class="bold"><strong>Breaking change</strong></span>: empty expressions,
            and empty alternatives are now allowed when using the Perl regular expression
            syntax. This change has been added for Perl compatibility, when the new
            <a class="link" href="../ref/syntax_option_type.html" title="syntax_option_type"><code class="computeroutput"><span class="identifier">syntax_option_type</span></code></a>
            <span class="emphasis"><em>no_empty_expressions</em></span> is set then the old behaviour
            is preserved and empty expressions are prohibited. This is issue <a href="https://svn.boost.org/trac/boost/ticket/1081" target="_top">#1081</a>.
          </li>
<li>
            Added support for Perl style ${n} expressions in format strings (issue
            <a href="https://svn.boost.org/trac/boost/ticket/2556" target="_top">#2556</a>).
          </li>
<li>
            Added support for accessing the location of sub-expressions within the
            regular expression string (issue <a href="https://svn.boost.org/trac/boost/ticket/2269" target="_top">#2269</a>).
          </li>
<li>
            Fixed compiler compatibility issues <a href="https://svn.boost.org/trac/boost/ticket/2244" target="_top">#2244</a>,
            <a href="https://svn.boost.org/trac/boost/ticket/2514" target="_top">#2514</a>,
            and <a href="https://svn.boost.org/trac/boost/ticket/2244" target="_top">#2458</a>.
          </li>
</ul></div>
<a name="boost_regex.background_information.history.boost_1_34"></a><h5>
<a name="id1069504"></a>
        <a class="link" href="history.html#boost_regex.background_information.history.boost_1_34">Boost
        1.34</a>
      </h5>
<div class="itemizedlist"><ul type="disc">
<li>
            Fix for non-greedy repeats and partial matches not working correctly
            in some cases.
          </li>
<li>
            Fix for non-greedy repeats on VC++ not working in some cases (bug report
            1515830).
          </li>
<li>
            Changed match_results::position() to return a valid result when *this
            represents a partial match.
          </li>
<li>
            Fixed the grep and egrep options so that the newline character gets treated
            the same as |.
          </li>
</ul></div>
<a name="boost_regex.background_information.history.boost_1_33_1"></a><h5>
<a name="id1069549"></a>
        <a class="link" href="history.html#boost_regex.background_information.history.boost_1_33_1">Boost
        1.33.1</a>
      </h5>
<div class="itemizedlist"><ul type="disc">
<li>
            Fixed broken makefiles.
          </li>
<li>
            Fixed configuration setup to allow building with VC7.1 - STLport-4.6.2
            when using /Zc:wchar_t.
          </li>
<li>
            Moved declarations class-inline in static_mutex.hpp so that SGI Irix
            compiler can cope.
          </li>
<li>
            Added needed standard library #includes to fileiter.hpp, regex_workaround.hpp
            and cpp_regex_traits.hpp.
          </li>
<li>
            Fixed a bug where non-greedy repeats could in certain strange curcumstances
            repeat more times than their maximum value.
          </li>
<li>
            Fixed the value returned by basic_regex&lt;&gt;::empty() from a default
            constructed object.
          </li>
<li>
            Changed the deffinition of regex_error to make it backwards compatible
            with Boost-1.32.0.
          </li>
<li>
            Disabled external templates for Intel C++ 8.0 and earlier - otherwise
            unresolved references can occur.
          </li>
<li>
            Rewritten extern template code for gcc so that only specific member functions
            are exported: otherwise strange unresolved references can occur when
            linking and mixing debug and non-debug code.
          </li>
<li>
            Initialise all the data members of the unicode_iterators: this keeps
            gcc from issuing needless warnings.
          </li>
<li>
            Ported the ICU integration code to VC6 and VC7.
          </li>
<li>
            Ensured code is STLport debug mode clean.
          </li>
<li>
            Fixed lookbehind assertions so that fixed length repeats are permitted,
            and so that regex iteration allows lookbehind to look back before the
            current search range (into the last match).
          </li>
<li>
            Fixed strange bug with non-greedy repeats inside forward lookahead assertions.
          </li>
<li>
            Enabled negated character classes inside character sets.
          </li>
<li>
            Fixed regression so that [a-z-] is a valid expression again.
          </li>
<li>
            Fixed bug that allowed some invalid expressions to be accepted.
          </li>
</ul></div>
<a name="boost_regex.background_information.history.boost_1_33_0"></a><h5>
<a name="id1069689"></a>
        <a class="link" href="history.html#boost_regex.background_information.history.boost_1_33_0">Boost
        1.33.0</a>
      </h5>
<div class="itemizedlist"><ul type="disc">
<li>
            Completely rewritten expression parsing code, and traits class support;
            now conforms to the standardization proposal.
          </li>
<li>
            Breaking Change: The syntax options that can be passed to basic_regex
            constructors have been rationalized. The default option (perl) now has
            a value of zero, and it is now clearly documented which options apply
            to which regular expression syntax styles (perl, POSIX-extended, POSIX-basic
            etc). Some of the more esoteric options have now been removed, so there
            is the possibility that existing code may fail to compile: however equivalent
            functionality should still be available.
          </li>
<li>
            Breaking Change: POSIX-extended and POSIX-basic regular expressions now
            enforce the letter of the POSIX standard much more closely than before.
          </li>
<li>
            Added support for (?imsx-imsx) constructs.
          </li>
<li>
            Added support for lookbehind expressions (?&lt;=positive-lookbehind)
            and (?&lt;!negative-lookbehind).
          </li>
<li>
            Added support for conditional expressions (?(assertion)true-expresion|false-expression).
          </li>
<li>
            Added MFC/ATL string wrappers.
          </li>
<li>
            Added Unicode support; based on ICU.
          </li>
<li>
            Changed newline support to recognise \f as a line separator (all character
            types), and \x85 as a line separator for wide characters / Unicode only.
          </li>
<li>
            Added a new format flag format_literal that treats the replace string
            as a literal, rather than a Perl or Sed style format string.
          </li>
<li>
            Errors are now reported by throwing exceptions of type regex_error. The
            types used previously - bad_expression and bad_pattern - are now just
            typedefs for regex_error. Type regex_error has a couple of new members:
            code() to report an error code rather than a string, and position() to
            report where in the expression the error occured.
          </li>
</ul></div>
<a name="boost_regex.background_information.history.boost_1_32_1"></a><h5>
<a name="id1069786"></a>
        <a class="link" href="history.html#boost_regex.background_information.history.boost_1_32_1">Boost
        1.32.1</a>
      </h5>
<div class="itemizedlist"><ul type="disc"><li>
            Fixed bug in partial matches of bounded repeats of '.'.
          </li></ul></div>
<a name="boost_regex.background_information.history.boost_1_31_0"></a><h5>
<a name="id1069810"></a>
        <a class="link" href="history.html#boost_regex.background_information.history.boost_1_31_0">Boost
        1.31.0</a>
      </h5>
<div class="itemizedlist"><ul type="disc">
<li>
            Completely rewritten pattern matching code - it is now up to 10 times
            faster than before.
          </li>
<li>
            Reorganized documentation.
          </li>
<li>
            Deprecated all interfaces that are not part of the regular expression
            standardization proposal.
          </li>
<li>
            Added regex_iterator and regex_token_iterator .
          </li>
<li>
            Added support for Perl style independent sub-expressions.
          </li>
<li>
            Added non-member operators to the sub_match class, so that you can compare
            sub_match's with strings, or add them to a string to produce a new string.
          </li>
<li>
            Added experimental support for extended capture information.
          </li>
<li>
            Changed the match flags so that they are a distinct type (not an integer),
            if you try to pass the match flags as an integer rather than match_flag_type
            to the regex algorithms then you will now get a compiler error.
          </li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 1998 -2010 John Maddock<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background_information.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a>
</div>
</body>
</html>
