* upstream/develop: (518 commits)
Set version to 2.4.0-b1
fix: Add header for set_difference (5197)
fix: allow overlapping types in `Expected` (5218)
Add MPTIssue to STIssue (5200)
Antithesis instrumentation improvements (5213)
Enforce levelization in libxrpl with CMake (5111)
refactor: clean up `LedgerEntry.cpp` (5199)
test: Add more test cases for Base58 parser (5174)
test: Check for some unlikely null dereferences in tests (5004)
Add Antithesis intrumentation (5042)
Set version to 2.3.0
refactor(AMMClawback): move tfClawTwoAssets check (5201)
Add a new serialized type: STNumber (5121)
fix: check for valid ammID field in amm_info RPC (5188)
Set version to 2.3.0-rc2
fix: include `index` in `server_definitions` RPC (5190)
Fix ledger_entry crash on invalid credentials request (5189)
Set version to 2.3.0-rc1
Replace Uint192 with Hash192 in server_definitions response (5177)
Fix potential deadlock (5124)
...
Replace Issue in STIssue with Asset. STIssue with MPTIssue is only used in MPT tests.
Will be used in Vault and in transactions with STIssue fields once MPT is integrated into DEX.
* Rename ASSERT to XRPL_ASSERT
* Upgrade to Anthithesis SDK 0.4.4, and use new 0.4.4 features
* automatic cast to bool, like assert
* Add instrumentation workflow to verify build with instrumentation enabled
Adds two CMake functions:
* add_module(library subdirectory): Declares an OBJECT "library" (a CMake abstraction for a collection of object files) with sources from the given subdirectory of the given library, representing a module. Isolates the module's headers by creating a subdirectory in the build directory, e.g. .build/tmp123, that contains just a symlink, e.g. .build/tmp123/basics, to the module's header directory, e.g. include/xrpl/basics, in the source directory, and putting .build/tmp123 (but not include/xrpl) on the include path of the module sources. This prevents the module sources from including headers not explicitly linked to the module in CMake with target_link_libraries.
* target_link_modules(library scope modules...): Links the library target to each of the module targets, and removes their sources from its source list (so they are not compiled and linked twice).
Uses these functions to separate and explicitly link modules in libxrpl:
Level 01: beast
Level 02: basics
Level 03: json, crypto
Level 04: protocol
Level 05: resource, server
* Copy Antithesis SDK version 0.4.0 to directory external/
* Add build option `voidstar` to enable instrumentation with Antithesis SDK
* Define instrumentation macros ASSERT and UNREACHABLE in terms of regular C assert
* Replace asserts with named ASSERT or UNREACHABLE
* Add UNREACHABLE to LogicError
* Document instrumentation macros in CONTRIBUTING.md