Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposed 2.4.0-b3 #5262

Merged
merged 36 commits into from
Jan 30, 2025
Merged

Proposed 2.4.0-b3 #5262

merged 36 commits into from
Jan 30, 2025

Conversation

ximinez
Copy link
Collaborator

@ximinez ximinez commented Jan 30, 2025

High Level Overview of Change

This is a beta for the 2.4.0 release. There were no official "b1" or "b2" releases.

Highlights:

The base branch is release. All releases (including betas) go in release. This PR branch will be pushed directly to release (not squashed or rebased, and not using the GitHub UI).

I'm creating this PR at the same time as #5261. For consistency, #5261 must be merged first.

Context of Change

This introduces

  • Antithesis instrumentation, and a new model for writing (most) asserts.
  • Refactoring the ledger_entry RPC handler.
  • Enforce levelization in libxrpl using CMake.
  • Add MPTIssue to STIssue.
  • DynamicNFT (XLS-46)
  • PermissionedDomains (XLS-80)
  • Configuration to define a [validator_list_threshold] to improve UNL security
  • RPC "simulate" to execute a dry run of a transaction
  • Several fixes and a few unit test changes and additions.

Type of Change

  • Release

API Impact

  • Public API: New feature (new methods and/or new fields)
  • Public API: Breaking change (in general, breaking changes should only impact the next api_version)
  • libxrpl change (any change that may affect libxrpl or dependents of libxrpl)
  • Peer protocol change (must be backward compatible or bump the peer protocol version)

Bronek and others added 30 commits December 3, 2024 14:54
* 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
Refactors LedgerEntry to make it easier to read and understand.
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
* 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
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.
For example, Expected<std::uint32_t, Json::Value>, will now build even though there is animplicit conversion from unsigned int to Json::Value.
Fix `error C2039: 'set_difference': is not a member of 'std'`
The LEDGER_ENTRY macro now takes an additional parameter, which makes it easier to avoid missing including the new field in jss.h and to the list of account_objects/ledger_data filters.
* python (3.13) and cmake (latest)
This Amendment adds functionality to update the URI of NFToken objects as described in the XLS-46d: Dynamic Non Fungible Tokens (dNFTs) spec.
Check to ignore single-line comments during dependency analysis.
* Resolves an issue introduced in #5111, which inadvertently removed the
  -Wno-maybe-uninitialized compiler option from some xrpl.libxrpl
  modules. This resulted in new "may be used uninitialized" build
  warnings, first noticed in the "protocol" module. When compiling with
  derr=TRUE, those warnings became errors, which made the build fail.
* Github CI actions will build with the assert and werr options turned
  on. This will cause CI jobs to fail if a developer introduces a new
  compiler warning, or causes an assert to fail in release builds.
* Includes the OS and compiler version in the linux dependencies jobs in
  the "check environment" step.
* Translates the `unity` build option into `CMAKE_UNITY_BUILD` setting.
)

Update errors for parsing permissioned domains in the LedgerEntry handler to make them consistent with other parsers.
* Has more steps, but allows merges to develop to continue when a
  beta / RC is pending, increasing developer velocity.
* Add a CI job to check that no reverse merges have been missed.
* Add some useful scripts in bin/git:
  * Set up upstreams as expected for safer pushes
  * Squash a bunch of branches
  * Set the version number
* One hits the global cache, one does not.
* Also some extra checking.

Co-authored-by: Bronek Kozicki <[email protected]>
…5240)

* Debug builds do not run tests, because they take too long.
oleks-rip and others added 6 commits January 28, 2025 10:45
- Add retries for rpc client
- Add dynamic port allocation for rpc servers
- Spec: https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0069d-simulate
- Also update signing methods to autofill fees better and properly handle transactions that require a non-standard fee.
Hotfix: version 2.3.1
  Reduce the peer charges for well-behaved peers
  Update conan in the "nix" CI jobs
@ximinez ximinez added Blocked and removed Blocked labels Jan 30, 2025
@ximinez ximinez merged commit 1b75dc8 into release Jan 30, 2025
71 of 74 checks passed
@ximinez ximinez deleted the release-next branch January 30, 2025 21:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.