Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
c2da6bc
feat: add uniffi feature and type conversions to bindy crate
dkackman Apr 8, 2026
4f9b499
fix: address code quality issues in bindy uniffi feature
dkackman Apr 8, 2026
48063d3
feat: add uniffi feature to chia-sdk-bindings
dkackman Apr 8, 2026
9c0488d
feat: add uniffi type mappings to bindings.json
dkackman Apr 8, 2026
a67f7f8
docs: document async+remote limitation in bindy_uniffi macro
dkackman Apr 8, 2026
521b214
feat: create uniffi crate entry point with alloc implementation
dkackman Apr 8, 2026
3ee6300
fix: remove unused num-bigint dep and document alloc capability gap
dkackman Apr 8, 2026
d69153b
docs: add uniffi README and uniffi.toml config
dkackman Apr 8, 2026
3a0d0d4
docs: explain unsafe_code allow in uniffi entry point
dkackman Apr 8, 2026
2ad7ac3
docs: expand uniffi README with comprehensive build and usage guide
dkackman Apr 8, 2026
770106a
generate
dkackman Apr 8, 2026
cc82958
docs: add design spec for C# xUnit test project
dkackman Apr 8, 2026
f0e6ae5
docs: add implementation plan for C# xUnit test project
dkackman Apr 8, 2026
e4c6a5c
test(cs): add xUnit test project skeleton
dkackman Apr 8, 2026
29422cc
test(cs): add 12 xUnit tests covering core binding API
dkackman Apr 8, 2026
534d32b
docs: add .gitignore and test instructions to uniffi README
dkackman Apr 8, 2026
04caa4b
fix(cs): patch String.Format ambiguity in generated Clvm class
dkackman Apr 8, 2026
96eced2
fix(cs): auto-patch String.Format via MSBuild target
dkackman Apr 8, 2026
526d74f
fix(cs): replace sed patch with cross-platform MSBuild inline task
dkackman Apr 8, 2026
849ee7a
feat(cs): add ChiaWalletSdk library project for NuGet packaging
dkackman Apr 8, 2026
6df487d
fix(cs): use forward slash in AssemblyFile path and add native pack i…
dkackman Apr 8, 2026
476f68c
refactor(cs): switch test project to ProjectReference for library
dkackman Apr 8, 2026
1498d70
docs(cs): clarify TFM mismatch and update README consumption instruct…
dkackman Apr 8, 2026
59d0087
ci: add NuGet build and publish workflow
dkackman Apr 8, 2026
13b0841
fix(ci): correct rust toolchain config, cache key, and permissions in…
dkackman Apr 8, 2026
116ac9f
chore: ignore NuGet native staging and output directories
dkackman Apr 8, 2026
906c4df
docs(cs): fix stale attribution for PatchClvmStringAmbiguity target
dkackman Apr 8, 2026
762f218
add
dkackman Apr 8, 2026
fe2716b
ignore some local dev build outputs
dkackman Apr 8, 2026
c3ae56a
feat(cs): expose internals to Chia.Wallet.Tests assembly
dkackman Apr 8, 2026
bf3130b
feat(cs): expose internals to Chia.Wallet.Cli assembly
dkackman Apr 8, 2026
482fa19
feat(cs): promote generated types to public via MSBuild post-processing
dkackman Apr 9, 2026
233bf54
external types
dkackman Apr 9, 2026
3f3f542
remove claude docs
dkackman Apr 9, 2026
75a811e
add readme for nuget package
dkackman Apr 9, 2026
5144599
add
dkackman Apr 9, 2026
8eca27a
tokio setup for uniffi bindings
dkackman Apr 10, 2026
895f0b3
refactor: update spawn_on_runtime for uniffi to use tokio::spawn and …
dkackman Apr 10, 2026
a7862e9
add u64 mapping for uniffi
dkackman Apr 10, 2026
02ca773
set proper C# namespace
dkackman Apr 10, 2026
eabf71f
fix test references
dkackman Apr 10, 2026
c8ab588
use the same TOKIO spawn approach as was need in the Peer type
dkackman Apr 10, 2026
8f1cc84
consolidate uniffi runtime management
dkackman Apr 10, 2026
617e79f
remove csharp generated file and build on ci
dkackman Apr 11, 2026
efae258
add local build script
dkackman Apr 11, 2026
494c238
enhance local build script to support multiple target architectures a…
dkackman Apr 12, 2026
0a488d0
msvc build
dkackman Apr 12, 2026
5c89b54
remove mac intel
dkackman Apr 12, 2026
13547c8
format
dkackman Apr 12, 2026
afdc758
clippy fixes and uniffi update
dkackman Apr 12, 2026
4568f02
dotent 10
dkackman Apr 12, 2026
eca8c1d
ignore uniffi during machete check
dkackman Apr 12, 2026
414e109
fix wasm build
dkackman Apr 12, 2026
56f5fb4
remove os-x x64 pack
dkackman Apr 12, 2026
0f3db23
uniffi introduced a transitive dependency on openssl, which causes th…
dkackman Apr 13, 2026
463b055
remove act toolchain step
dkackman Apr 13, 2026
5c7fc91
iterating on nuget.yml
dkackman Apr 13, 2026
33f6723
create rust profile that leaves symbols intact for cs generation
dkackman Apr 13, 2026
12710c5
update actions to latest versions
dkackman Apr 13, 2026
b85dc90
target ne8 rather than net10 for broader compatibility
dkackman Apr 15, 2026
bed5ceb
don't use the linux library with symbols present for the final packag…
dkackman Apr 15, 2026
3bd9fd4
feat: add macOS x64 (x86_64-apple-darwin) to NuGet build matrix
dkackman Apr 15, 2026
963bbe9
feat: add x86_64-unknown-linux-musl to NuGet build matrix
dkackman Apr 16, 2026
d4817cc
feat: include linux-musl-x64 native library in NuGet package
dkackman Apr 16, 2026
b1e0735
attmept musl build fix
dkackman Apr 16, 2026
49dadce
comment out musl
dkackman Apr 16, 2026
61309b2
Merge branch 'main' into uniffi
dkackman Jun 1, 2026
5570522
fix merge break
dkackman Jun 1, 2026
4d91924
update .net requirement
dkackman Jun 1, 2026
0a88049
uniffi go bindings
dkackman Jun 1, 2026
e46cc5e
add go tests
dkackman Jun 1, 2026
6957444
rename uniffi folder to dotnet
dkackman Jun 1, 2026
85ec571
go gh action
dkackman Jun 1, 2026
98ad4ab
various review fixes
dkackman Jun 1, 2026
5fc5207
cpp uniffi
dkackman Jun 1, 2026
1f87d2a
match all uniffi testing
dkackman Jun 2, 2026
a7335d8
make rust async behave as sync in cpp binding
dkackman Jun 2, 2026
4960701
remove generated files
dkackman Jun 2, 2026
19a14cf
async integation tests
dkackman Jun 2, 2026
18f6088
helper scripts for uniffi
dkackman Jun 2, 2026
b43ad24
fix go test step failure
dkackman Jun 2, 2026
e94685a
set necessary linker flags
dkackman Jun 2, 2026
99b0260
add timeouts to peer and rpc clients
dkackman Jun 2, 2026
3cd0eb4
regenerate python type stubs for timeout options
dkackman Jun 2, 2026
9294809
rename set_timeout to be more specific
dkackman Jun 2, 2026
2881f52
remove global backstop timeout
dkackman Jun 2, 2026
2b5c629
review changes
dkackman Jun 3, 2026
df3357a
remove span_on_runtime
dkackman Jun 3, 2026
ffb0349
add coinset tests
dkackman Jun 8, 2026
7cfa85e
format
dkackman Jun 8, 2026
4cb83f5
rename nuget GH action
dkackman Jun 8, 2026
c87cf25
fix: remove request from map on timeout to prevent response misrouting
dkackman Jun 10, 2026
0be9a53
build(dotnet): fail build when required visibility patches match nothing
dkackman Jun 10, 2026
a70481e
ci(dotnet): run xUnit tests before packing/publishing to NuGet
dkackman Jun 10, 2026
ff226b7
ci(dotnet): restrict publish to semver tags and validate version
dkackman Jun 10, 2026
2e5a0e1
test(client): cover request-id cleanup on request timeout
dkackman Jun 10, 2026
96c6b16
build(dotnet): make visibility tripwire idempotent via post-condition…
dkackman Jun 10, 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
157 changes: 157 additions & 0 deletions .github/workflows/cpp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
name: C++

