- Use the migration guide when updating.
- Infrastructure
- Updated required C++ standard to C++17.
- Updated required CMake version to 3.8.
- The macro
TAO_PEGTL_NAMESPACEnow contains the fully qualified namespace, e.g.tao::pegtl. - Added
[[nodiscard]]or[[noreturn]]to most non-void functions.
- Meta-Data Layer
- Replaced
analysis_twith more general and completerule_tandsubs_t. - Added functions to visit all rules of a grammar.
- Added functions to measure rule coverage of a parsing run.
- Moved the analysis function and header to contrib.
- Replaced
- Error Handling
- Replaced
tao::pegtl::input_errorwithstd::system_errorandstd::filesystem::filesystem_error. - Added
must_if<>- Allows to define custom error messages for global errors.
- Adds a non-intrusive way to define global parse errors for a grammar retroactively.
- Replaced
- Demangling
- Removed the need for RTTI.
- Some broken/unknown compilers will use RTTI as a fallback, without demangling.
- Moved
tao::pegtl::internal::demangle<T>()totao::demangle<T>(). - Improved generated code to be shorter and more efficient.
- Removed the need for RTTI.
- Parse Tree
- Removed the need for RTTI.
- Other
- Changed
std::stringtostd::filesystem::pathfor filename parameters. - Renamed
byte_in_linetocolumnand use 1-based counting. - Moved rule
eolffrom inline namespacetao::pegtl::asciitotao::pegtl. - Changed rules in
tao/pegtl/contrib/integer.hppto not accept redundant leading zeros. - Added rules to
tao/pegtl/contrib/integer.hppthat test unsigned values against a maximum. - Demoted UTF-16 and UTF-32 support to contrib.
- Demoted UINT-8, UINT-16, UINT-32 and UINT-64 support to contrib.
- Folded
contrib/counter.hppintojson_count.cpp, count is superceded by coverage. - Removed right padding from
contrib/json.hpp'svalue.
- Changed
- Cleanup
- Removed option of state's
S::success()to have an extended signature to get access to the currentapply_mode,rewind_mode, action- and control class (template). - Removed compatibility macros starting with
TAOCPP_PEGTL_. - Removed compatibility uppercase enumerators.
- Removed compatibility
peek_byte()member functions. - Removed compatibility header
changes.hppfrom contrib.
- Removed option of state's