Tomlplusplus Versions Save

Header-only TOML config file parser and serializer for C++17.

v3.4.0

7 months ago

Fixes

  • fixed value_flags not being preserved correctly when inserting into tables and arrays (#108) (@LebJe)
  • fixed toml::value::flags() not being cleared when std::move-ing a value
  • fixed error in README (#195) (@andrewkcorcoran)
  • fixed compiler error when using NVCC (#198) (@thompsonnoahe)
  • fixed noexcept(...) sometimes being incorrectly derived on for_each()
  • fixed for_each() compilation error on GCC <= 7 (#197) (@sagi-ottopia, @damirbarr)
  • fixed FLT_RADIX check getting broken by Intel MKL headers (#202) (@iago-lito)
  • fixed keys containing \t incorrectly formatting as bare keys (@jasmine-zhu, @arp242)
  • fixed keys containing \t and \n not round-tripping correctly (@arp242)

Additions

  • added support for using enums with value_or()

Changes:

  • renamed header files to have .hpp extension (toml.h is still present for backwards-compatibility)

Build system:

  • fixed meson builds with -Ddefault_library=static having hidden symbols on GNU compilers (#201) (@vlad0x00)

v3.3.0

1 year ago

Fixes:

  • fixed null pointer dereference in parser when exceptions are disabled (#169) (@ncaklovic)
  • fixed spurious warnings in MSVC 19.34
  • fixed toml::parse_file() on windows for non-ASCII paths
  • fixed a spurious table redefinition error (#187) (@jorisvr)
  • fixed UB edge-case in integer parsing (#188) (@jorisvr)
  • fixed some build issues with Apple-flavoured Clang (#189) (@eddelbuettel)

Additions:

  • added toml::format_flags::terse_key_value_pairs
  • added TOML_ENABLE_FLOAT16 config (#178) (@Scrumplex)

Removals:

  • removed automatic detection of _Float16 (you must explicitly set TOML_ENABLE_FLOAT16 to enable it) (#186) (@benthetechguy)

Build system:

  • re-wrote the meson scripts to fix a number of issues (#185, #186) (@Tachi107, @benthetechguy)
  • increased the minimum required meson version to 0.61.0

v3.2.0

1 year ago

Fixes:

  • fixed [dotted.table] source columns sometimes being off by one (#152) (@vaartis)
  • fixed spurious Wnull-dereference warning on GCC (#164) (@zaporozhets)
  • fixed print_to_stream ambiguity for size_t (#167) (@acronce)

Additions:

  • added value type deduction to emplace() methods
  • added toml::path utility type (#153, #156, #168) (@jonestristand, @kcsaul)
  • added config option TOML_CALLCONV
  • added missing relational operators for source_position

Changes:

  • relaxed cvref requirements of is_homogeneous(), emplace(), emplace_back(), emplace_hint()
  • relaxed mantissa and digits10 requirements of extended float support

v3.1.0

2 years ago

Fixes:

  • Fixed potential segfault when calling at_path() with an empty string
  • Fixed UB in internal unicode machinery (#144) (@kchalmer)
  • Fixed a number of spurious warnings with Clang 10 (#145, #146) (@chronoxor)

Additions:

  • Added toml::array::for_each()
  • Added toml::table::for_each()
  • Added config options TOML_EXPORTED_CLASS, TOML_EXPORTED_MEMBER_FUNCTION, TOML_EXPORTED_STATIC_FUNCTION & TOML_EXPORTED_FREE_FUNCTION
  • Added support for escape sequence \e when using TOML_ENABLE_UNRELEASED_FEATURES (toml/790)
  • Added support for more unicode in bare keys when using TOML_ENABLE_UNRELEASED_FEATURES (toml/891)

Removals/Deprecations:

  • Deprecated old TOML_API option in favour new TOML_EXPORTED_X options (it will continue to work as it did before if none of the new function export options are defined)

Build system:

  • Meson: Added compile_library option (@Tachi107)
  • Meson: Added ubsan_tests and ubsan_examples options
  • Meson: Use system dependencies where available when building tests (@Tachi107)

v3.0.1

2 years ago

This is a single-bugfix release to fix an ODR issue for people using header-only mode in multiple translation units. If you aren't seeing linker errors because of toml::array::insert_at(), this release holds nothing of value over v3.0.0.

Fixes:

  • fixed erroneous use of TOML_API causing ODR issue (#136) (@Azarael)

v3.0.0

2 years ago

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::table init-list constructor requiring double-brackets
  • ⚠️ fixed TOML_API + extern templates causing linker errors in some circumstances
  • ⚠️ fixed incorrect noexcept specifications on many functions
  • ⚠️ fixed missing TOML_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 and toml::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 constant toml::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 as std::map::lower_bound())
  • added toml::table::emplace_hint() (same semantics as std::map::emplace_hint())
  • added toml::table::at() (same semantics as std::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<> and toml::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 from toml::date and toml::time
  • added toml::at_path(), toml::node::at_path() and toml::node_view::at_path() for qualified path-based lookups (#118) (@ben-crowhurst)
  • added toml::array::resize() param default_init_flags
  • added toml::array::replace() (#109) (@LebJe)
  • added toml::array::prune()
  • added toml::array::at() (same semantics as std::vector::at())
  • added parse_benchmark example
  • added operator-> to toml::value for class types

Changes:

  • ⚠️ toml::format_flags is now backed by uint64_t (was previously uint8_t)
  • ⚠️ toml::source_index is now an alias for uint32_t unconditionally (was previously dependent on TOML_LARGE_FILES)
  • ⚠️ toml::table now uses toml::key as the key type (was previously std::string)
  • ⚠️ toml::value_flags is now backed by uint16_t (was previously uint8_t)
  • ⚠️ made all overloaded operators 'hidden friends' where possible
  • ⚠️ renamed toml::default_formatter to toml::toml_formatter (toml::default_formatter is now an alias)
  • ⚠️ renamed TOML_PARSER option to TOML_ENABLE_PARSER (TOML_PARSER will continue to work but is deprecated)
  • ⚠️ renamed TOML_UNRELEASED_FEATURES to TOML_ENABLE_UNRELEASED_FEATURES (TOML_UNRELEASED_FEATURES will continue to work but is deprecated)
  • ⚠️ renamed TOML_WINDOWS_COMPAT to TOML_ENABLE_WINDOWS_COMPAT (TOML_WINDOWS_COMPAT will continue to work but is deprecated)
  • applied clang-format to all the things 🎉️
  • exposed TOML_NAMESPACE_START and TOML_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:

  • ⚠️ removed toml::format_flags::allow_value_format_flags
  • ⚠️ removed TOML_LARGE_FILES (it is now default - explicitly setting TOML_LARGE_FILES to 0 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 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_dependency where supported (#116) (@Tachi107)

v2.5.0

2 years ago

Fixes:

  • fixed linkage error with windows compat mode
  • fixed TOML_CONSTEVAL broken in MSVC (again)
  • fixed minor documentation bugs
  • fixed cmake project version being incorrect (#110) (@GiulioRomualdi)

Additions:

  • added support for lowercase 't' and 'z' in datetimes (per spec)
  • added natvis file to cmake install (#106) (@Ryan-rsm-McKenzie)
  • added VS cpp.hint file to cmake install
  • added metafunctions is_container, is_chronological, is_value, is_node, inserted_type_of

Changes:

  • improved debug code size by removing unnecessary std::forwards and std::moves
  • modernized the CMake build files (#102, #103, #105) (@friendlyanon)
  • updated conformance tests

v2.4.0

3 years ago

Fixes:

  • fixed node::value() not retrieving inf and nan correctly
  • fixed dotted kvps being unable to add subtables (#61) (@Validark)
  • fixed linker error on linux ICC (#83) (@blackwer)
  • fixed segfault JSON-formatting a failed parse_result (#96) (@proydakov)
  • fixed spurious newline after JSON formatting a table
  • fixed VS intellisense not detecting TOML_COMPILER_EXCEPTIONS correctly
  • fixed crash with pathologically-nested inputs (#100) (@geeknik)
  • fixed parse_result natvis
  • fixed false-positive char8_t support detection on older compilers
  • fixed unnecessary #include <Windows.h> Windows builds (@BeastLe9enD)
  • fixed TOML_CONSTEVAL breaking on VS 16.10.0pre2
  • fixed spurious warnings with MSVC /Wall
  • fixed missing blank lines between consecutive empty tables/A-o-T
  • fixed unnecessary TOML_API declarations
  • fixed many small documentation issues

Additions:

  • added proper cmake support (#85) (@ClausKlein)
  • added cmake FetchContent information to documentation (#101) (@proydakov)

Removals and Deprecations:

  • removed explicit #include <fstream> requirement for parse_file()

v2.3.0

3 years ago

Fixes:

  • fixed compiler errors caused by <charconv> with Apple-flavoured clang
  • fixed array and table iterators missing iterator_category (#77) (@HazardyKnusperkeks)
  • fixed Wuseless-cast warnings on GCC 10 (#75) (@HazardyKnusperkeks)
  • fixed formatter not correctly line wrapping in some rare circumstances (#73) (@89z)
  • fixed an unnecessary global compiler flag breaking builds when used as a meson subproject (#72) (@jamabr)
  • fixed link error caused by <charconv> on emscripten (#71) (@suy)
  • fixed ambiguity with the toml::literals inline namespace (#69) (@std-any-emplace)
  • fixed formatter emitting superfluous newlines after printing tables (#68) (@std-any-emplace)
  • fixed array and table iterators not converting between const and non-const versions of themselves (#67) (@std-any-emplace)
  • fixed some parser crashes when given pathologically-malformed UTF-8 (#65) (@sneves)

v2.2.0

3 years ago

Fixes:

  • fixed some issues building with VS2017 (#55) (@sobczyk)
  • fixed _Float16 erroneously detected as supported on g++ (#57) (@sobczyk)
  • fixed <Windows.h> causing compilation failure on mingw (#63) (@rezahousseini)
  • fixed CMake and pkg-config files not being installed into architecture-agnostic directories (#59) (@tambry)
  • fixed memory leak during parsing (#64) (@sneves)
  • fixed ambiguous operator== error on MSVC (#56) (@HellsingDarge)

Additions:

  • added additional node_view constructors
  • added ability to specify serialization format of integer values
  • added integer value serialization format round trip (e.g. hex in, hex out)

Changes:

  • updated conformance tests
  • TOML version bump to v1.0.0-rc.3
  • refactors and cleanups based on feedback given here

Build system:

  • renamed build options to snake_case
  • tests, examples and cmake config now explicitly disabled when used as a subproject
  • removed small_binaries (it's now implicit when building as release)
  • bumped minimum meson version to 0.53