From bfc61ad54890ab8d143c4f872d390c08d76a1027 Mon Sep 17 00:00:00 2001 From: "Tobin C. Harding" Date: Thu, 11 Sep 2025 09:13:04 +1000 Subject: [PATCH 1/2] types: Update readme The readme is out of date. Now that we have all the methods supported update the readme. --- types/README.md | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/types/README.md b/types/README.md index 80bdd68a..30c1d8d6 100644 --- a/types/README.md +++ b/types/README.md @@ -1,35 +1,33 @@ # Bitcoin Core JSON-RPC types -This crate provides data types return by Bitcoin Core's JSON-RPC API. Each type is specific to the +This crate provides data types returned by Bitcoin Core's JSON-RPC API. Each type is specific to the version of Core e.g., if you run the `getblockchaininfo` method against a Bitcoin Core v28 instance you will get back the data described by `types::v28::GetBlockChainInfo`. In a similar fashion any method `corerpcmethod` will return type `CoreRpcMethod` - snake-case as is conventional in Rust. -## Status +The version specific structs _do not_ use types from `rust-bitcoin`. For any type that can be +represented using types from `rust-bitcoin` we provide a version non-specific type in +`model::CoreRpcMethod` and an `into_model()` method on the version specific type. -This crate is Work In Progress - not all methods for all Core versions are done yet. The single -source of truth (SSOT) for a methods status can be found in the version specific module e.g., -`types/src/v17/mod.rs`. The HTML version can be found online and has nice drop down menus. +The crate supports **all** documented Core RPC methods. -See for example: https://docs.rs/corepc-types/0.5.0/corepc_types/v18/index.html +(Note there are a bunch of undocumented methods that are not yet supported, coming soon.) -### As of `v0.5.0` +## Known issues -- All types to support `rust-miniscript` exist for Core versions 17-28 inclusive. -- Support for Core Versions v17 and v18 is more fully fleshed out. -- Nice docs and `verify` tool for v17 and v18 only. +The types include docs from Core however the docs used are from the _first_ Core version in which +the method appeared. As an example, this means if you look at docs for v29 `createwallet` you will +see docs that originate in Core v17 so may or may not be stale. We hope to fix this at some stage. +For accurate documentation of the method you are best to run `bitcoin-cli help createwallet` against +a Core node of the desired version. ### Testing and Verification -In order to prove the data structures we do integration testing in `integration_test`. The tests are -version specific e.g., `cargo test --features=0_18_1`. In CI we test against all supported versions. -If you are using this crate in CI you may want to imitate the job structure. See the `Integration` -job in `.github/workflows/rust.yaml`. +Each type is integration tested, however only typically with a single test. We hope to improve +test coverage by using test vectors taken from Core source code ... at some stage. -In order to back up method status our claims we provide the `verify` tool that parses the SSOT and -checks the claims. Run it using `verify v17` (also `verify all`). - -The tool only currently verifies the `v17` and `v18` modules. +If you experience any issues please let us know, we have done our best but this crate needs battle +testing in the wild. ## Minimum Supported Rust Version (MSRV) From 94d107a780551626c37054b821a11a79414c7bdb Mon Sep 17 00:00:00 2001 From: "Tobin C. Harding" Date: Thu, 11 Sep 2025 08:46:42 +1000 Subject: [PATCH 2/2] Bump version numbers In preparation for releasing all three crates bump the version to 0.9.0, add changelog entry, and update the lock files. --- Cargo-minimal.lock | 6 +++--- Cargo-recent.lock | 6 +++--- client/CHANGELOG.md | 9 +++++++++ client/Cargo.toml | 4 ++-- integration_test/Cargo.toml | 2 +- node/CHANGELOG.md | 10 ++++++++++ node/Cargo.toml | 4 ++-- types/CHANGELOG.md | 15 +++++++++++++++ types/Cargo.toml | 2 +- 9 files changed, 46 insertions(+), 12 deletions(-) diff --git a/Cargo-minimal.lock b/Cargo-minimal.lock index 983ebd6f..7394b2e7 100644 --- a/Cargo-minimal.lock +++ b/Cargo-minimal.lock @@ -153,7 +153,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "corepc-client" -version = "0.8.0" +version = "0.9.0" dependencies = [ "bitcoin", "corepc-types", @@ -165,7 +165,7 @@ dependencies = [ [[package]] name = "corepc-node" -version = "0.8.0" +version = "0.9.0" dependencies = [ "anyhow", "bitcoin_hashes", @@ -183,7 +183,7 @@ dependencies = [ [[package]] name = "corepc-types" -version = "0.8.0" +version = "0.9.0" dependencies = [ "bitcoin", "serde", diff --git a/Cargo-recent.lock b/Cargo-recent.lock index 17a1f9ab..16c2abb7 100644 --- a/Cargo-recent.lock +++ b/Cargo-recent.lock @@ -153,7 +153,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "corepc-client" -version = "0.8.0" +version = "0.9.0" dependencies = [ "bitcoin", "corepc-types", @@ -165,7 +165,7 @@ dependencies = [ [[package]] name = "corepc-node" -version = "0.8.0" +version = "0.9.0" dependencies = [ "anyhow", "bitcoin_hashes", @@ -183,7 +183,7 @@ dependencies = [ [[package]] name = "corepc-types" -version = "0.8.0" +version = "0.9.0" dependencies = [ "bitcoin", "serde", diff --git a/client/CHANGELOG.md b/client/CHANGELOG.md index f65cd3f1..b1fc1f8c 100644 --- a/client/CHANGELOG.md +++ b/client/CHANGELOG.md @@ -1,3 +1,12 @@ +# 0.9.0 2025-09-11 + +Add support for all the new methods added as part of the `types v0.9.0` +release - that means **all** of the documented Core RPC methods. + +- Implement all remaining non-hidden RPC methods. +- Integration test all methods (excl. two that have open issues). +- Add support for Core `v28.2` [#279](https://github.com/rust-bitcoin/corepc/pull/279) + # 0.8.0 2025-05-21 - Add support for Bitcoin Core 29.0 [#131](https://github.com/rust-bitcoin/corepc/pull/131) diff --git a/client/Cargo.toml b/client/Cargo.toml index 3c5aeab7..b2bb7074 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "corepc-client" -version = "0.8.0" +version = "0.9.0" authors = ["Tobin C. Harding ", "Jamil Lambert "] license = "CC0-1.0" repository = "https://github.com/rust-bitcoin/corepc" @@ -22,7 +22,7 @@ client-sync = ["jsonrpc"] [dependencies] bitcoin = { version = "0.32.0", default-features = false, features = ["std", "serde"] } -types = { package = "corepc-types", version = "0.8.0", default-features = false, features = ["std"] } +types = { package = "corepc-types", version = "0.9.0", default-features = false, features = ["std"] } log = "0.4" serde = { version = "1.0.103", default-features = false, features = [ "derive", "alloc" ] } serde_json = { version = "1.0.117" } diff --git a/integration_test/Cargo.toml b/integration_test/Cargo.toml index 654a3f52..1b6ecb89 100644 --- a/integration_test/Cargo.toml +++ b/integration_test/Cargo.toml @@ -56,7 +56,7 @@ TODO = [] # This is a dirty hack while writing the tests. [dependencies] bitcoin = { version = "0.32.0", default-features = false, features = ["std", "serde"] } -node = { package = "corepc-node", version = "0.8.0", default-features = false } +node = { package = "corepc-node", version = "0.9.0", default-features = false } rand = "0.8.5" env_logger = "0.9.0" diff --git a/node/CHANGELOG.md b/node/CHANGELOG.md index 652f3e84..81007e7a 100644 --- a/node/CHANGELOG.md +++ b/node/CHANGELOG.md @@ -1,3 +1,13 @@ +# 0.9.0 2025-09-11 + +The `types v0.9.0` release adds support for **all** remaining documented +Core RPC methods. These are then pickup up in the update of `client`. + +- Update to use the new `client v0.9.0`. +- Fix race condition in node start up [#213](https://github.com/rust-bitcoin/corepc/pull/213) +- Fix build on macOS. Only codesign bitcoind if necessary [#309](https://github.com/rust-bitcoin/corepc/pull/309) +- Add support for Core `v28.2` [#279](https://github.com/rust-bitcoin/corepc/pull/279) + # 0.8.0 2025-05-21 - Add support for Bitcoin Core 29.0 [#131](https://github.com/rust-bitcoin/corepc/pull/131) diff --git a/node/Cargo.toml b/node/Cargo.toml index 1b0bda25..67f46c9e 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "corepc-node" -version = "0.8.0" +version = "0.9.0" authors = ["Riccardo Casatta ", "Tobin C. Harding "] license = "MIT" repository = "https://github.com/rust-bitcoin/corepc" @@ -13,7 +13,7 @@ rust-version = "1.63.0" exclude = ["tests", "contrib"] [dependencies] -corepc-client = { version = "0.8.0", features = ["client-sync"] } +corepc-client = { version = "0.9.0", features = ["client-sync"] } log = { version = "0.4", default-features = false } which = { version = "3.1.1", default-features = false } anyhow = { version = "1.0.66", default-features = false, features = ["std"] } diff --git a/types/CHANGELOG.md b/types/CHANGELOG.md index a7a83c99..3234daf2 100644 --- a/types/CHANGELOG.md +++ b/types/CHANGELOG.md @@ -1,3 +1,18 @@ +# 0.9.0 2025-09-11 + +This release is massive, it delivers support for **all** documented Core RPC +methods. It also adds integration testing for all the new ones and many that +were previously untested. + +Props to Jamil Lambert for grinding this out. + +There are a set of undocumented methods that we will be adding support +for also shortly, stay tuned. + +- Implement all remaining non-hidden RPC methods. +- Integration test all methods (excl. two that have open issues). +- Add support for Core `v28.2` [#279](https://github.com/rust-bitcoin/corepc/pull/279) + # 0.8.0 2025-05-21 - doc: update docs for now explicit download feature flag [#177](https://github.com/rust-bitcoin/corepc/pull/177) diff --git a/types/Cargo.toml b/types/Cargo.toml index 34e18b57..97d13bdc 100644 --- a/types/Cargo.toml +++ b/types/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "corepc-types" -version = "0.8.0" +version = "0.9.0" authors = ["Tobin C. Harding ", "Jamil Lambert "] license = "CC0-1.0" repository = "https://github.com/rust-bitcoin/corepc"