Skip to content
Open
Show file tree
Hide file tree
Changes from 58 commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
ffc5579
Add rust interop PoC
kuznetsss Apr 27, 2026
5fdedd7
Minor improvements
kuznetsss Apr 28, 2026
d009ef2
More improvements
kuznetsss Apr 29, 2026
abb2ef3
Try fixing linkage
kuznetsss Apr 29, 2026
8bb8c3b
Temporarily disable linkage check
kuznetsss Apr 29, 2026
175259d
Try to fix windows
kuznetsss Apr 29, 2026
bc483b2
Another try to fix windows
kuznetsss Apr 29, 2026
5be406e
Add expample of panic handling
kuznetsss Apr 29, 2026
1dce793
Merge develop
kuznetsss May 14, 2026
b5990be
Merge develop
kuznetsss Jun 18, 2026
465fa8e
Add rust to CI
kuznetsss Jun 18, 2026
4277c80
Merge branch 'develop' into Rust_integration
kuznetsss Jul 9, 2026
35583fc
Merge branch 'develop' into Rust_integration
kuznetsss Jul 20, 2026
aeee77f
Update docker image
kuznetsss Jul 20, 2026
012f894
Merge develop
kuznetsss Jul 23, 2026
7a3bd8a
Update CI image hashes
kuznetsss Jul 23, 2026
ab97f4b
Fix build and exclue generated code from clang-tidy
kuznetsss Jul 24, 2026
fcf376d
Merge develop
kuznetsss Jul 24, 2026
45e3d3f
Run pre-commit
kuznetsss Jul 24, 2026
1b52b65
Merge branches
kuznetsss Jul 24, 2026
11fd30b
Add empty crates
kuznetsss Jul 24, 2026
b7059de
Remove wasmi dependency
kuznetsss Jul 24, 2026
55911cf
Merge branch 'develop' into Rust_integration
kuznetsss Jul 27, 2026
abcdeab
Update ci image
kuznetsss Jul 27, 2026
f458c0f
Merge branch 'develop' into Rust_integration
kuznetsss Jul 27, 2026
7ebd92a
Implementing macro
kuznetsss Jul 24, 2026
7915202
Run pre-commit
kuznetsss Jul 27, 2026
be3d98e
Fix codecov settings
kuznetsss Jul 27, 2026
c4ce52c
Moved HostFunctionsInput into a separte file
kuznetsss Jul 28, 2026
94ed8e2
Finish host function macro
kuznetsss Jul 28, 2026
641ecb4
Fix bugs, add tests, improve docs
kuznetsss Jul 28, 2026
d8d1ec4
WIP
kuznetsss Jul 28, 2026
2cc8b87
Add self to host functions trat
kuznetsss Jul 29, 2026
9e28519
Move HostFnSpec out of macro
kuznetsss Jul 29, 2026
14e7dea
WIP
kuznetsss Jul 29, 2026
be7532e
Move output into params. Now rust code compiles
kuznetsss Jul 29, 2026
011235f
Writing tests for vm
kuznetsss Jul 29, 2026
b61b18a
Trap on critical errors
kuznetsss Jul 30, 2026
ed6f0f3
Don't charge for reading in host functions
kuznetsss Jul 30, 2026
25afc04
More fixes
kuznetsss Jul 30, 2026
041869f
Search memory in exports. Cache memory
kuznetsss Jul 30, 2026
ef0b5dd
Update doc
kuznetsss Jul 30, 2026
e484a29
Change tmp buffer to output and make it global
kuznetsss Aug 3, 2026
047a3f5
Update docs
kuznetsss Aug 3, 2026
0df034a
Add Region
kuznetsss Aug 3, 2026
0bf4739
Implement ffi and host functions bindings
kuznetsss Aug 3, 2026
f2271ec
Split design doc
kuznetsss Aug 4, 2026
8ecb77d
Add check to vm
kuznetsss Aug 4, 2026
5b2fc95
Add preflight to c++ code
kuznetsss Aug 4, 2026
f8f8a6e
Merge branch 'develop' into Rust_integration
kuznetsss Aug 4, 2026
3f159d6
Fixes
kuznetsss Aug 4, 2026
9949675
Merge 'ripple/wasmi-host-functions'
kuznetsss Aug 4, 2026
eb946d2
Merge 'Rust_integration'
kuznetsss Aug 4, 2026
6c02c45
Clean up
kuznetsss Aug 4, 2026
ffb2d37
Pre-commit and removed implementation docs
kuznetsss Aug 4, 2026
7f9ece3
Fixed review comments
kuznetsss Aug 6, 2026
8f0eff4
Bring tests back
kuznetsss Aug 7, 2026
ba7bf92
Fix build
kuznetsss Aug 7, 2026
6bc7a9a
Fix clang-tidy errors
kuznetsss Aug 7, 2026
b5a90e7
Fix build on windows
kuznetsss Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion .codecov.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,32 @@
codecov:
require_ci_to_pass: true
# The C++ and Rust uploads land minutes apart; without this gate Codecov
# publishes a near-zero total from whichever one arrives first.
notify:
after_n_builds: 2
wait_for_ci: true

