Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
19 changes: 14 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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<CommitNode>` 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

Expand Down Expand Up @@ -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)

6 changes: 3 additions & 3 deletions Cargo-recent.lock
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
name = "simpcli"
version = "0.3.0"
dependencies = [
"simplicity-lang 0.8.0",
"simplicity-lang 0.9.0",
]

[[package]]
Expand All @@ -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]]
Expand All @@ -612,7 +612,7 @@ dependencies = [

[[package]]
name = "simplicity-lang"
version = "0.8.0"
version = "0.9.0"
dependencies = [
"bitcoin",
"bitcoin_hashes 1.2.0",
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "simplicity-lang"
version = "0.8.0"
version = "0.9.0"
authors = ["Andrew Poelstra <apoelstra@wpsoftware.net>"]
license = "CC0-1.0"
homepage = "https://github.com/BlockstreamResearch/rust-simplicity/"
Expand Down
12 changes: 5 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,31 +46,29 @@ 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

```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::<ConstructNode<Core>>::unit(&ctx);
let construct = Arc::<ConstructNode>::unit(&ctx);
construct.finalize_types().unwrap()
});

// Encode the program to bytes
let encoded: Vec<u8> = simplicity::write_to_vec(|w| {
program.encode_without_witness(w)
});
let encoded: Vec<u8> = program.to_vec_without_witness();
```

## Relationship to libsimplicity
Expand Down
2 changes: 1 addition & 1 deletion fuzz/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
2 changes: 1 addition & 1 deletion fuzz/generate-files.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
2 changes: 1 addition & 1 deletion simpcli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Loading