0.10.0
Version 0.10.0
Changelog
- Bumped minimum GCC to 13.
- Added
mbo/jsonwhich adds JSon write support for almost any structured type. If anything is missing it can easily be added on the client side. - Added direct support for
-fno-exceptionsirrespective of config setting. - Added support for ASAN symbolizer with
--config=clang. - Added AbslStringify and hash support to
NoDestruct,RefWrap,Required. - Added struct
OptionalDataOrRefsimilar tostd::optionalbut can holdstd::nullopt, a typeTor a referenceT&/const T&. - Added struct
OptionalDataOrConstRefsimilar tostd::optionalbut can holdstd::nullopt, a typeTor a const referenceconst T&. - Added struct
OptionalRefsimilar tostd::optionalbut can holdstd::nulloptor a referenceT&/const T&. - Improved
Stringify(breaking change):- Improved control for
Stringifywith Json output. - Updated
StringifyOptions(breaking change). - Updated
StringifyWithFieldNames(breaking change). - Moved
StringifyOptionsfactories toStringifyso they can be constexpr even in C++20. - Modified
MboTypesStringifyOptions(breaking change) to be more flexible - but users must deal with the change. - Added ability to detect bad
MboTypesStringifyOptionssignatures. - Added
StringifyFieldOptionswhich holds outer and innerStringifyOptions. - Added
Stringify::AsJsonPretty()andStringifyOptions::AsJsonPretty(). - Added API extension point functoin
MboTypesStringifyValueAccesswhich allows to replace a struct with a single value inStringifyprocessing. - Added
Stringifysupport for empty types and types that matchIsStringKeyedContainer. - Fixed
Stringifynull* representations to stream as'null'as opposed to0. - Added ability to sort string keyed containers.
- Added function
SetStringifyOstreamOutputModewhich sets global Stringify stream options by mode. - Added function
SetStringifyOstreamOptionswhich sets global Stringify stream options. - Changed
Stringify::ToStringandStringify::Streamto not depend on any mutable member ofStringify.
- Improved control for
- Improved traits:
- Added concept
ConstructibleFromimplements a variant ofstd::constructible_fromthat works around its limitations to deal with array args. - Added concept
IsEmptyTypedetermines whether a type is empty (callsstd::is_empty_v). - Fixed concept
IsAggregate(breaking change). - Added concept
IsStringKeyedContainerwhich determines whether a type is a container whose elements are pairs and whose keys are convertible to a std::string_view. - Added concept
IsReferenceWrapperdetermines whether a type is astd::reference_wrapper. - Added concept
IsSameAsAnyOfwhich determines whether a type is the same as one of a list of types. Similar toIsSameAsAnyOfRawbut using exact types. - Added template struct
TypedViewa wrapper for STL views that provides type definitions, most importantlyvalue_type. That allows such views to be used with GoogleTest container matchers. - Added concept
IsOptionalDataOrRefwhich determines whether a type is aOptionalDataOrRef. - Added concept
IsOptionalRefwhich determines whether a type is aOptionalRef. - Added function
CompareArithmeticwhich compares two values that are scalar-numbers (including foat/double, excluding pointers and references). - Added function
CompareIntegralwhich compares two values that are integral-numbers (no float/double, no pointers, no references). - Added function
CompareScalarwhich compares two values that are scalar-numbers (including float/double and pointers, excluding references). - Added concept
IsArithmeticusesstd::is_arithmetic_v<T>. - Added concept
IsIntegralusesstd::integral<T>. - Added concept
IsScalarusesstd::is_scalar_v<T>. - Added concept
IsFloatingPointdetermines whether a type is a floating point type (usesstd::floating_point). - Added concept
ThreeWayComparableTowhich is similar tostd::three_way_comparable_withbut we only verify thatL <=> Rcan be interpreted asCatin the presented argument order.
- Added concept
- Added
Demangleto log de-mangled typeid names. - Added struct
Overloadedwhich implements an Overload handler forstd::visit(std::variant<...>)andstd::variant::visit(technically moved). - Added function
CompareFloatwhich can compare twofloat,doubleorlong doublevalues returningstd::strong_ordering. - Added function
WeakToStrongwhich converts astd::weak_orderingto astd::strong_ordering. - Fixed some IWYU pragmas.
- Fixed some template requirements.
- Fixed bug in
mbo::strings::ParseStringwith access past end ofstring_viewfor illegal hex and oct escape sequences (introduced in 0.9.0). - Updated various dependencies.
- Renamed old dependency naming styles to new (matching bzlmod and other deps' needs) styles where possible.
- Removed WORKSPACE support.
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.10.0")Using the provided LLVM
Copy llvm.MODULE.bazel to your repository's root directory and add the following line to your MODULES.bazel file or paste the whole contents into it.
include("//:llvm.MODULE.bazel")For Bazel WORKSPACE
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_helly25_mbo",
url = "https://github.com/helly25/mbo/releases/download/0.10.0/mbo-0.10.0.tar.gz",
sha256 = "52d2cfe222244092688b06793d44dec4f8c551b5589f730bb251bc18b8c06b47",
strip_prefix = "mbo-0.10.0",
)Initializing the required modules
The project depends on some additional external repositories that can be added
manually of by calling the support functions in the user' WORKSPACE file:
load("@com_helly25_mbo//bzl/workspace:load_modules.bzl", "helly25_mbo_load_modules")
helly25_mbo_load_modules()
load("@com_helly25_mbo//bzl/workspace:init_modules.bzl", "helly25_mbo_init_modules")
helly25_mbo_init_modules()Initializing optional extra modules
The project further has some re-usable external components:
load("@com_helly25_mbo//bzl/workspace:load_extras.bzl", "helly25_mbo_load_extras")
helly25_mbo_load_extras() # Adds Hedron + LLVM
load("@com_helly25_mbo//bzl/workspace:init_extras.bzl", "helly25_mbo_init_extras")
helly25_mbo_init_extras() # Init Hedron + LLVM
load("@com_helly25_mbo//bzl/workspace:init_extras_llvm.bzl", "helly25_mbo_init_extras_llvm")
helly25_mbo_init_extras_llvm() # Init LLVM/Part 2What's Changed
- Bump version from 0.9.0 to 0.9.1 by @helly25 in #147
- Improved control for
Stringifywith Json output. by @helly25 in #148 - Added
Stringify::AsJsonPretty()andStringifyOptions::AsJsonPretty(). by @helly25 in #149 - Enable test also for clang. by @helly25 in #150
- Improved Stringify control by @helly25 in #151
- Added New Optional{Ref|DataOrRef|DataOrConstRef} by @helly25 in #152
- Switch shell formatting to shfmt by @helly25 in #153
- Allow key_use_name to take a function (as value). by @helly25 in #154
- Improve StringifyOptions by @helly25 in #155
- Stringify improvements by @helly25 in #156
- Reenable GCC 12 by @helly25 in #157
- Optimize and Cleanup. by @helly25 in #159
- Fixes and cleanup by @helly25 in #160
- More C++20 constexpr by @helly25 in #161
- Improve Stringify by @helly25 in #162
- Improve stringify by @helly25 in #163
- Added ConstructibleFrom by @helly25 in #164
- Added TypedView by @helly25 in #165
- Improve Stringify by @helly25 in #166
- Improved comparison support by @helly25 in #167
- Added IsFloatingPoint by @helly25 in #168
- Update docs by @helly25 in #169
- Improve TypedView by making it itself an actual valid view. by @helly25 in #170
- Implemented ThreeWayComparableTo by @helly25 in #171
- Cleanup by @helly25 in #172
- Fixed bug in
mbo::strings::ParseStringwith access past end ofstring_viewfor illegal hex and oct escape sequences (introduced in 0.9.0). by @helly25 in #173 - Various dependency updates by @helly25 in #174
- Fix workspace builds by @helly25 in #175
- Drop workspace support: It creates too many issues in too many configurations. by @helly25 in #176
- Add Json write support by @helly25 in #177
- Update next version computation by @helly25 in #178
Full Changelog: 0.9.0...0.10.0