b41e12f736
also: - fixed extended-precision fractional times causing parse error instead of truncating per the spec (closes #127) - fixed some non-spec vertical whitespace being accepted as line breaks (closes #128) - added `format_flags::allow_unicode_strings`
21 KiB
21 KiB
Changelog
Unreleased
This release will be a major version bump, so it's ABI breaks all around. Any API changes that might necessitate code changes at callsites or in build systems are indicated with ⚠️.
Fixes:
- ⚠️ fixed incorrect
noexcept
specifications on many functions - ⚠️ fixed
toml::table
init-list constructor requiring double-brackets - fixed
toml::json_formatter
not formatting inf and nan incorrectly - fixed
TOML_API
+ extern templates causing linker errors in some circumstances - fixed an illegal table redefinition edge case (#112) (@python36)
- fixed documentation issues
- fixed incorrect source position in redefinition error messages
- fixed incorrect handling of vertical whitespace in keys when printing TOML to streams
- fixed memory leak during parse failures when compiled using GCC (#123, #124) (@rsmmr, @ronalabraham)
- fixed missing
#include <initializer_list>
- fixed missing
#include <utility>
- fixed missing
TOML_API
on interfaces - fixed parser not correctly round-tripping the format of binary and octal integers in some cases
- fixed strong exception guarantee edge-cases in
toml::table
andtoml::array
- fixed some incorrect unicode scalar sequence transformations (#125) (@moorereason)
- fixed extended-precision fractional times causing parse error instead of truncating per the spec (#127) (@moorereason)
- fixed some non-spec vertical whitespace being accepted as line breaks (#128) (@moorereason)
Additions:
- added
operator->
totoml::value
for class types - added
parse_benchmark
example - added
toml::array::at()
(same semantics asstd::vector::at()
) - added
toml::array::prune()
- added
toml::array::replace()
(#109) (@LebJe) - added
toml::array::resize()
paramdefault_init_flags
- added
toml::date_time
converting constructors fromtoml::date
andtoml::time
- added
toml::format_flags::allow_binary_integers
- added
toml::format_flags::allow_hexadecimal_integers
- added
toml::format_flags::allow_octal_integers
- added
toml::format_flags::allow_real_tabs_in_strings
- added
toml::format_flags::allow_unicode_strings
- added
toml::format_flags::indent_array_elements
- added
toml::format_flags::indent_sub_tables
- added
toml::format_flags::quote_infinities_and_nans
- 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::table::at()
(same semantics asstd::map::at()
) - added
toml::table::emplace_hint()
(same semantics asstd::map::emplace_hint()
) - added
toml::table::lower_bound()
(same semantics asstd::map::lower_bound()
) - added
toml::table::prune()
- added
toml::value
copy+move constructor overloads with flags override - added
toml::yaml_formatter
- added
TOML_ENABLE_FORMATTERS
option - added clang's enum annotation attributes to all enums
- added formatter indentation flags (#120) (@W4RH4WK)
- added magic
toml::value_flags
constanttoml::preserve_source_value_flags
- added support for Unicode 14.0
- added value flags to array + table insert methods (#44) (@levicki)
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
- ⚠️ renamed
toml::default_formatter
totoml::toml_formatter
(toml::default_formatter
is now an alias) - ⚠️ renamed
TOML_PARSER
option toTOML_ENABLE_PARSER
(TOML_PARSER
will continue to work but is deprecated) - ⚠️ renamed
TOML_UNRELEASED_FEATURES
toTOML_ENABLE_UNRELEASED_FEATURES
(TOML_UNRELEASED_FEATURES
will continue to work but is deprecated) - ⚠️ renamed
TOML_WINDOWS_COMPAT
toTOML_ENABLE_WINDOWS_COMPAT
(TOML_WINDOWS_COMPAT
will continue to work but is deprecated) toml::node::ref()
now supports explicit ref categories and cv-qualifiers- applied clang-format to all the things 🎉️
- 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
- exposed
TOML_NAMESPACE_START
andTOML_NAMESPACE_END
macros to help with ADL specialization scenarios
Removals:
- ⚠️ removed
toml::format_flags::allow_value_format_flags
- ⚠️ removed
TOML_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 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 - 2021-07-11
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 - 2021-05-19
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:
- removed explicit
#include <fstream>
requirement forparse_file()
v2.3.0 - 2020-12-29
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 - 2020-08-09
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
v2.1.0 - 2020-07-11
Fixes:
- fixed inconsistent emission of leading/trailing newlines when writing a table to an ostream (#48) (@levicki)
- fixed
Wcast-align
warning spam on ARM - fixed
array::insert
not working correctly in some cases - fixed
node::value_or()
not having the same semantics asnode::value()
(#50) (@whiterabbit963) - fixed 'misleading assignment' of rvalue node_views (#52) (@Reedbeta)
- fixed some issues handling infinities and NaNs (#51) (@Reedbeta)
- fixed some minor documentation issues
Additions:
- added support for
__fp16
,_Float16
,__float128
,__int128_t
and__uint128_t
- added copy construction/assignment for arrays, tables and values
- added insert, emplace, push_back etc. compatibility with node_views
- added
node::is_homogenous
- added
table::is_homogenous
- added
value::is_homogenous
(just for generic code's sake) - added
is_homogenous
overload for identifying failure-causing element - added implicit conversion operator from
node
tonode_view
(#52) (@Reedbeta)
Changes:
- renamed
TOML_ALL_INLINE
toTOML_HEADER_ONLY
(the old name will still work, but is no longer documented) - general cleanup
v2.0.0 - 2020-07-20
This release contains a fairly significant number of 'quality of life' improvements, yay! But also necessitates an ABI break (hence the version number bump). Changes that might block a migration are annotated with ⚠️.
Fixes:
- fixed infinity and NaN-related code breaking when using
-ffast-math
and friends - fixed narrowing conversion warnings when constructing int values from unsigned
- fixed Visual Studio debugger native visualizations for
date
,time
,time_offset
,date_time
- fixed some static assert messages being badly formatted on clang
- fixed internal macro
assert_or_assume
leaking out oftoml_parser.hpp
Additions:
- added additional types allowed in
node::value()
andnode::value_or()
(seevalue()
dox for examples) - added additional types allowed in
node_view::value()
andnode_view::value_or()
- added
node::value_exact()
andnode_view::value_exact()
- added support for interop with wide strings on Windows:
- added wide-string path arg overloads of
parse()
andparse_file()
- added wide-string support to all relevant
table
andarray
ops - added wide-string support to
node::value(), node::value_or()
- added wide-string support to
node_view::value(), node_view::value_or()
- added wide-string support to
value<string>
constructor - added wide-string overloads of
node_view::operator[]
- added
source_region::wide_path()
- added
TOML_WINDOWS_COMPAT
switch for explicitly enabling/disabling this stuff
- added wide-string path arg overloads of
- added emission of 'literal' strings to the TOML serializer
- added lots of minor documentation fixes and improvements
- added Visual Studio debugger native visualizations for
table
,array
,parse_result
, andparse_error
(#46) (@Reedbeta) - added non-template version of
array::is_homogeneous()
- added explicit instantiations of more template types when
!TOML_ALL_INLINE
Changes:
- ⚠️ deprecated
parse_result::get()
in favour ofparse_result::table()
- ⚠️ deprecated
node_view::get()
in favour ofnode_view::node()
- ⚠️ simplified internal ABI namespaces
- improved the quality of many static_assert error messages
Removals:
- ⚠️ renamed
date_time::time_offset
to just 'offset' - ⚠️ removed
TOML_CHAR_8_STRINGS
since it no longer makes sense
v1.3.3 - 2020-06-29
Fixes:
- fixed some minor TOML spec conformance bugs
- fixed BOM check causing EOF on very short iostream inputs
- fixed
std::numeric_limits::max()
getting broken by macros in some environments - fixed 'unknown pragma' warning spam in older versions of GCC
- fixed a few minor documentation issues
Additions:
- added rvalue overload of
array::flatten
- added conformance tests from
BurntSushi/toml-test
andiarna/toml-spec-tests
- added
toml::inserter
as a workaround for nested construction of single-elementtoml::arrays
performing move-construction instead - added license boilerplate to test files
Changes:
- refactored the parser to reduce binary size
v1.3.2 - 2020-06-19
Fixes:
- fixed single-digit negative integers parsing as positive
- fixed parse failure when parsing an empty file
- fixed multi-line strings being allowed in keys
- fixed overflow for very long binary integer literals
Changes:
- improved the performance of toml::parse_file
- improved the performance of printing to streams for deepy-nested TOML data
v1.3.0 - 2020-06-02
Fixes:
- fixed
formatter::print_inline()
causing compilation failures in DLL builds - fixed BOMs occasionally causing overflow/crash in char8 mode
- fixed some spurious warnings in GCC 10
- fixed clang static analyzer warning in BOM handling code
Additions:
- added
table_iterator::operator ->
- added
array::resize()
andarray::truncate()
- added
array::capacity()
,array::shrink_to_fit()
,array::max_size()
- added non-const -> const conversion for table and array iterators
Changes:
- renamed table iterator proxy pair members to
first
andsecond
to match STL
v1.2.5 - 2020-04-24
Fixes:
- fixed some multi-line string parsing issues
- fixed pedantic warnings on gcc 10 and clang 11
- fixed
is_unicode_XXXXXX
functions being wrong in some cases - fixed
TOML_LIKELY
not being correct on older versions of gcc and clang - fixed minor documentation issues (#26, #38) (@prince-chrismc)
Additions:
- added additional error message cases to the parser
- added
error_printer
example - added
toml_generator
example
Changes:
- improved unicode-related codegen
v1.2.3 - 2020-04-11
Fixes:
- fixed printing of inf and nan
- fixed parser not handling floats with leading '.' characters
- fixed pedantic vtable warnings on clang with -Weverything
- fixed a number of documentation bugs
- fixed
TOML_UNRELEASED_FEATURES
default being 1 (it should have been 0)
Additions:
- added
TOML_PARSER
configuration option - added
TOML_LIB_SINGLE_HEADER
indicator - added doxygen page for the configuration options
- added SPDX-License-Identifiers around the place
Changes:
- split some header files up to make future maintenance easier
- refactored and greatly simplified parser
v1.2.0 - 2020-04-07
Fixes:
- fixed some parsing and printing ops being locale-dependent
- fixed some parsing errors at EOF when
TOML_EXCEPTIONS = 0
- fixed some unreferenced variable warnings on older compilers
- fixed some 'maybe-uninitialized' false-positives on GCC9
- fixed pkgconfig subdir being wrong
Additions:
- added support for implementations without
<charconv>
- added cmake package config generator (#22) (@GiulioRomualdi)
- added build config feature option
GENERATE_CMAKE_CONFIG
- added many new tests
v1.1.0 - 2020-04-03
Fixes:
- fixed some parser error paths not returning early enough
TOML_EXCEPTIONS=0
- fixed a number of minor documentation issues
Additions:
- added support for TOML 1.0.0-rc.1 🎉
- added
operator[]
,begin()
,end()
totoml::parse_result
forTOML_EXCEPTIONS=0
- added additional compilation speed improvements for
TOML_ALL_INLINE=0
- added more specific error messages for parsing errors relating to prohibited codepoints
- added a large number of additional tests
- added support for installation with meson (#16) (@ximion)
- added the array and table iterators to the
toml
namespace
v1.0.0 - 2020-03-28
Fixes:
- fixed minor documentation issues
Changes:
- refactoring of ABI-based inline namespaces
v0.6.0 - 2020-03-24
Fixes:
- fixed minor preprocessor/macro issues
- fixed minor documentation issues
Additions:
- added
<cassert>
include directly in 'debug' builds whenTOML_ASSERT
isn't defined - added Clang's
[[trivial_abi]]
attribute todate
,time
,time_offset
v0.5.0 - 2020-03-18
Fixes:
- fixed crash when reaching EOF while parsing a string when exceptions are disabled
- fixed some attribute warnings in GCC
- fixed build with GCC 8.2.0 (#15) (@shdnx)
- fixed exception mode detection sometimes being incorrect on MSVC
- fixed compilation on older implementations without
std::launder
- fixed
json_formatter
type deduction on older compilers
Additions:
- added support for Unicode 13.0
- added support for
\xHH
escape sequences (toml/pull/796) - added short-form license preamble to all source files
- added build configuration option for compiling examples
v0.4.3 - 2020-03-10
Fixes:
- fixed ICE in VS2019 when using
/std:c++17
instead of `/std:c++latest
Additions:
- added
#error
whenTOML_EXCEPTIONS
is set to1
but compiler exceptions were disabled
Changes:
- parsing performance improvements
v0.4.0 - 2020-03-05
Fixes:
- fixed
parse_file()
failing to compile with plain string literals - fixed tests being built when used as a meson subproject (#14) (@shdnx)
Additions:
- added support for compiling into DLLs on windows (
TOML_API
) - added support for explicitly setting the
TOML_EXCEPTION
mode - added
TOML_OPTIONAL_TYPE
customization point - added
node::ref()
andnode_view::ref()
v0.3.0 - 2020-03-01
Fixes:
- fixed some pedantic clang warnings
- fixed some minor documentation errors
Additions:
- added
node::value()
andnode::value_or()
- added
node_view::value()
- added relops for the date/time classes
- added
TOML_ALL_INLINE
andTOML_IMPLEMENTATION
options - added preliminary support for ICC
Removals:
- removed
<cmath>
dependency
v0.2.1 - 2020-02-26
Fixes:
- fixed minor printing bug in
operator<<(ostream, source_position)
- fixed minor documentation issues
Additions:
- added
operator<<(ostream&, parse_error)
Changes:
- improved quality of error messages for boolean and inf/nan parsing
v0.2.0 - 2020-02-23
Fixes:
- fixed truncation of floating-point values when using ostreams
- fixed missing value deduction guides for dates and times
- fixed potential ODR issues relating to exception mode handling etc.
- fixed some documentation issues
Additions:
- added serialization round-trip tests
- added
node::is_number()
- added
node_view::is_number()
- added
node_view::value_or()
- added hexfloat parsing support for all implementations (not just
<charconv>
ones)
v0.1.0 - 2020-02-20
- First public release, yay! 🎉️