From 936eacf5446125ade8e97284726a59aa1a9100ff Mon Sep 17 00:00:00 2001 From: Kyryl R Date: Fri, 11 Sep 2026 11:33:53 +0300 Subject: [PATCH] release: prepare simplicity-lang 0.9.0 --- CHANGELOG.md | 19 ++++++++++++++----- Cargo-recent.lock | 6 +++--- Cargo.toml | 2 +- README.md | 12 +++++------- fuzz/Cargo.toml | 2 +- fuzz/generate-files.sh | 2 +- simpcli/Cargo.toml | 2 +- 7 files changed, 26 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1781d73b..0427e178 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,19 @@ # Unreleased -* Add `Value` and `Type` constructors for variable-length buffers and SHA256 `Ctx8` contexts; - change the signature of `Final::two_two_n` to return a result rather than panicking when `n` - is too large; add infallible `Final::two_two_n_fixed` for when `n` is known at compile-time - [#372][https://github.com/BlockstreamResearch/rust-simplicity/pull/372) +# 0.9.0 - 2026-09-16 + +* Update `elements` to `0.27.0`, `bitcoin_hashes` to `1.2.0`, and `hex-conservative` to `1.2.0` [#368](https://github.com/BlockstreamResearch/rust-simplicity/pull/368), [#373](https://github.com/BlockstreamResearch/rust-simplicity/pull/373), [#376](https://github.com/BlockstreamResearch/rust-simplicity/pull/376). +* Add `Value` and `types::Final` constructors for variable-length byte buffers and SHA256 `Ctx8` contexts. `Final::two_two_n` now returns a `Result` when `n` is too large. + `Final::two_two_n_fixed` accepts a size known at compile time [#372](https://github.com/BlockstreamResearch/rust-simplicity/pull/372). +* Add `Value::ctx8_from_hash_engine`, `TypeName::tmr`, and constant Merkle root constructors. + Store Merkle roots as byte arrays instead of SHA256 midstates [#373](https://github.com/BlockstreamResearch/rust-simplicity/pull/373), [#374](https://github.com/BlockstreamResearch/rust-simplicity/pull/374), [#376](https://github.com/BlockstreamResearch/rust-simplicity/pull/376). +* Move `jet` into `CoreConstructible`, replacing the `JetConstructible` trait. Remove `Policy::Assembly` and `AssemblyConstructible`. + `Policy::commit` now returns `Arc` directly. Replace `Satisfier::lookup_tap_leaf_script_sig` with + `lookup_signature`, which takes the public key without a `TapLeafHash` [#376](https://github.com/BlockstreamResearch/rust-simplicity/pull/376). +* Preserve type sharing during finalization, bound the display of incomplete types, and drop nodes and incomplete types without recursion [#375](https://github.com/BlockstreamResearch/rust-simplicity/pull/375). +* Fix `CoreConstructible::injl` constructing a right injection [#369](https://github.com/BlockstreamResearch/rust-simplicity/pull/369). +* Prevent silent allocation-size overflow in `simplicity-sys` [#370](https://github.com/BlockstreamResearch/rust-simplicity/pull/370). +* Use maximal sharing when pruning programs [#379](https://github.com/BlockstreamResearch/rust-simplicity/pull/379). # 0.8.0 - 2026-05-28 @@ -37,4 +47,3 @@ * Add debugging support to `ExecTracker` [#293](https://github.com/BlockstreamResearch/rust-simplicity/pull/293) * Separate linker symbols to allow multiple simplicity-sys versions in same tree [#297](https://github.com/BlockstreamResearch/rust-simplicity/pull/297) * Add base64 encoding and decoding support to programs [#299](https://github.com/BlockstreamResearch/rust-simplicity/pull/299) - diff --git a/Cargo-recent.lock b/Cargo-recent.lock index 1cc8f9a2..9a936051 100644 --- a/Cargo-recent.lock +++ b/Cargo-recent.lock @@ -582,7 +582,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" name = "simpcli" version = "0.3.0" dependencies = [ - "simplicity-lang 0.8.0", + "simplicity-lang 0.9.0", ] [[package]] @@ -592,7 +592,7 @@ dependencies = [ "base64 0.22.1", "libfuzzer-sys", "simplicity-lang 0.3.1", - "simplicity-lang 0.8.0", + "simplicity-lang 0.9.0", ] [[package]] @@ -612,7 +612,7 @@ dependencies = [ [[package]] name = "simplicity-lang" -version = "0.8.0" +version = "0.9.0" dependencies = [ "bitcoin", "bitcoin_hashes 1.2.0", diff --git a/Cargo.toml b/Cargo.toml index 73d47fd7..a540ff53 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "simplicity-lang" -version = "0.8.0" +version = "0.9.0" authors = ["Andrew Poelstra "] license = "CC0-1.0" homepage = "https://github.com/BlockstreamResearch/rust-simplicity/" diff --git a/README.md b/README.md index ee3e226f..6a4ab7b4 100644 --- a/README.md +++ b/README.md @@ -46,11 +46,11 @@ from one node type to the next. ## Installation -To use rust-simplicity, this to your Cargo.toml: +To use rust-simplicity, add this to your Cargo.toml: ```toml [dependencies] -simplicity-lang = "0.6" +simplicity-lang = "0.9" ``` ## Quick Start @@ -58,19 +58,17 @@ simplicity-lang = "0.6" ```rust use simplicity::node::CoreConstructible; use simplicity::types::Context; -use simplicity::{ConstructNode, jet::Core}; +use simplicity::ConstructNode; use std::sync::Arc; // Create a trivial Simplicity program let program = Context::with_context(|ctx| { - let construct = Arc::>::unit(&ctx); + let construct = Arc::::unit(&ctx); construct.finalize_types().unwrap() }); // Encode the program to bytes -let encoded: Vec = simplicity::write_to_vec(|w| { - program.encode_without_witness(w) -}); +let encoded: Vec = program.to_vec_without_witness(); ``` ## Relationship to libsimplicity diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index d9fed617..7adbe83f 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -16,7 +16,7 @@ path = "fuzz_lib/lib.rs" libfuzzer-sys = "0.4" # We shouldn't need an explicit version on the next line, but Andrew's tools # choke on it otherwise. See https://github.com/nix-community/crate2nix/issues/373 -simplicity-lang = { path = "..", features = ["test-utils", "human_encoding"], version = "0.8.0" } +simplicity-lang = { path = "..", features = ["test-utils", "human_encoding"], version = "0.9.0" } old_simplicity = { package = "simplicity-lang", version = "0.3.1", default-features = false } [dev-dependencies] diff --git a/fuzz/generate-files.sh b/fuzz/generate-files.sh index 00134400..a350dc6c 100755 --- a/fuzz/generate-files.sh +++ b/fuzz/generate-files.sh @@ -27,7 +27,7 @@ path = "fuzz_lib/lib.rs" libfuzzer-sys = "0.4" # We shouldn't need an explicit version on the next line, but Andrew's tools # choke on it otherwise. See https://github.com/nix-community/crate2nix/issues/373 -simplicity-lang = { path = "..", features = ["test-utils"], version = "0.6.0" } +simplicity-lang = { path = "..", features = ["test-utils", "human_encoding"], version = "0.9.0" } old_simplicity = { package = "simplicity-lang", version = "0.3.1", default-features = false } [dev-dependencies] diff --git a/simpcli/Cargo.toml b/simpcli/Cargo.toml index 876acc81..14993fa9 100644 --- a/simpcli/Cargo.toml +++ b/simpcli/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] # todo add lexopt for command line parsing -simplicity-lang = { version = "0.8.0", path = "..", features = [ "base64", "serde", "elements", "human_encoding" ] } +simplicity-lang = { version = "0.9.0", path = "..", features = [ "base64", "serde", "elements", "human_encoding" ] } [[bin]] name = "simpcli"