v3.0.0
This release is a major version bump, so it's ABI breaks all around.
Any changes that are likely to cause migration issues (API changes, build system breakage, etc.) are indicated with
Fixes:
⚠️ fixedtoml::table
init-list constructor requiring double-brackets⚠️ fixedTOML_API
+ extern templates causing linker errors in some circumstances⚠️ fixed incorrectnoexcept
specifications on many functions⚠️ fixed missingTOML_API
on some interfaces- fixed
toml::json_formatter
not formatting inf and nan incorrectly - fixed a number of spec conformance issues (#127, #128, #129, #130, #131, #132, #135) (@moorereason)
- fixed an illegal table redefinition edge case (#112) (@python36)
- fixed documentation issues
- fixed GCC bug causing memory leak during parse failures (#123, #124) (@rsmmr, @ronalabraham)
- fixed incorrect handling of vertical whitespace in keys when printing TOML to streams
- fixed incorrect source position in redefinition error messages
- fixed missing includes
<initializer_list>
,<utility>
- fixed parser not correctly round-tripping the format of binary and octal integers in some cases
- fixed some incorrect unicode scalar sequence transformations (#125)
- fixed strong exception guarantee edge-cases in
toml::table
andtoml::array
Additions:
- added value flags to array + table insert methods (#44) (@levicki)
- added support for Unicode 14.0
- added support for ref categories and cv-qualifiers in
toml::node::ref()
- added magic
toml::value_flags
constanttoml::preserve_source_value_flags
- added clang's enum annotation attributes to all enums
- added
TOML_ENABLE_FORMATTERS
option - added
toml::yaml_formatter
- added
toml::value
copy+move constructor overloads with flags override - added
toml::table::prune()
- added
toml::table::lower_bound()
(same semantics asstd::map::lower_bound()
) - added
toml::table::emplace_hint()
(same semantics asstd::map::emplace_hint()
) - added
toml::table::at()
(same semantics asstd::map::at()
) - added
toml::node_view::operator==
- added
toml::key
- provides a facility to access the source_regions of parsed keys (#82) (@vaartis) - added
toml::is_key<>
andtoml::is_key_or_convertible<>
metafunctions - added
toml::format_flags::relaxed_float_precision
(#89) (@vaartis) - added
toml::format_flags::quote_infinities_and_nans
- added
toml::format_flags::indent_sub_tables
(#120) (@W4RH4WK) - added
toml::format_flags::indent_array_elements
(#120) (@W4RH4WK) - added
toml::format_flags::allow_unicode_strings
- added
toml::format_flags::allow_real_tabs_in_strings
- added
toml::format_flags::allow_octal_integers
- added
toml::format_flags::allow_hexadecimal_integers
- added
toml::format_flags::allow_binary_integers
- added
toml::date_time
converting constructors fromtoml::date
andtoml::time
- added
toml::at_path()
,toml::node::at_path()
andtoml::node_view::at_path()
for qualified path-based lookups (#118) (@ben-crowhurst) - added
toml::array::resize()
paramdefault_init_flags
- added
toml::array::replace()
(#109) (@LebJe) - added
toml::array::prune()
- added
toml::array::at()
(same semantics asstd::vector::at()
) - added
parse_benchmark
example - added
operator->
totoml::value
for class types
Changes:
⚠️ toml::format_flags
is now backed byuint64_t
(was previouslyuint8_t
)⚠️ toml::source_index
is now an alias foruint32_t
unconditionally (was previously dependent onTOML_LARGE_FILES
)⚠️ toml::table
now usestoml::key
as the key type (was previouslystd::string
)⚠️ toml::value_flags
is now backed byuint16_t
(was previouslyuint8_t
)⚠️ made all overloaded operators 'hidden friends' where possible⚠️ renamedtoml::default_formatter
totoml::toml_formatter
(toml::default_formatter
is now an alias)⚠️ renamedTOML_PARSER
option toTOML_ENABLE_PARSER
(TOML_PARSER
will continue to work but is deprecated)⚠️ renamedTOML_UNRELEASED_FEATURES
toTOML_ENABLE_UNRELEASED_FEATURES
(TOML_UNRELEASED_FEATURES
will continue to work but is deprecated)⚠️ renamedTOML_WINDOWS_COMPAT
toTOML_ENABLE_WINDOWS_COMPAT
(TOML_WINDOWS_COMPAT
will continue to work but is deprecated)- applied clang-format to all the things 🎉️
- exposed
TOML_NAMESPACE_START
andTOML_NAMESPACE_END
macros to help with ADL specialization scenarios - improved performance of parser
- made date/time constructors accept any integral types
- moved all implementation headers to
/impl
- renamed all implementation headers to
.h
and 'source' headers to.inl
- updated conformance tests
Removals:
⚠️ removedtoml::format_flags::allow_value_format_flags
⚠️ removedTOML_LARGE_FILES
(it is now default - explicitly settingTOML_LARGE_FILES
to0
will invoke an#error
)⚠️ removed unnecessary template machinery (esp. where ostreams were involved)- removed unnecessary uses of
final
Build system:
⚠️ increased minimum required meson version to0.54.0
- disabled 'install' path when being used as a meson subproject (#114) (@Tachi107)
- fixed builds failing with meson 0.6.0 (#117) (@Tachi107)
- general meson improvements and fixes (#115) (@Tachi107)
- used
override_dependency
where supported (#116) (@Tachi107)