| Home | Libraries | People | FAQ | More

### History

New issues should be submitted at svn.boost.org - don't forget to include your email address in the ticket!

Currently open issues can be viewed here.

All issues including closed ones can be viewed here.

##### Boost-1.50

Fixed issue with `(?!)` not being a valid expression, and updated docs on what constitutes a valid conditional expression.

##### Boost-1.48

Fixed issues: #698, #5835, #5958, #5736.

##### Boost 1.47

Fixed issues: #5223, #5353, #5363, #5462, #5472, #5504.

##### Boost 1.44

Fixed issues: #4309, #4215, #4212, #4191, #4132, #4123, #4114, #4036, #4020, #3941, #3902, #3890

##### Boost 1.42

- Added support for Functors rather than strings as format expressions.
- Improved error reporting when throwing exceptions to include better more relevant information.
- Improved performance and reduced stack usage of recursive expressions.
- Fixed tickets #2802, #3425, #3507, #3546, #3631, #3632, #3715, #3718, #3763, #3764

##### Boost 1.40

- Added support for many Perl 5.10 syntax elements including named sub-expressions, branch resets and recursive regular expressions.

##### Boost 1.38

- Breaking change: 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 `syntax_option_type` no_empty_expressions is set then the old behaviour is preserved and empty expressions are prohibited. This is issue #1081.
- Added support for Perl style ${n} expressions in format strings (issue #2556).
- Added support for accessing the location of sub-expressions within the regular expression string (issue #2269).
- Fixed compiler compatibility issues #2244, #2514, and #2458.

##### Boost 1.34

- Fix for non-greedy repeats and partial matches not working correctly in some cases.
- Fix for non-greedy repeats on VC++ not working in some cases (bug report 1515830).
- Changed match_results::position() to return a valid result when *this represents a partial match.
- Fixed the grep and egrep options so that the newline character gets treated the same as |.

##### Boost 1.33.1

- Fixed broken makefiles.
- Fixed configuration setup to allow building with VC7.1 - STLport-4.6.2 when using /Zc:wchar_t.
- Moved declarations class-inline in static_mutex.hpp so that SGI Irix compiler can cope.
- Added needed standard library #includes to fileiter.hpp, regex_workaround.hpp and cpp_regex_traits.hpp.
- Fixed a bug where non-greedy repeats could in certain strange curcumstances repeat more times than their maximum value.
- Fixed the value returned by basic_regex<>::empty() from a default constructed object.
- Changed the deffinition of regex_error to make it backwards compatible with Boost-1.32.0.
- Disabled external templates for Intel C++ 8.0 and earlier - otherwise unresolved references can occur.
- 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.
- Initialise all the data members of the unicode_iterators: this keeps gcc from issuing needless warnings.
- Ported the ICU integration code to VC6 and VC7.
- Ensured code is STLport debug mode clean.
- 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).
- Fixed strange bug with non-greedy repeats inside forward lookahead assertions.
- Enabled negated character classes inside character sets.
- Fixed regression so that [a-z-] is a valid expression again.
- Fixed bug that allowed some invalid expressions to be accepted.

##### Boost 1.33.0

- Completely rewritten expression parsing code, and traits class support; now conforms to the standardization proposal.
- 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.
- Breaking Change: POSIX-extended and POSIX-basic regular expressions now enforce the letter of the POSIX standard much more closely than before.
- Added support for (?imsx-imsx) constructs.
- Added support for lookbehind expressions (?<=positive-lookbehind) and (?<!negative-lookbehind).
- Added support for conditional expressions (?(assertion)true-expresion|false-expression).
- Added MFC/ATL string wrappers.
- Added Unicode support; based on ICU.
- Changed newline support to recognise \f as a line separator (all character types), and \x85 as a line separator for wide characters / Unicode only.
- Added a new format flag format_literal that treats the replace string as a literal, rather than a Perl or Sed style format string.
- 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 occurred.

##### Boost 1.32.1

- Fixed bug in partial matches of bounded repeats of '.'.

##### Boost 1.31.0

- Completely rewritten pattern matching code - it is now up to 10 times faster than before.
- Reorganized documentation.
- Deprecated all interfaces that are not part of the regular expression standardization proposal.
- Added regex_iterator and regex_token_iterator .
- Added support for Perl style independent sub-expressions.
- 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.
- Added experimental support for extended capture information.
- 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.