comment:
behavior: default
layout: reach,diff,flags,tree,reach
show_carryforward_flags: false
show_carryforward_flags: true
after_n_builds: 2

# C++ and Rust coverage upload from independent workflows under the `cpp` and
# `rust` flags; carryforward keeps one language's total when only the other reran.
flag_management:
default_rules:
carryforward: true
individual_flags:
- name: cpp
carryforward: true
paths:
- include/
- src/
- name: rust
carryforward: true
paths:
- crates/

coverage:
range: "70..85"
Expand Down
9 changes: 8 additions & 1 deletion .cspell.config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ ignorePaths:
- cmake/**
- LICENSE.md
- .clang-tidy
- src/test/app/wasm_fixtures/*.c
language: en
allowCompoundWords: true # TODO (#6334)
ignoreRandomStrings: true
Expand Down Expand Up @@ -105,6 +104,7 @@ words:
- deleteme
- demultiplexer
- deserializaton
- desugars
- desync
- desynced
- determ
Expand All @@ -130,6 +130,7 @@ words:
- gcov
- gcovr
- ghead
- gmock
- Gnutella
- godexsoft
- gpgcheck
Expand All @@ -138,7 +139,9 @@ words:
- hwaddress
- hwrap
- ifndef
- impls
- inequation
- initialiser
- insuf
- insuff
- invasively
Expand Down Expand Up @@ -244,6 +247,7 @@ words:
- pyparsing
- qalloc
- qbsprofile
- qself
- queuable
- Raphson
- rcflags
Expand Down Expand Up @@ -308,6 +312,7 @@ words:
- summands
- superpeer
- superpeers
- Swatinem
- takergets
- takerpays
- ters
Expand Down Expand Up @@ -336,6 +341,7 @@ words:
- unflatten
- unfund
- unimpair
- unmetered
- unroutable
- unscalable
- unserviced
Expand All @@ -356,6 +362,7 @@ words:
- vfalco
- vinnie
- wasmi
- Werror
- wextra
- wptr
- writeme
Expand Down
17 changes: 17 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,20 @@ updates:
github-actions:
patterns:
- "*"

- package-ecosystem: cargo
directory: /crates
schedule:
interval: weekly
day: monday
time: "04:00"
timezone: Etc/GMT
commit-message:
prefix: "ci: [DEPENDABOT] "
target-branch: develop
open-pull-requests-limit: 10
# Bundle all Rust dependency bumps into a single PR per run to reduce noise.
groups:
rust-dependencies:
patterns:
- "*"
84 changes: 84 additions & 0 deletions .github/workflows/cargo-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# This workflow audits the Rust dependencies in crates/ for known security
# advisories using cargo-audit. It runs on a weekly schedule, whenever the
# dependency graph changes (Cargo.lock / Cargo.toml), and on demand. On a
# scheduled run, a failure opens a tracking issue (matching the clang-tidy
# workflow's behavior); on push/PR it simply fails the check.
name: Cargo audit

on:
schedule:
# 06:32 UTC every Monday.
- cron: "32 6 * * 1"
push:
branches:
- "develop"
- "release*"
paths:
- "crates/**/Cargo.toml"
- "crates/Cargo.lock"
- ".github/workflows/cargo-audit.yml"
pull_request:
paths:
- "crates/**/Cargo.toml"
- "crates/Cargo.lock"
- ".github/workflows/cargo-audit.yml"
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash
working-directory: crates

permissions:
contents: read

jobs:
audit:
runs-on: ubuntu-latest
container: ghcr.io/xrplf/xrpld/nix-debian:sha-2e25435
permissions:
contents: read
# Needed to open an issue on scheduled failures.
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- name: Run cargo audit
id: audit
continue-on-error: true
run: |
set -o pipefail
cargo audit | tee /tmp/cargo-audit.txt

