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:
- ⚠️ fixed
toml::tableinit-list constructor requiring double-brackets - ⚠️ fixed
TOML_API+ extern templates causing linker errors in some circumstances - ⚠️ fixed incorrect
noexceptspecifications on many functions - ⚠️ fixed missing
TOML_APIon some interfaces - fixed
toml::json_formatternot 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::tableandtoml::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_flagsconstanttoml::preserve_source_value_flags - added clang's enum annotation attributes to all enums
- added
TOML_ENABLE_FORMATTERSoption - added
toml::yaml_formatter - added
toml::valuecopy+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_timeconverting constructors fromtoml::dateandtoml::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_benchmarkexample - added
operator->totoml::valuefor class types
Changes:
- ⚠️
toml::format_flagsis now backed byuint64_t(was previouslyuint8_t) - ⚠️
toml::source_indexis now an alias foruint32_tunconditionally (was previously dependent onTOML_LARGE_FILES) - ⚠️
toml::tablenow usestoml::keyas the key type (was previouslystd::string) - ⚠️
toml::value_flagsis now backed byuint16_t(was previouslyuint8_t) - ⚠️ made all overloaded operators 'hidden friends' where possible
- ⚠️ renamed
toml::default_formattertotoml::toml_formatter(toml::default_formatteris now an alias) - ⚠️ renamed
TOML_PARSERoption toTOML_ENABLE_PARSER(TOML_PARSERwill continue to work but is deprecated) - ⚠️ renamed
TOML_UNRELEASED_FEATUREStoTOML_ENABLE_UNRELEASED_FEATURES(TOML_UNRELEASED_FEATURESwill continue to work but is deprecated) - ⚠️ renamed
TOML_WINDOWS_COMPATtoTOML_ENABLE_WINDOWS_COMPAT(TOML_WINDOWS_COMPATwill continue to work but is deprecated) - applied clang-format to all the things 🎉️
- exposed
TOML_NAMESPACE_STARTandTOML_NAMESPACE_ENDmacros 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
.hand 'source' headers to.inl - updated conformance tests
Removals:
- ⚠️ removed
toml::format_flags::allow_value_format_flags - ⚠️ removed
TOML_LARGE_FILES(it is now default - explicitly settingTOML_LARGE_FILESto0will invoke an#error) - ⚠️ removed unnecessary template machinery (esp. where ostreams were involved)
- removed unnecessary uses of
final
Build system:
- ⚠️ increased minimum required meson version to
0.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_dependencywhere supported (#116) (@Tachi107)