Skip to content

Releases: helly25/mbo

0.9.0

04 Jun 07:11
0.9.0
1c50ead
Compare
Choose a tag to compare

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 modifies EqualsText so that mbo::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

Full Changelog: 0.8.0...0.9.0

0.8.0

05 May 17:23
0.8.0
b5eecc5
Compare
Choose a tag to compare

Version 0.8.0

Changelog

  • Renamed diff tooling options ignore_space_change to `ignore_trailing_space.
  • Renamed lhs_regex_replace and rhs_regex_replace to regex_replace_lhs and regex_replace_rhs respectively.
  • Added regex_replace_lhs and regex_replace_rhs to bzl rules //mbo/diff:diff_test and //mbo/diff/tests:diff_test_test.
  • Renamed mbo::diff::UnifiedDiff to mbo::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 to context 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

Full Changelog: 0.7.0...0.8.0

0.7.0

02 May 16:53
0.7.0
e9a6652
Compare
Choose a tag to compare

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

Full Changelog: 0.6.0...0.7.0

0.6.0

29 Mar 01:34
0.6.0
f276ae7
Compare
Choose a tag to compare

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 to std::convertible_to but with the argument order of std::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

Full Changelog: 0.5.0...0.6.0

0.5.0

23 Mar 18:53
0.5.0
9fe70bb
Compare
Choose a tag to compare

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

Full Changelog: 0.4.3...0.5.0

0.4.4

10 Mar 21:10
0.4.4
3a9632a
Compare
Choose a tag to compare

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

Full Changelog: 0.4.3...0.4.4

0.4.3

05 Mar 13:12
0.4.3
a3ae64d
Compare
Choose a tag to compare

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

04 Mar 18:11
0.4.2
49a9ac4
Compare
Choose a tag to compare

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 and mbo::strings::StripSuffix for temp std::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

Full Changelog: 0.4.0...0.4.2

0.4.1

01 Mar 22:42
33f68b8
Compare
Choose a tag to compare

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 and mbo::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

Full Changelog: 0.4.0...0.4.1

0.4.0

24 Feb 22:07
92d8d92
Compare
Choose a tag to compare

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 for BigNumer.
  • 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 functions Glob2Re2 and Glob2Re2Expression.
    • 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 a fnmatch style pattern.
    • Added program glob: A recursive glob, see glob --help.
  • WORKSPACE support:
    • Added rules_python and brought back com_google_protobuf support.
  • Fixed RunfilesDir/OrDie to use environment variable TEST_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 to std::unique_ptr which works with forward declared types.
  • Added struct mbo::types::OpaqueValue an OpaquePtr with direct access, comparison and hashing which will not allow a nullptr.
  • Added struct mbo::types::OpaqueContainer an OpaqueValue 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")