Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 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
152406b
Merge `ripple/wasmi-host-functions`
kuznetsss Aug 10, 2026
8da36db
feat: Hook up parent_ldgr_time host function
TimothyBanks Aug 10, 2026
6abd492
feat: Hook up parent_ldgr_hash host function
TimothyBanks Aug 10, 2026
9a6efde
feat: Hook up base_fee host function
TimothyBanks Aug 10, 2026
accd0ca
feat: Hook up amendment_enabled host function
TimothyBanks Aug 10, 2026
3a2cf64
feat: Hook up cache_le host function
TimothyBanks Aug 10, 2026
1656a19
feat: Hook up tx_field host function
TimothyBanks Aug 10, 2026
ce5e724
feat: Hook up le_field host function
TimothyBanks Aug 10, 2026
881d040
feat: Hook up tx_inner host function
TimothyBanks Aug 10, 2026
fe325ea
feat: Hook up home_le_inner host function
TimothyBanks Aug 10, 2026
8cae773
feat: Hook up le_inner host function
TimothyBanks Aug 10, 2026
93db40a
feat: Hook up tx_arr_len host function
TimothyBanks Aug 10, 2026
c619ae0
feat: Hook up home_le_arr_len host function
TimothyBanks Aug 10, 2026
930ba88
feat: Hook up le_arr_len host function
TimothyBanks Aug 10, 2026
1d9485c
feat: Hook up tx_inner_arr_len host function
TimothyBanks Aug 10, 2026
e23f8e2
feat: Hook up home_le_inner_arr_len host function
TimothyBanks Aug 10, 2026
229377a
feat: Hook up le_inner_arr_len host function
TimothyBanks Aug 10, 2026
3caaecf
feat: Hook up check_sig host function
TimothyBanks Aug 10, 2026
17fb378
feat: Hook up accountroot_id host function
TimothyBanks Aug 10, 2026
13196b8
feat: Hook up amm_id host function
TimothyBanks Aug 10, 2026
e60029d
feat: Hook up check_id host function
TimothyBanks Aug 10, 2026
9c423d2
feat: Hook up credential_id host function
TimothyBanks Aug 10, 2026
3e113db
feat: Hook up delegate_id host function
TimothyBanks Aug 10, 2026
a321a5d
feat: Hook up deposit_preauth_id host function
TimothyBanks Aug 11, 2026
c5605b6
feat: Hook up did_id host function
TimothyBanks Aug 11, 2026
78c8128
feat: Hook up escrow_id host function
TimothyBanks Aug 11, 2026
5062366
feat: Hook up trustline_id host function
TimothyBanks Aug 11, 2026
c1008c4
feat: Hook up mpt_issuance_id host function
TimothyBanks Aug 11, 2026
2821cc3
feat: Hook up mptoken_id host function
TimothyBanks Aug 11, 2026
f52eb08
feat: Hook up nft_offer_id host function
TimothyBanks Aug 11, 2026
5f6f367
feat: Hook up oracle_id host function
TimothyBanks Aug 11, 2026
58e47b0
feat: Hook up oracle_id host function
TimothyBanks Aug 11, 2026
ca560ed
feat: Hook up paychan_id host function
TimothyBanks Aug 11, 2026
6eab6c7
feat: Hook up permissioned_domain_id host function
TimothyBanks Aug 11, 2026
d6a66d7
feat: Hook up signers_id host function
TimothyBanks Aug 11, 2026
7e7014c
feat: Hook up ticket_id host function
TimothyBanks Aug 11, 2026
98abdef
feat: Hook up vault_id host function
TimothyBanks Aug 11, 2026
98cf3a0
feat: Hook up set_data host function
TimothyBanks Aug 11, 2026
7d52867
feat: Hook up nft_uri, nft_issuer, nft_taxon, nft_flags, nft_xfer_fee…
TimothyBanks Aug 11, 2026
91a23fc
Update trace method
kuznetsss Aug 11, 2026
454c651
Move macros in a separate file
kuznetsss Aug 11, 2026
97f3286
feat: Hook up float host functions
TimothyBanks Aug 11, 2026
9552637
Update error codes
kuznetsss Aug 11, 2026
0749043
feat: Clean up a few errant host function signatures
TimothyBanks Aug 11, 2026
c5d25e3
feat: Self code review changes
TimothyBanks Aug 11, 2026
ecc2f07
Add internal fatal error code
kuznetsss Aug 11, 2026
4526a97
Fix clang-tidy issues
kuznetsss Aug 11, 2026
00dd93e
feat: Self code review changes
TimothyBanks Aug 11, 2026
9524502
feat: Self code review changes
TimothyBanks Aug 11, 2026
9288432
feat: Self code review changes
TimothyBanks Aug 11, 2026
b67a896
fix: Merge upstream branch
TimothyBanks Aug 11, 2026
694fbb7
fix: Merge upstream branch
TimothyBanks Aug 11, 2026
e91a30d
fix: Merge upstream branch
TimothyBanks Aug 11, 2026
ecbfb8e
Merge pull request #5 from XRPLF/Wasm-vm-redesign-host-functions
kuznetsss Aug 12, 2026
00488bf
Check total
kuznetsss Aug 12, 2026
2605b4a
Fix clippy and doc test errors
kuznetsss Aug 12, 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 @@ -139,7 +140,9 @@ words:
- hwaddress
- hwrap
- ifndef
- impls
- inequation
- initialiser
- insuf
- insuff
- invasively
Expand Down Expand Up @@ -247,6 +250,7 @@ words:
- pyparsing
- qalloc
- qbsprofile
- qself
- queuable
- Raphson
- rcflags
Expand Down Expand Up @@ -311,6 +315,7 @@ words:
- summands
- superpeer
- superpeers
- Swatinem
- takergets
- takerpays
- ters
Expand Down Expand Up @@ -339,6 +344,7 @@ words:
- unflatten
- unfund
- unimpair
- unmetered
- unroutable
- unscalable
- unserviced
Expand All @@ -359,6 +365,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 @@ -85,6 +85,7 @@ jobs:
.github/workflows/reusable-check-autogen.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 @@ -95,6 +96,7 @@ jobs:
cfg/**
cmake/**
conan/**
crates/**
external/**
include/**
src/**
Expand Down Expand Up @@ -168,6 +170,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 @@ -211,6 +220,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 @@ -23,6 +23,7 @@ on:
- ".github/workflows/reusable-check-autogen.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 @@ -33,6 +34,7 @@ on:
- "cfg/**"
- "cmake/**"
- "conan/**"
- "crates/**"
- "external/**"
- "include/**"
- "src/**"
Expand Down Expand Up @@ -96,6 +98,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
11 changes: 10 additions & 1 deletion .github/workflows/reusable-build-test-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,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 @@ -289,6 +289,14 @@ jobs:
run: |
./xrpld --version | grep libvoidstar

- name: Run Rust tests
if: ${{ !inputs.build_only }}
working-directory: crates
# `xrpl-wasm-vm-ffi` is left out on Windows: its tests link as an executable, and
# MSVC - unlike the Unix linkers - will not dead-strip the never-called cxx wrappers
# whose C++ shims only the CMake build defines. The other runners cover these tests.
run: cargo nextest run --workspace --all-features --locked --no-tests=warn ${{ runner.os == 'Windows' && '--exclude xrpl-wasm-vm-ffi' || '' }}

- 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 +402,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