| Home | Libraries | People | FAQ | More

### History

New issues should be submitted at https://github.com/boostorg/regex/issues

Currently open issues can be viewed here.

All issues including closed ones can be viewed here.

##### Boost.Regex-7.0.0 (Boost-1.78.0)

- Breaking Change: Change \B to be the opposite of \b as per Perl behaviour.
- Change w32_regex_traits.hpp so that windows.h is no longer included.
- Fxed fuzzing related issues #151, #152, #153, #156.

##### Boost.Regex-6.0.0 (Boost-1.77.0)

- Big change to header only library.
- Deprecate C++03 support.

##### Boost.Regex-5.1.4 (Boost-172.0)

- Minor build fixes, see #89.

##### Boost.Regex-5.1.3 (Boost-1.64.0)

- Compiling with Oracle C++ toolset is no longer restricted to static linking.
- Big effort to de-fuzz the library using libFuzzer and fix identified issues, see: #12818.

##### Boost.Regex-5.1.2 (Boost-1.62.0)

- Fix buffer over-run error when parsing certain invalid regexes, see #12222.
- Fix detection of ICU in library build, see #12152.
- Fix bug in case sensitivity change, see #11940.
- Allow types wider than int in `\x{}` expressions (for char32_t etc), see #11988.

##### Boost.Regex-5.1.1 (Boost-1.61.0)

- Change to lockfree implementation of memory cache, see PR#23.

##### Boost.Regex-5.1.0 (Boost-1.60.0)

- Add support for Perl's backtracking control verbs, see #11205. Note however, that (*MARK) and operations on marks are not currently supported.
- Fix incorrect range end when matching [[:unicode:]], see #11524.
- Change POSIX reg_comp API to not check potentially uninitialized memory, note that code which was previously free from memory leaks (but none the less buggy, as it didn't call reg_free) will now leak. See #11472.
- Make sub_match a valid C++ range type, see #11036.

##### Boost.Regex-5.0.1 (Boost-1.58.0)

- Fixed some typos as in #10682.
- Merged pull-request #6 for Coverity warnings.
- Merged pull-request #7 for Coverity warnings.
- Merged pull-request #8 for Coverity warnings.
- Merged pull-request #10 to enable more build variants when linking to ICU.
- Fix issue with ICU and partial matches, see #10114.
- Removed delayload support for the ICU libraries: this doesn't work with the latest ICU releases (linker errors).

##### Boost.Regex-5.0.0 (Boost-1.56.0)

- Moved to library-specific version number post the move to Git. And since we have one (minor) breaking change this gets bumped up from v4 to v5.
- Breaking change: corrected behavior of `basic_regex<>::mark_count()` to match existing documentation, `basic_regex<>::subexpression(n)` changed to match, see #9227
- Fixed issue #8903.
- Fixed documentation typos from #9283.
- Fixed bug in collation code that failed if the locale generated collation strings with embedded nul's, see #9451.
- Apply patch for unusual thread usage (no statically initialized mutexes), see #9461.
- Added better checks for invalid UTF-8 sequences, see #9473.

##### Boost-1.54

Fixed issue #8569.

##### Boost-1.53

Fixed Issues: #7744, #7644.

##### Boost-1.51

Fixed issues: #589, #7084, #7032, #6346.

##### 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 circumstances repeat more times than their maximum value.
- Fixed the value returned by basic_regex<>::empty() from a default constructed object.
- Changed the definition 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-expression|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.