on:
push:
branches:
- main
tags:
- "**"
pull_request:
branches:
- "**"

concurrency:
group: ${{ github.event_name == 'pull_request' && format('{0}-{1}', github.workflow_ref, github.event.pull_request.number) || github.run_id }}
cancel-in-progress: true

permissions:
contents: read

jobs:
generate:
name: Generate C++ bindings
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-unknown-linux-gnu

- name: Cache cargo
uses: actions/cache@v5
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: x86_64-unknown-linux-gnu-cargo-ubuntu-latest-${{ hashFiles('**/Cargo.lock') }}

- name: Build native library (linux-x64, symbols intact for bindgen)
run: cargo build --profile release-cpp -p chia-wallet-sdk-cpp --target x86_64-unknown-linux-gnu

- name: Install uniffi-bindgen-cpp
run: cargo install uniffi-bindgen-cpp --git https://github.com/NordSecurity/uniffi-bindgen-cpp --tag v0.8.1+v0.29.4

- name: Generate C++ bindings
run: |
mkdir -p cpp/chia_wallet_sdk
uniffi-bindgen-cpp \
--library target/x86_64-unknown-linux-gnu/release-cpp/libchia_wallet_sdk.so \
--out-dir cpp/chia_wallet_sdk
test -f cpp/chia_wallet_sdk/chia_wallet_sdk.cpp || { echo "ERROR: chia_wallet_sdk.cpp was not generated"; exit 1; }