- name: Prepare issue body
if: ${{ steps.audit.outcome != 'success' && github.event_name == 'schedule' }}
run: |
{
echo "## \`cargo audit\` found advisories"
echo
echo '```'
cat /tmp/cargo-audit.txt
echo '```'
echo
echo "---"
echo "*This issue was automatically created by the cargo-audit workflow.*"
} >/tmp/cargo-audit-issue.md

- name: Create issue
if: ${{ steps.audit.outcome != 'success' && github.event_name == 'schedule' }}
uses: XRPLF/actions/create-issue@2b8bc36af85b88bca0dd7bfac2e2dc05f94ad712
with:
title: "cargo audit found vulnerabilities"
body_file: /tmp/cargo-audit-issue.md
labels: "Bug,Security"

- name: Fail if advisories were found
if: ${{ steps.audit.outcome != 'success' }}
run: |
echo "cargo audit found advisories!"
exit 1
10 changes: 10 additions & 0 deletions .github/workflows/on-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ jobs:
.github/workflows/reusable-build-test.yml
.github/workflows/reusable-clang-tidy.yml
.github/workflows/reusable-package.yml
.github/workflows/reusable-rust.yml
.github/workflows/reusable-strategy-matrix.yml
.github/workflows/reusable-test.yml
.github/workflows/reusable-upload-recipe.yml
Expand All @@ -94,6 +95,7 @@ jobs:
cfg/**
cmake/**
conan/**
crates/**
external/**
include/**
src/**
Expand Down Expand Up @@ -162,6 +164,13 @@ jobs:
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

rust:
needs: should-run
if: ${{ needs.should-run.outputs.go == 'true' }}
uses: ./.github/workflows/reusable-rust.yml
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

package:
needs: [should-run, build-test]
# Packaging consumes the debian/rhel release binaries, which are only built
Expand Down Expand Up @@ -204,6 +213,7 @@ jobs:
- check-rename
- clang-tidy
- build-test
- rust
- package
- upload-recipe
- notify-clio
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/on-trigger.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ on:
- ".github/workflows/reusable-build-test.yml"
- ".github/workflows/reusable-clang-tidy.yml"
- ".github/workflows/reusable-package.yml"
- ".github/workflows/reusable-rust.yml"
- ".github/workflows/reusable-strategy-matrix.yml"
- ".github/workflows/reusable-test.yml"
- ".github/workflows/reusable-upload-recipe.yml"
Expand All @@ -32,6 +33,7 @@ on:
- "cfg/**"
- "cmake/**"
- "conan/**"
- "crates/**"
- "external/**"
- "include/**"
- "src/**"
Expand Down Expand Up @@ -92,6 +94,11 @@ jobs:
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

rust:
uses: ./.github/workflows/reusable-rust.yml
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

upload-recipe:
needs: build-test
# Only run when pushing to the develop branch.
Expand Down
8 changes: 7 additions & 1 deletion .github/workflows/reusable-build-test-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ jobs:
working-directory: ${{ env.BUILD_DIR }}
run: |
ldd ./xrpld
if [ "$(ldd ./xrpld | grep -E '(libstdc\+\+|libgcc)' | wc -l)" -eq 0 ]; then
if [ "$(ldd ./xrpld | grep -E '(libstdc\+\+)' | wc -l)" -eq 0 ]; then
echo 'The binary is statically linked.'
else
echo 'The binary is dynamically linked.'
Expand All @@ -292,6 +292,11 @@ jobs:
run: |
./xrpld --version | grep libvoidstar

- name: Run Rust tests
if: ${{ !inputs.build_only }}
working-directory: crates
run: cargo nextest run --workspace --all-features --locked --no-tests=warn

- name: Run the separate tests
if: ${{ !inputs.build_only }}
working-directory: ${{ runner.os == 'Windows' && format('{0}/{1}', env.BUILD_DIR, inputs.build_type) || env.BUILD_DIR }}
Expand Down Expand Up @@ -394,6 +399,7 @@ jobs:
disable_telem: true
fail_ci_if_error: true
files: ${{ env.BUILD_DIR }}/coverage.xml
flags: cpp
plugins: noop
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
6 changes: 6 additions & 0 deletions .github/workflows/reusable-clang-tidy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,12 @@ jobs:
run: |
ninja -j ${{ steps.nproc.outputs.nproc }} xrpl.libpb

# clang-tidy needs cxxbridge headers generated from Rust crates
- name: Build xrpl_crates
working-directory: ${{ env.BUILD_DIR }}
run: |
ninja -j ${{ steps.nproc.outputs.nproc }} xrpl_crates

- name: Run clang tidy
id: run_clang_tidy
continue-on-error: true
Expand Down
Loading
Loading