Releases: helly25/mbo
0.9.0
Version 0.9.0
Changelog
- Added gmomck-matcher
mbo::testing::EqualsText
which compares text using line by line unified text diff. - Added gmock-matcher-modifier
mbo::testing::WithDropIndent
which modifiesEqualsText
so thatmbo::strings::DropIndent
will be applied to the expected text.
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.9.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.9.0/mbo-0.9.0.tar.gz",
sha256 = "3c856c7f457cec9a59f89c48ff6f26966d6f4ef97a16cf7a96f4e612add6b72e",
strip_prefix = "mbo-0.9.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 2
What's Changed
- Bump version from 0.8.0 to 0.8.1 by @helly25 in #145
- Added gmock-matcher EqualsText by @helly25 in #146
Full Changelog: 0.8.0...0.9.0
0.8.0
Version 0.8.0
Changelog
- Renamed diff tooling options
ignore_space_change
to `ignore_trailing_space. - Renamed
lhs_regex_replace
andrhs_regex_replace
toregex_replace_lhs
andregex_replace_rhs
respectively. - Added
regex_replace_lhs
andregex_replace_rhs
to bzl rules//mbo/diff:diff_test
and//mbo/diff/tests:diff_test_test
. - Renamed
mbo::diff::UnifiedDiff
tombo::diff::Diff
. - Implemented diff algorithm
kDirect
which performs a direct side by side comparison. - Renamed
//mbo/diff/unified_diff(_main).cc/h
to//mbo/diff/diff(_main).cc/h
. - Renamed
//mbo/diff:unified_diff
to//mbo/diff
. - Renamed
unified
tocontext
for flags and attributes. - Reorganized files and rules in directory
mbo/diff
.
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.8.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.8.0/mbo-0.8.0.tar.gz",
sha256 = "d7eb28285e16ca6e5bea9261bad7064b12c457991fbb70f9fd65444649133dae",
strip_prefix = "mbo-0.8.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 2
What's Changed
- Bump version from 0.7.0 to 0.7.1 by @helly25 in #137
- Always process lines. by @helly25 in #138
- Add regex_replace to diff_test by @helly25 in #139
- Shell quoting for diff_test by @helly25 in #140
- Implement direct diff algorithm by @helly25 in #141
- Finish renaming unified_diff to just diff by @helly25 in #142
- Add diff headers to direct algorithm by @helly25 in #143
- Reorg mbo/diff by @helly25 in #144
Full Changelog: 0.7.0...0.8.0
0.7.0
Version 0.7.0
Changelog
- Added caching for unified
mbo::diff::UnifiedDiff
algorithm. - Added
--lhs_regex_replace
and--rhs_regex_replace
flags to//mbo/diff:unified_diff
. - Dropped all
using std::size_t
declarations.
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.7.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.7.0/mbo-0.7.0.tar.gz",
sha256 = "ab19eff848929f97b3a57a04a7121ba914bd49ee4f4142a11a9b6b43abc46fa7",
strip_prefix = "mbo-0.7.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 2
What's Changed
- Bump version from 0.6.0 to 0.6.1 by @helly25 in #129
- Update release scripts by @helly25 in #130
- Fix test - order is unknown. by @helly25 in #132
- Add a new test by @helly25 in #131
- Improve UnifiedDiff by @helly25 in #133
- Use indexed line caches. by @helly25 in #134
- Drop size_t type alias. by @helly25 in #135
- Optimize by @helly25 in #136
Full Changelog: 0.6.0...0.7.0
0.6.0
Version 0.6.0
Changelog
- Moved bashtest out into
@com_helly25_bashtest
and used it from there. - Added dependency on
@com_helly25_bashtest
. - Dropped all remaining bashtest components.
- Added concept
ConstructibleInto
determined whether one type can be constructed from another. Similar tostd::convertible_to
but with the argument order ofstd::constructible_from
.
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.6.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.6.0/mbo-0.6.0.tar.gz",
sha256 = "44ed70cb5094ae6aeba4f80c6bb19ec72140ed9df491e64bf837e428867b35bb",
strip_prefix = "mbo-0.6.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 2
What's Changed
- Bump version to 0.5.1 by @helly25 in #124
- Prepare version 0.6.0 by @helly25 in #125
- Fix copyright lines by @helly25 in #126
- Add changelog to tag messages. by @helly25 in #127
- Add concept ConstructibleInto by @helly25 in #128
Full Changelog: 0.5.0...0.6.0
0.5.0
Version 0.5.0
Changelog
- Added CI config LLVM-20.1.0 for Linux-Arm64 and MacOs-Arm64 platforms.
- Applied DWYU cleanup.
- Added field
mbo::file::GlobOptions::recursive
to select between recursive and flat globbing. - Added function
mbo::file::GlobSplit
that splits a pattern into root and pattern. - Improved program
//mbo/file:glob
to automatically split a single arg pattern. - Added API extension point function
MboTypesStringifyConvert(I, T, V)
which allows to control conversion based on field types via a static call to the owning type, receiving the field index, the object and the field value. - Added (experimental) sh_library bashtest which provides a test runner for complex shell tests involving golden files that provides built-in golden update functionality (see
(. mbo/testing/bashtest.sh --help)
).
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.5.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.5.0/mbo-0.5.0.tar.gz",
sha256 = "aca8b6521609a528b7cb00e01066e31b00abb1119e74de53da69903cbf3b7a28",
)
What's Changed
- Cleanup by @helly25 in #110
- Small CI improvements by @helly25 in #111
- Enable layering_check by @helly25 in #112
- Update actions. by @helly25 in #113
- Improve LLVM-20.1.0 config by @helly25 in #114
- Support /.bzelrc.user iff present by @helly25 in #115
- Root BUILD file must be empty. by @helly25 in #116
- Cleanup by @helly25 in #117
- Added field GlobOptions::recursive by @helly25 in #118
- Improve glob and stringify by @helly25 in #119
- Improve bashtest script by @helly25 in #120
- Improve bashtest.sh and make it public by @helly25 in #121
- Added expect_* functions by @helly25 in #122
- Added bashtest expect_not_contains by @helly25 in #123
Full Changelog: 0.4.3...0.5.0
0.4.4
Version 0.4.4
Changelog
- Added
--config=cpp23
for-std=c++23
to bazelrc and CI testing. - Updated code to comply with current clang-tidy warnings.
- Enabled Bazel layering_check.
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.4.4/mbo-0.4.4.tar.gz",
sha256 = "c2981dd351a7af49176eb00cd8cde33f61b152000199d8d1c2173b6d29d79ead",
)
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.4.4")
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")
What's Changed
- Cleanup by @helly25 in #110
- Small CI improvements by @helly25 in #111
- Enable layering_check by @helly25 in #112
Full Changelog: 0.4.3...0.4.4
0.4.3
Version 0.4.3
Changelog
- Address const-ness issues in constexpr functions found by Clang 20.1.0.
- Drop space in front of string-literal notation found by Clang 20.1.0.
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.4.3/mbo-0.4.3.tar.gz",
sha256 = "f073f2a22547a7cc2bd99dbd66b931b1ed0dce42c383c84e1339003517e01b61",
)
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.4.3")
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")
What's Changed
- Cache naming: Both LLVM and GCC versions need to be part of the cache name. by @helly25 in #106
- Add BCR specific testing to CI. by @helly25 in #107
- Support Clang 20.1.0 by @helly25 in #108
Full Changelog: 0.4.2...0.4.3
0.4.2
Version 0.4.2
Changelog
- Tweaked automated release tooling.
- Use matrix for merge testing that verifies various GCC and Clang setups.
- Fixed
mbo::types::ContainerProxy
for GCC opt builds (issue with aliasing interpretation). - Added
mbo::strings::StripPrefix
andmbo::strings::StripSuffix
for tempstd::string&&
.
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.4.2/mbo-0.4.2.tar.gz",
sha256 = "aebb24c31a6478ef728c31cc3601c2050078ac59a7abb432ef0a049a9efcf5ee",
)
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.4.2")
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")
What's Changed
- Run buildifier and add to pre-commit by @helly25 in #97
- Added ConsumePrefix/Suffix by @helly25 in #98
- Release message by @helly25 in #99
- Create CODE_OF_CONDUCT.md by @helly25 in #100
- Create CONTRIBUTING.md by @helly25 in #101
- Update release tooling by @helly25 in #102
- Tooling updates by @helly25 in #103
- More tooling: Use reusable workflows by @helly25 in #104
- Add setup to clangd.sh by @helly25 in #105
Full Changelog: 0.4.0...0.4.2
0.4.1
Version 0.4.1
Changelog
- Added load statements for all cc_binary, cc_library, cc_test functions in all bazel files.
- Added
mbo::strings::ConsumePrefix
andmbo::strings::ConsumeSuffix
.
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.4.1/mbo-0.4.1.tar.gz",
sha256 = "d0be78bdbd11cbfe3dfe199bb30cc42ecd5e0c51aa6f9219025dc49231065573",
)
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.4.1")
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")
What's Changed
- Run buildifier and add to pre-commit by @helly25 in #97
- Added ConsumePrefix/Suffix by @helly25 in #98
Full Changelog: 0.4.0...0.4.1
0.4.0
Version 0.4.0, see changelog
- Added function
mbo::strings::BigNumber
: Convert integral number to string with thousands separator. - Added function
mbo::strings::BigNumberLen
: Calculate required string length forBigNumer
. - Added glob functionality:
- Added struct
mbo::file::Glob2Re2Options
: Control conversion of a glob pattern into a RE2 pattern. - Added struct
mbo::file::GlobEntry
: Stores data for a single globbed entry (file, dir, etc.). - Added struct
mbo::file::GlobOptions
: Options for functionsGlob2Re2
andGlob2Re2Expression
. - Added enum
mbo::file::GlobEntryAction
: Allows GlobEntryFunc to control further glob progression. - Added type
mbo::file::GlobEntryFunc
: Callback for acceptable glob entries. - Added function
mbo::file::GlobRe2
: Performs recursive glob functionality using a RE2 pattern. - Added function
mbo::file::Glob
: Performs recursive glob functionality using afnmatch
style pattern. - Added program
glob
: A recursive glob, seeglob --help
.
- Added struct
- WORKSPACE support:
- Added rules_python and brought back com_google_protobuf support.
- Fixed
RunfilesDir/OrDie
to use environment variableTEST_WORKSPACE
if present. - Fixed formatting issue with
mbo/types/internal/decompose_count.h
. - Downgraded Clang from 19.1.7 to 19.1.6.
- Updated GitHub workflow to test both Bazel flavors.
- Fixed issue in with struct names generation when compiling with Clang in mode ASAN.
- Added ability for unified_diff tool flag
--strip_file_header_prefix
to accept re2 expressions. - Fixed various issues for bazelmod based builds.
- Improved
mbo::testing::RunfilesDir/OrDie
to support a single param variant that understands bazel labels. Further add support for other repos than the current one by reading the repo mapping. - Fixed
//mbo/file/ini:ini_file_test
to be able to pass when run as remote repository. - Added struct
mbo::types::ContainerProxy
which allows to add container access to other types including smart pointers of containers. - Added struct
mbo::types::OpaquePtr
an opaque alternative tostd::unique_ptr
which works with forward declared types. - Added struct
mbo::types::OpaqueValue
anOpaquePtr
with direct access, comparison and hashing which will not allow a nullptr. - Added struct
mbo::types::OpaqueContainer
anOpaqueValue
with direct container access. - Changed pre-commit to use clang-format 19.1.6.
- Added ability to construct Extended types from conversions (
ConstructFromConversions
). - Removed support for type marker
MboTypesExtendDoNotPrintFieldNames
.
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/archive/refs/tags/0.4.0.tar.gz",
sha256 = "d41695da1f376ed37aff34ac035bb38e66ee157be9a93bf6ce1f1648d19a8f4a",
)
For Bazel MODULES.bazel
bazel_dep(name = "helly25_mbo", version = "0.4.0-rc.1.") # Same as 0.4.0 which has no Bazel module yet.
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")