- name: Patch generated bindings
run: |
# 1. Clvm methods `bool`/`int` are emitted with reserved C++ keyword names.
# 2. VdfInfo/VdfProof forward declarations are emitted with all-caps acronyms.
sed -i \
-e 's/std::shared_ptr<Program> bool(/std::shared_ptr<Program> bool_(/' \
-e 's/std::shared_ptr<Program> int(/std::shared_ptr<Program> int_(/' \
-e 's/struct VDFInfo;/struct VdfInfo;/' \
-e 's/struct VDFProof;/struct VdfProof;/' \
cpp/chia_wallet_sdk/chia_wallet_sdk.hpp
sed -i \
-e 's/Clvm::bool(/Clvm::bool_(/' \
-e 's/Clvm::int(/Clvm::int_(/' \
cpp/chia_wallet_sdk/chia_wallet_sdk.cpp

- name: Upload C++ bindings artifact
uses: actions/upload-artifact@v7
with:
name: cpp-bindings
path: |
cpp/chia_wallet_sdk/chia_wallet_sdk.hpp
cpp/chia_wallet_sdk/chia_wallet_sdk.cpp
cpp/chia_wallet_sdk/chia_wallet_sdk_scaffolding.hpp
if-no-files-found: error

build:
name: Build native - ${{ matrix.settings.target }}
strategy:
fail-fast: false
matrix:
settings:
- host: ubuntu-latest
target: x86_64-unknown-linux-gnu
artifact-name: native-linux-x64
lib-name: libchia_wallet_sdk.so
- host: macos-latest
target: aarch64-apple-darwin
artifact-name: native-osx-arm64
lib-name: libchia_wallet_sdk.dylib
- host: macos-latest
target: x86_64-apple-darwin
artifact-name: native-osx-x64
lib-name: libchia_wallet_sdk.dylib
- host: windows-latest
target: x86_64-pc-windows-msvc
artifact-name: native-win-x64
lib-name: chia_wallet_sdk.dll
runs-on: ${{ matrix.settings.host }}
steps:
- uses: actions/checkout@v6

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.settings.target }}

- name: Cache cargo
uses: actions/cache@v5
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ matrix.settings.target }}-cargo-${{ matrix.settings.host }}-${{ hashFiles('**/Cargo.lock') }}

- name: Build native library
run: cargo build --profile release-cpp -p chia-wallet-sdk-cpp --target ${{ matrix.settings.target }}

- name: Upload native artifact
uses: actions/upload-artifact@v7
with:
name: ${{ matrix.settings.artifact-name }}
path: target/${{ matrix.settings.target }}/release-cpp/${{ matrix.settings.lib-name }}
if-no-files-found: error

test:
name: Test C++ bindings
runs-on: ubuntu-latest
needs: [generate, build]
steps:
- uses: actions/checkout@v6

- name: Download C++ bindings
uses: actions/download-artifact@v8
with:
name: cpp-bindings
path: cpp/chia_wallet_sdk

- name: Download linux-x64 native library
uses: actions/download-artifact@v8
with:
name: native-linux-x64
path: cpp/chia_wallet_sdk

- name: Configure and build test
run: |
cmake -S cpp/tests -B cpp/tests/build -DCMAKE_BUILD_TYPE=Release
cmake --build cpp/tests/build

- name: Run C++ tests
run: ctest --test-dir cpp/tests/build --output-on-failure
Loading