Releases: taocpp/PEGTL
Releases · taocpp/PEGTL
PEGTL 3.0.0
- 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.
- Removed the need for RTTI.
- 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
PEGTL 2.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.
PEGTL 2.8.2
- Fixed parse tree node generation to correctly remove intermediate nodes.
PEGTL 2.8.1
- Added fallback symbol demangling if RTTI is disabled.
- Fixed missing
string_input<>
in amalgamated header. - Fixed
discard_input*
actions to properly forward the apply mode. - Fixed contrib HTTP grammar for chunked data.
PEGTL 2.8.0
- Use the migration guide when updating.
- Changed enumerators to lowercase.
- Renamed
tracking_mode::IMMEDIATE
totracking_mode::eager
. - Compatibility enumerators with uppercase names are still included.
- Will be removed in version 3.0.0.
- Renamed
- Renamed
peek_byte()
topeek_uint8()
.- Compatibility member functions with previous names are still included.
- Will be removed in version 3.0.0.
- Compatibility member functions with previous names are still included.
- Allowed actions to implement
match
. - Made deriving action class templates from
nothing
optional. - Added debug tools
require_apply
andrequire_apply0
. - Added combinator class
rematch
. - Improved the Parse Tree / AST interface to mostly hide its internal state.
- Added new action-based helpers
change_*.hpp
.- The control-based helpers in
contrib/changes.hpp
are still included.- Will be removed in version 3.0.0.
- The control-based helpers in
- Added new action-based helpers
disable_action.hpp
andenable_action.hpp
. - Added new action-based helpers
discard_input.hpp
,discard_input_on_success.hpp
, anddiscard_input_on_failure.hpp
. - Added Clang Static Analyzer to the CI build.
- Added new Makefile target
amalgamate
to generate a single-header version of the PEGTL. - Added support for Universal Windows Platform (UWP).
PEGTL 2.7.1
- Added new ASCII convenience rule
forty_two
. - Added experimental
if_then
rule. - Simplified how parse tree nodes can be selected.
- Reduced the number of intermediate parse tree nodes.
- Allowed an action class template to be used with the parse tree.
PEGTL 2.7.0
- Added
mmap_file<>
support for Windows. - Added deduction guides for the input classes when compiling with C++17.
PEGTL 2.6.1
- Fixed endianness detection in test program.
PEGTL 2.6.0
- Added Conan packages.
- Fixed the UTF-8 decoder to no longer accept UTF-16 surrogates.
- Fixed the UTF-16 decoder to no longer accept UTF-16 unmatched surrogates.
- Fixed the UTF-32 "decoder" to no longer accept UTF-16 surrogates.
- Fixed
pegtl/contrib/unescape.hh
to no longer accept unmatched surrogates. - Optimised convenience rule
two
. - Added new convenience rule
three
.
PEGTL 2.5.2
- Fixed
opt
anduntil
to work as documented in some rare edge cases. - Used
opt_must
andstar_must
to optimise some included grammars.