Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
50244a8
chore: Update default values of base and owner reserve to 1/0.2 (#6382)
xVet May 6, 2026
a4720d0
chore: Mark empty transactor invariants as future work (#7080)
Tapanito May 6, 2026
fcae50a
chore: Update conan.lock (#7081)
mathbunnyru May 6, 2026
13b72a4
chore: Update zlib to 1.3.2, sqlite to 3.53.0, libarchive to 3.8.7, j…
mathbunnyru May 6, 2026
8e2aa33
chore: Add IWYU pragma for `boost::optional` to fix clang-tidy (#7088)
mathbunnyru May 6, 2026
8c71ec8
fix: Restore clang-tidy change to section name in config (#7091)
bthomee May 7, 2026
d67e061
chore: Upgrade Clang sanitizer to `clang-22` and switch `gcc-15` sani…
Bronek May 7, 2026
d6c4e6c
fix: Cap the base fee for LoanPay (#6969) (#6970)
ximinez May 7, 2026
af89854
fix: Stop tx processing if failed to delete expired credentials (#671…
oleks-rip May 7, 2026
7afdd71
chore: More fixes for bad renames (#7092)
godexsoft May 7, 2026
4a9f72c
style: Make .clang-tidy style a bit more consistent with Clio (#7096)
mathbunnyru May 7, 2026
4f8142f
fix: Numerically-stable (1+r)^n-1 in computePaymentFactor (#7033)
Tapanito May 7, 2026
779b49c
fix: Prevent stale AuthAccounts from persisting after `tfTwoAssetIfEm…
Kassaking7 May 9, 2026
cdee9a6
refactor: Use more scoped enums (#7086)
godexsoft May 11, 2026
a761b0d
chore: Upgrade mako version (#7108)
a1q123456 May 11, 2026
c4c95db
refactor: Replace `featureInvariantsV1_1` with `fixCleanup3_2_0` (#7116)
mvadari May 12, 2026
aa55392
ci: Make `Show test failure summary` work with no build dir (#7124)
mathbunnyru May 12, 2026
6c2266c
refactor: Remove erroneous base_uint ctor from container (#7123)
mathbunnyru May 12, 2026
8012b5d
fix: Fix touchy "funds are conserved" assertion in LoanPay (#6231) (#…
ximinez May 12, 2026
45b1f4d
refactor: Fill txJson based on apiVersion (#7109)
rrmanukyan May 12, 2026
448ae8b
fix: Improve json parsing of currency issuers (#7110)
kuznetsss May 12, 2026
590906d
fix: Use transaction sequence numbers in permissioned domains (#7129)
oleks-rip May 12, 2026
170eb5e
ci: Limit nproc on Linux builds temporarily (#7132)
legleux May 12, 2026
6340c98
feat: Enable and rename fixSecurity3_1_3 to fixCleanup3_1_3 (#7128)
Tapanito May 13, 2026
e8bdbaa
refactor: Limit JSON array size (#7112)
godexsoft May 13, 2026
411286c
refactor: Prevent dry-run transactions from being queued (#92) (#7131)
vlntb May 13, 2026
4ad94ae
refactor: Use named constant for leaf item size (#39) (#7130)
vlntb May 13, 2026
c8b42a7
refactor: Improve RPC variable naming and handling (#7103)
kuznetsss May 13, 2026
648ec74
feat: Implement nix-based Dockerfile for CI (#7083)
mathbunnyru May 13, 2026
977e5a7
fix: Check network ID in `transactionSignFor` (#7102)
kuznetsss May 13, 2026
aa5e4ff
refactor: Improve Forwarded header field parsing (#7126)
lmaisons May 13, 2026
551f3c3
refactor: Move unhex lookup table out of function (#7104)
kuznetsss May 13, 2026
d4ebd6a
fix: Backport Permissioned Domains fixes (#7016)
oleks-rip May 13, 2026
2f65cb5
ci: Add Conan retry (#7147)
legleux May 13, 2026
afbccf9
chore: Consolidate fix amendments (#7134)
bthomee May 13, 2026
bff5929
sponsor AccountID -> sponsorSle
oleks-rip May 14, 2026
8be59e9
Merge remote-tracking branch 'ripple/develop' into spns5
oleks-rip May 14, 2026
0d514e3
Merge fixes
oleks-rip May 14, 2026
cce4cfe
feat: Add verify_endpoints to help local peer network development (#7…
a1q123456 May 14, 2026
15b3ed1
ci: Update XRPLF/actions (#7281)
mathbunnyru May 15, 2026
028f0cb
refactor: Use `isFlag` where possible instead of bitwise math (#7278)
mvadari May 15, 2026
5b6e8b6
refactor: Rename static constants (#7120)
godexsoft May 15, 2026
6809690
release: Set version to 3.3.0-b0 (#7280)
ximinez May 15, 2026
c7ecfc6
refactor: Clean up comments post-clang-tidy changes (#7283)
mvadari May 15, 2026
93836f2
ci: Add Linux package builds (DEB + RPM) to CI (#6639)
legleux May 16, 2026
ad7232c
refactor: Rename `account_` to `accountID_` (#7284)
mvadari May 18, 2026
ad3d172
fix: Use account ledger entry when canceling token escrows (#6171)
dangell7 May 18, 2026
7ccbaec
Merge remote-tracking branch 'ripple/develop' into spns5
oleks-rip May 19, 2026
1e45d36
fix: Set default peering port to 2459 (#6848)
shortthefomo May 19, 2026
8d1083e
ci: Only run reusable package in public repos (#7293)
mathbunnyru May 19, 2026
fa6e21e
Merge fixes
oleks-rip May 19, 2026
d9a3af8
ci: [DEPENDABOT] bump actions/upload-artifact from 7.0.0 to 7.0.1 (#7…
dependabot[bot] May 19, 2026
93ac1aa
fix: Disable unnecessary sanity-check in VaultDeposit (#7288)
Tapanito May 19, 2026
9cb0492
feat: Propagate underlying MPT flags to vault shares (#7077)
Tapanito May 20, 2026
a5d238e
docs: Fix some comments to improve readability (#7122)
box4wangjing May 20, 2026
3e89fbb
Merge remote-tracking branch 'ripp/develop' into spns5
oleks-rip May 20, 2026
ab1c0be
clang-tidy fixes
oleks-rip May 20, 2026
2369c33
Merge remote-tracking branch 'tequ/sponsor' into spns5
oleks-rip May 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
22 changes: 12 additions & 10 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,13 @@ Checks: "-*,
# readability-inconsistent-declaration-parameter-name, # in this codebase this check will break a lot of arg names
# readability-static-accessed-through-instance, # this check is probably unnecessary. it makes the code less readable
# ---

CheckOptions:
bugprone-unsafe-functions.ReportMoreUnsafeFunctions: true
bugprone-unused-return-value.CheckedReturnTypes: ::std::error_code;::std::error_condition;::std::errc

misc-include-cleaner.IgnoreHeaders: ".*/(detail|impl)/.*;.*fwd\\.h(pp)?;time.h;stdlib.h;sqlite3.h;netinet/in\\.h;sys/resource\\.h;sys/sysinfo\\.h;linux/sysinfo\\.h;__chrono/.*;bits/.*;_abort\\.h;boost/uuid/uuid_hash.hpp;boost/beast/core/flat_buffer\\.hpp;boost/beast/http/field\\.hpp;boost/beast/http/dynamic_body\\.hpp;boost/beast/http/message\\.hpp;boost/beast/http/read\\.hpp;boost/beast/http/write\\.hpp;openssl/obj_mac\\.h"

readability-braces-around-statements.ShortStatementLines: 2
readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
readability-identifier-naming.ClassCase: CamelCase
Expand All @@ -165,22 +171,20 @@ CheckOptions:
readability-identifier-naming.EnumCase: CamelCase
readability-identifier-naming.EnumConstantCase: CamelCase
readability-identifier-naming.ScopedEnumConstantCase: CamelCase
readability-identifier-naming.GlobalConstantCase: UPPER_CASE
readability-identifier-naming.GlobalConstantCase: CamelCase
readability-identifier-naming.GlobalConstantPrefix: "k"
readability-identifier-naming.GlobalVariableCase: CamelCase
readability-identifier-naming.GlobalVariablePrefix: "g"
readability-identifier-naming.ConstexprFunctionCase: camelBack
readability-identifier-naming.ConstexprMethodCase: camelBack
readability-identifier-naming.ClassMethodCase: camelBack
readability-identifier-naming.ClassMemberCase: camelBack
readability-identifier-naming.ClassConstantCase: UPPER_CASE
readability-identifier-naming.ClassConstantCase: CamelCase
readability-identifier-naming.ClassConstantPrefix: "k"
readability-identifier-naming.StaticConstantCase: UPPER_CASE
readability-identifier-naming.StaticConstantCase: CamelCase
readability-identifier-naming.StaticConstantPrefix: "k"
readability-identifier-naming.StaticVariableCase: UPPER_CASE
readability-identifier-naming.StaticVariablePrefix: "k"
readability-identifier-naming.ConstexprVariableCase: UPPER_CASE
readability-identifier-naming.ConstexprVariablePrefix: "k"
readability-identifier-naming.StaticVariableCase: camelBack
readability-identifier-naming.ConstexprVariableCase: camelBack
readability-identifier-naming.LocalConstantCase: camelBack
readability-identifier-naming.LocalVariableCase: camelBack
readability-identifier-naming.TemplateParameterCase: CamelCase
Expand All @@ -191,9 +195,7 @@ CheckOptions:
readability-identifier-naming.ProtectedMemberSuffix: _
readability-identifier-naming.PublicMemberSuffix: ""
readability-identifier-naming.GlobalFunctionIgnoredRegexp: "^(to_string|hash_append|tuple_hash)$"
bugprone-unsafe-functions.ReportMoreUnsafeFunctions: true
bugprone-unused-return-value.CheckedReturnTypes: ::std::error_code;::std::error_condition;::std::errc
misc-include-cleaner.IgnoreHeaders: ".*/(detail|impl)/.*;.*fwd\\.h(pp)?;time.h;stdlib.h;sqlite3.h;netinet/in\\.h;sys/resource\\.h;sys/sysinfo\\.h;linux/sysinfo\\.h;__chrono/.*;bits/.*;_abort\\.h;boost/uuid/uuid_hash.hpp;boost/beast/core/flat_buffer\\.hpp;boost/beast/http/field\\.hpp;boost/beast/http/dynamic_body\\.hpp;boost/beast/http/message\\.hpp;boost/beast/http/read\\.hpp;boost/beast/http/write\\.hpp;openssl/obj_mac\\.h"

HeaderFilterRegex: '^.*/(test|xrpl|xrpld)/.*\.(h|hpp|ipp)$'
ExcludeHeaderFilterRegex: '^.*/protocol_autogen/.*\.(h|hpp)$'
WarningsAsErrors: "*"
2 changes: 1 addition & 1 deletion .github/scripts/rename/config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ ${SED_COMMAND} -i 's@ripple/@xrpld/@g' src/test/core/Config_test.cpp
${SED_COMMAND} -i 's/Rippled/File/g' src/test/core/Config_test.cpp

# Restore the old config file name in the code that maintains support for now.
${SED_COMMAND} -i 's/kCONFIG_LEGACY_NAME = "xrpld.cfg"/kCONFIG_LEGACY_NAME = "rippled.cfg"/g' src/xrpld/core/detail/Config.cpp
${SED_COMMAND} -i 's/kConfigLegacyName = "xrpld.cfg"/kConfigLegacyName = "rippled.cfg"/g' src/xrpld/core/detail/Config.cpp

# Restore an URL.
${SED_COMMAND} -i 's/connect-your-xrpld-to-the-xrp-test-net.html/connect-your-rippled-to-the-xrp-test-net.html/g' cfg/xrpld-example.cfg
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/rename/docs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ ${SED_COMMAND} -i 's/www.ripple.com/www.xrpl.org/g' src/test/protocol/Seed_test.
# Restore specific changes.
${SED_COMMAND} -i 's@b5efcc/src/xrpld@b5efcc/src/ripple@' include/xrpl/protocol/README.md
${SED_COMMAND} -i 's/dbPrefix_ = "xrpldb"/dbPrefix_ = "rippledb"/' src/xrpld/app/misc/SHAMapStoreImp.h # cspell: disable-line
${SED_COMMAND} -i 's/kCONFIG_LEGACY_NAME = "xrpld.cfg"/kCONFIG_LEGACY_NAME = "rippled.cfg"/' src/xrpld/core/detail/Config.cpp
${SED_COMMAND} -i 's/kConfigLegacyName = "xrpld.cfg"/kConfigLegacyName = "rippled.cfg"/' src/xrpld/core/detail/Config.cpp

popd
echo "Renaming complete."
90 changes: 62 additions & 28 deletions .github/scripts/strategy-matrix/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,32 @@ class Config:
"""


def generate_strategy_matrix(all: bool, config: Config) -> list:
def build_config_name(os_entry: dict[str, str], platform: str, build_type: str) -> str:
parts = [os_entry["distro_name"]]
for key in ("distro_version", "compiler_name", "compiler_version"):
if value := os_entry[key]:
parts.append(value)
parts.append("arm64" if "arm64" in platform else "amd64")
parts.append(build_type.lower())
return "-".join(parts)


def generate_packaging_matrix(config: Config) -> list[dict]:
"""Emit one entry per os entry with `package: true`. Architecture is
hardcoded to linux/amd64 here (and the runner is hardcoded at the
workflow level) until arm64 packaging is ready.
"""
return [
{
"artifact_name": f"xrpld-{build_config_name(os, 'linux/amd64', 'Release')}",
"os": os,
}
for os in config.os
if os.get("package", False)
]


def generate_strategy_matrix(all: bool, config: Config) -> list[dict]:
configurations = []
for architecture, os, build_type, cmake_args in itertools.product(
config.architecture, config.os, config.build_type, config.cmake_args
Expand Down Expand Up @@ -72,7 +97,7 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
skip = False
if (
f"{os['compiler_name']}-{os['compiler_version']}" == "gcc-15"
and build_type == "Debug"
and build_type == "Release"
and architecture["platform"] == "linux/amd64"
):
skip = False
Expand All @@ -90,8 +115,9 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
):
cmake_args = f"-DUNIT_TEST_REFERENCE_FEE=1000 {cmake_args}"
skip = False
elif os["distro_version"] == "trixie":
if (
f"{os['compiler_name']}-{os['compiler_version']}" == "clang-20"
f"{os['compiler_name']}-{os['compiler_version']}" == "clang-22"
and build_type == "Debug"
and architecture["platform"] == "linux/amd64"
):
Expand All @@ -100,14 +126,15 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
continue

# RHEL:
# - 9 using GCC 12: Debug on linux/amd64.
# - 9 using GCC 12: Debug and Release on linux/amd64
# (Release is required for RPM packaging).
# - 10 using Clang: Release on linux/amd64.
if os["distro_name"] == "rhel":
skip = True
if os["distro_version"] == "9":
if (
f"{os['compiler_name']}-{os['compiler_version']}" == "gcc-12"
and build_type == "Debug"
and build_type in ["Debug", "Release"]
and architecture["platform"] == "linux/amd64"
):
skip = False
Expand All @@ -122,7 +149,8 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
continue

# Ubuntu:
# - Jammy using GCC 12: Debug on linux/arm64.
# - Jammy using GCC 12: Debug on linux/arm64, Release on
# linux/amd64 (Release is required for DEB packaging).
# - Noble using GCC 14: Release on linux/amd64.
# - Noble using Clang 18: Debug on linux/amd64.
# - Noble using Clang 19: Release on linux/arm64.
Expand All @@ -135,6 +163,12 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
and architecture["platform"] == "linux/arm64"
):
skip = False
if (
f"{os['compiler_name']}-{os['compiler_version']}" == "gcc-12"
and build_type == "Release"
and architecture["platform"] == "linux/amd64"
):
skip = False
elif os["distro_version"] == "noble":
if (
f"{os['compiler_name']}-{os['compiler_version']}" == "gcc-14"
Expand Down Expand Up @@ -188,8 +222,9 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:

# We skip all clang 20+ on arm64 due to Boost build error.
if (
f"{os['compiler_name']}-{os['compiler_version']}"
in ["clang-20", "clang-21"]
os["compiler_name"] == "clang"
and os["compiler_version"].isdigit()
and int(os["compiler_version"]) >= 20
and architecture["platform"] == "linux/arm64"
):
continue
Expand All @@ -216,17 +251,7 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:

# Generate a unique name for the configuration, e.g. macos-arm64-debug
# or debian-bookworm-gcc-12-amd64-release.
config_name = os["distro_name"]
if (n := os["distro_version"]) != "":
config_name += f"-{n}"
if (n := os["compiler_name"]) != "":
config_name += f"-{n}"
if (n := os["compiler_version"]) != "":
config_name += f"-{n}"
config_name += (
f"-{architecture['platform'][architecture['platform'].find('/')+1:]}"
)
config_name += f"-{build_type.lower()}"
config_name = build_config_name(os, architecture["platform"], build_type)
if "-Dcoverage=ON" in cmake_args:
config_name += "-coverage"
if "-Dunity=ON" in cmake_args:
Expand All @@ -238,13 +263,14 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
# Add Address and UB sanitizers as separate configurations for specific
# bookworm distros. Thread sanitizer is currently disabled (see below).
# GCC-Asan xrpld-embedded tests are failing because of https://github.com/google/sanitizers/issues/856
if os[
"distro_version"
] == "bookworm" and f"{os['compiler_name']}-{os['compiler_version']}" in [
"gcc-15",
"clang-20",
]:
# Add ASAN configuration.
if (
os["distro_version"] == "bookworm"
and f"{os['compiler_name']}-{os['compiler_version']}" == "gcc-15"
) or (
os["distro_version"] == "trixie"
and f"{os['compiler_name']}-{os['compiler_version']}" == "clang-22"
):
# Add ASAN and UBSAN configurations for both gcc-15 and clang-22
configurations.append(
{
"config_name": config_name + "-asan",
Expand All @@ -257,7 +283,6 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
"sanitizers": "address",
}
)
# Add UBSAN configuration.
configurations.append(
{
"config_name": config_name + "-ubsan",
Expand Down Expand Up @@ -330,10 +355,19 @@ def read_config(file: Path) -> Config:
required=False,
type=Path,
)
parser.add_argument(
"-p",
"--packaging",
help="Emit the packaging matrix (derived from the 'package' field on os entries) instead of the build/test matrix.",
action="store_true",
)
args = parser.parse_args()

matrix = []
if args.config is None or args.config == "":
if args.packaging:
config_path = args.config if args.config else THIS_DIR / "linux.json"
matrix += generate_packaging_matrix(read_config(config_path))
elif args.config is None or args.config == "":
matrix += generate_strategy_matrix(
args.all, read_config(THIS_DIR / "linux.json")
)
Expand Down
Loading