PEGTL v3.0.0 Release Notes
Release Date: 2020-11-28 // about 4 years ago-
- 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_NAMESPACE
now contains the fully qualified namespace, e.g.tao::pegtl
. - Added
[[nodiscard]]
or[[noreturn]]
to most non-void functions.
- Meta-Data Layer
- Replaced
analysis_t
with more general and completerule_t
andsubs_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_error
withstd::system_error
andstd::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.
- 📜 Parse Tree
- Removed the need for RTTI.
- Other
- Changed
std::string
tostd::filesystem::path
for filename parameters. - Renamed
byte_in_line
tocolumn
and use 1-based counting. - Moved rule
eolf
from inline namespacetao::pegtl::ascii
totao::pegtl
. - Changed rules in
tao/pegtl/contrib/integer.hpp
to not accept redundant leading zeros. - Added rules to
tao/pegtl/contrib/integer.hpp
that 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.hpp
intojson_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.hpp
from contrib.
- Removed option of state's
Previous changes from v2.8.3
-
- 🛠 Fixed excessive read-ahead with incremental inputs.
- Added state manipulators
remove_first_state
,remove_last_states
,rotate_states_right
,rotate_states_left
, andreverse_states
to contrib. - ⬇️ Reduced the number of intermediate parse tree nodes.