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-b2 #5249

Closed
wants to merge 21 commits into from
Closed

Proposed 2.4.0-b2 #5249

wants to merge 21 commits into from

Conversation

ximinez
Copy link
Collaborator

@ximinez ximinez commented Jan 16, 2025

High Level Overview of Change

This is a beta for the 2.4.0 release. There was no official "b1" release.

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).

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)
  • A few 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 21 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
---------
Co-authored-by: John Freeman <jfreeman08@gmail.com>
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.
@ximinez ximinez changed the title Proposed 2.4.0-b1 Proposed 2.4.0-b2 Jan 16, 2025
@ximinez
Copy link
Collaborator Author

ximinez commented Jan 23, 2025

Since no 2.4.x betas have been merged to release yet, hotfix 2.3.1 (#5243) will take priority. Once that is released, and reversed merged back to develop, we'll try again with a b3.

@ximinez ximinez closed this Jan 23, 2025
@ximinez ximinez deleted the release-next branch January 23, 2025 01:07
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.