* XRPLF/develop: (121 commits)
fix: Re-store nodes missing from both backends during online_delete rotation (7763)
fix: Add amendment sponsor for AccountRootsDeletedClean (7801)
fix: Update base_uint and test changes released in 3.1.3 (7570)
fix: Handle rounding just above kMaxRep more accurately (7389)
fix: Document and assert "after" is never null in invariants (7354)
ci: Run full matrix only on `Ready to merge` or `Full CI build` labeled PRs (7689)
fix: Strengthen Clawback invariant checks for MPT balances (7285)
test: Add unit tests for IP address related functions (7744)
ci: Add Rust to Nix docker image (7571)
docs: Add more information about pre-commit hooks and how to set them up (7802)
test: Add JSON array size tests (7592)
chore: Enable most readability checks (7772)
ci: Do not run conflict checker when label is applied (7774)
chore: Run clang_tidy_check with `pass_filenames: false` from pre-commit (7800)
feat: Add delegate filter param for account_tx RPC (6126)
refactor: Move `jss.h` `include` out of `Indexes.h` (7799)
test: Add tests for check doxygen style (7795)
style: Add pre-commit hook to check doxygen style (7794)
style: Unify style for all Doxygen comments (7776)
fix: Improve Number addition/subtraction rounding (7369)
...
* XRPLF/develop: (46 commits)
test: Add null check unit test for `Oracle::aggregatePrice` (7306)
ci: Patch conan recipe for Nix to be able to use on macOS (7532)
ci: Run sanitizers on release builds too (7527)
fix: Correct hybrid offer deletion on credential expiry (6843)
ci: Make sanitizer flags lists in the profile, not a string (7449)
ci: Make configurations launch on certain event types (7447)
fix: Add [[maybe_unused]] to fix320Enabled for assert=OFF builds (7446)
ci: Add `gh` and `file` to nix packages (7444)
fix: Disable transaction invariants (7409)
perf: Dispatch "hasInvalidAmount()" on type tag instead of dynamic_cast (7402)
refactor: Retire fixUniversalNumber amendment (5962)
test: Do not create data directory for memory databases (7323)
ci: Launch upload-conan-deps on profile change (7442)
fix: Fix Number comparison operator (7406)
feat: Use C++ 23 standard (7431)
refactor: Introduce XRPL_ASSERT_IF for amendment-gated assertions (7378)
refactor: Change config section and key string literals into constants (7095)
refactor: Use `std::move` and `std::string_view` where possible (7424)
refactor: Use const function arguments where possible (7423)
ci: Use XRPLF/actions build-multiarch-image workflow (7428)
...
* XRPLF/develop: (35 commits)
ci: Run PR title and description checks on staging and release branches (7331)
style: Run shfmt on workflows, actions and markdown bash code (7333)
release: Bump version to 3.2.0-rc2 (7348)
refactor: Enable support for `fixCleanup3_2_0` amendment (7347)
release: Bump version to 3.2.0-rc1 (7335)
fix: Fix a rounding error at the `Number::maxRep` cusp (7051)
ci: Only push docker images in XRPLF/rippled (7330)
ci: [DEPENDABOT] bump docker/setup-buildx-action from 4.0.0 to 4.1.0 (7322)
ci: [DEPENDABOT] bump codecov/codecov-action from 6.0.0 to 6.0.1 (7321)
ci: [DEPENDABOT] bump docker/build-push-action from 7.1.0 to 7.2.0 (7320)
ci: [DEPENDABOT] bump docker/metadata-action from 6.0.0 to 6.1.0 (7319)
ci: [DEPENDABOT] bump docker/login-action from 4.1.0 to 4.2.0 (7318)
fix: Update `clang-tidy` to include `src/tests` directory header check (7307)
chore: Pin Python packages for codegen using uv (7329)
style: Use shfmt instead of bashate (7326)
fix: Fix edge-case where vault-depositor may get stuck (7139)
fix: Fix `VaultInvariant` and `VaultDeposit` precision bugs at IOU scale boundaries (7272)
ci: Add clang to nix images (7308)
fix: Include management-fee delta in doOverpayment assertion (7039)
fix: Fix clang-tidy pre-commit hook to locate compile_commands.json from repo root (7325)
...
* XRPLF/develop:
fix: Set default peering port to 2459 (6848)
fix: Use account ledger entry when canceling token escrows (6171)
refactor: Rename `account_` to `accountID_` (7284)
ci: Add Linux package builds (DEB + RPM) to CI (6639)
refactor: Clean up comments post-clang-tidy changes (7283)
release: Set version to 3.3.0-b0 (7280)
refactor: Rename static constants (7120)
refactor: Use `isFlag` where possible instead of bitwise math (7278)
ci: Update XRPLF/actions (7281)
* XRPLF/develop:
ci: Limit nproc on Linux builds temporarily (7132)
fix: Use transaction sequence numbers in permissioned domains (7129)
fix: Improve json parsing of currency issuers (7110)
refactor: Fill txJson based on apiVersion (7109)
fix: Fix touchy "funds are conserved" assertion in LoanPay (6231) (6967)
refactor: Remove erroneous base_uint ctor from container (7123)
ci: Make `Show test failure summary` work with no build dir (7124)
refactor: Replace `featureInvariantsV1_1` with `fixCleanup3_2_0` (7116)
chore: Upgrade mako version (7108)
refactor: Use more scoped enums (7086)
fix: Prevent stale AuthAccounts from persisting after `tfTwoAssetIfEmpty` re-initialization (6996)
* XRPLF/develop:
refactor: Revert certain `Throw`s by `LogicError`s (7036)
ci: Rename print-env -> print-build-env (7061)
fix: Gate -mcmodel flags to x86_64 in sanitizer builds (7049)
fix: Prevents overwriting a bool value in an invariant (6609)
fix: Address code review comments regarding `boost::coroutine2` (6977)
refactor: Apply various minor improvements and corrections (7045)
fix: Store `Delegate` object in delegating and authorized account directories for proper deletion (6681)
ci: Use print-env from XRPLF/actions (7052)
fix: Make assorted RPC fixes (6529)
chore: Enable clang-tidy v21 new checks (7031)
ASAN wasn't able to keep track of `boost::coroutine` context switches, and would lead to many false positives being detected. By switching to `boost::coroutine2` and `ucontext`, ASAN is able to know about the context switches advertised by the `boost::fiber` class, which in turn leads to more cleaner ASAN analysis.
The existing code added the git commit info (`GIT_COMMIT_HASH` and `GIT_BRANCH`) to every file, which was a problem for leveraging `ccache` to cache build objects. This change adds a separate C++ file from where these compile-time variables are propagated to wherever they are needed. A new CMake file is added to set the commit info if the `git` binary is available.
For coverage builds, we try to link against the `gcov` library (specific to the environment). But as macOS doesn't have this library and thus doesn't have the coverage tools to generate reports, the coverage builds on that platform were failing on linking.
We actually don't need to explicitly force this linking, as the `CodeCoverage` file already has correct detection logic (currently on lines 177-193), which is invoked when the `--coverage` flag is provided:
* AppleClang: Uses `xcrun -f llvm-cov` to set `GCOV_TOOL="llvm-cov gcov"`.
* Clang: Finds `llvm-cov` to set `GCOV_TOOL="llvm-cov gcov"`.
* GCC: Finds `gcov` to set `GCOV_TOOL="gcov"`.
The `GCOV_TOOL` is then passed to `gcovr` on line 416, so the correct tool is used for processing coverage data.
This change therefore removes the `gcov` suffix from lines 473 and 475 in the `CodeCoverage.cmake` file.
This change modularizes the `WalletDB` and `Manifest`. Note that the wallet db has nothing to do with account wallets and it stores node configuration, which is why it depends on the manifest code.
In certain cases, such as when modifying headers used by many compilation units, performing a unity build is slower than when performing a regular build with `ccache` enabled. There is also a benefit to a unity build in that it can detect things such as macro redefinitions within the group of files that are compiled together as a unit. This change therefore restores the ability to perform unity builds. However, instead of running every configuration with and without unity enabled, it is now only enabled for a single configuration to maintain lower computational use.
As part of restoring the code, it became clear that currently two configurations have coverage enabled, since the check doesn't focus specifically on Debian Bookworm so it also applies to Debian Trixie. This has been fixed too in this change.
Unity builds were intended to speed up builds, by bundling multiple files into compilation units. However, now that ccache is available on all platforms, there is no need for unity builds anymore, as ccache stores compiled individual build objects for reuse. This change therefore removes the ability to make unity builds.
This change adds `cmake-format` as. a pre-commit hook. The style file closely matches that in Clio, and they will be made to be equivalent over time. For now, some files have been excluded, as those need some manual adjustments, which will be done in future changes.
There were a few uninitialized variables in CMake files. This change will make sure we always check if a variable has been initialized before using them, or in come cases initialize them by default. This change will raise an error on CI if a developer introduced an uninitialized variable in CMake files.
This change adds support for sanitizer build options in CI builds workflow. Currently `asan+ubsan` is enabled, while `tsan+ubsan` is left disabled as more changes are required.