Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e81a966
Update MSRV to 1.85.1
nuttycom Apr 17, 2026
872a219
Migrate from yanked `core2` library to `corez`
nuttycom Apr 17, 2026
b0bf267
Merge pull request #482 from zcash/corez_migration
nuttycom Apr 17, 2026
44de07d
Return DepthOverflow error instead of panicking at depth 255
MavenRain Apr 2, 2026
8a23aa2
refactor: turn repository into cargo workspace
ebfull Apr 10, 2026
2d9a186
refactor: turn root package into `orchard_internal` crate; expose API…
ebfull Apr 10, 2026
9bcc140
nit: hide orchard_internal crate name from public `Address` docs code…
ebfull Apr 10, 2026
8e9e736
fix: specify `orchard_internal` version via `[workspace.dependencies]`
nuttycom Apr 17, 2026
af5beb4
fix: resolve `public/README.md` via symlink to root `README.md`
nuttycom Apr 17, 2026
efb1350
Merge pull request #479 from MavenRain/fix/464-depth-overflow
nuttycom Apr 17, 2026
58aca49
Use `#![forbid(unsafe_code)]` instead of `#![deny(unsafe_code)]`
nuttycom Apr 17, 2026
6c6eb9d
Restore `src/value.rs` module-level documentation
czarcas7ic Apr 19, 2026
cc51ea3
Bump README MSRV to 1.85.1
czarcas7ic Apr 19, 2026
5945216
Fix `Cargo.toml` author emails
czarcas7ic Apr 19, 2026
a067980
Update `public/LICENSE-MIT` copyright
czarcas7ic Apr 19, 2026
bcadd71
Symlink `public/katex-header.html` to root
czarcas7ic Apr 19, 2026
0389ec3
Unblock no_std CI against typenum 1.20+
czarcas7ic Apr 19, 2026
9b27cd2
Merge pull request #3 from valargroup/adam/address-pr-480-review
ebfull Apr 20, 2026
9bb43b6
copyright: update and consolidate copyright information
ebfull Apr 20, 2026
106d2d1
doc: deduplicate / propagate value module documentation
ebfull Apr 20, 2026
7e90bf2
Merge pull request #480 from ebfull/orchard_internal
nuttycom Apr 20, 2026
0ff5c86
feat: widen visibility on circuit primitives and add assign_constant …
czarcas7ic Apr 12, 2026
dbfc391
docs: replace allow(missing_docs) with proper doc comments on circuit…
czarcas7ic Apr 13, 2026
a73194f
feat: uniform pub(crate) -> pub across orchard_internal
czarcas7ic Apr 13, 2026
f564832
refactor: remove assign_constant helper
czarcas7ic Apr 13, 2026
dde76a5
feat: widen pub(super) chip accessors on Config to pub
czarcas7ic Apr 13, 2026
dca364d
style: cargo fmt
czarcas7ic Apr 14, 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
16 changes: 8 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Run tests
run: cargo test --verbose
run: cargo test --workspace --verbose
- name: Verify working directory is clean
run: git diff --exit-code

Expand All @@ -32,7 +32,7 @@ jobs:
- name: Remove lockfile to build with latest dependencies
run: rm Cargo.lock
- name: Build crate
run: cargo build --all-features --verbose
run: cargo build --workspace --all-features --verbose
- name: Verify working directory is clean (excluding lockfile)
run: git diff --exit-code ':!Cargo.lock'

Expand All @@ -42,7 +42,7 @@ jobs:
strategy:
matrix:
target:
- wasm32-wasi
- wasm32-wasip1
- thumbv7em-none-eabihf
steps:
- uses: actions/checkout@v4
Expand All @@ -67,9 +67,9 @@ jobs:
- name: Add lazy_static with the spin_no_std feature
working-directory: ./ci-build
run: cargo add lazy_static --no-default-features --features "spin_no_std"
- name: Add typenum with the no_std feature
- name: Add typenum with no default features
working-directory: ./ci-build
run: cargo add typenum --no-default-features --features "no_std"
run: cargo add typenum --no-default-features
- name: Show Cargo.toml for the synthetic crate
working-directory: ./ci-build
run: cat Cargo.toml
Expand All @@ -89,7 +89,7 @@ jobs:
- uses: actions/checkout@v4
# Build benchmarks to prevent bitrot
- name: Build benchmarks
run: cargo build --benches
run: cargo build --workspace --benches

book:
name: Book tests
Expand All @@ -113,7 +113,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Generate coverage report
run: cargo tarpaulin --engine llvm --all-features --release --timeout 600 --out xml
run: cargo tarpaulin --workspace --engine llvm --all-features --release --timeout 600 --out xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3.1.4

Expand All @@ -126,7 +126,7 @@ jobs:
# Requires #![deny(rustdoc::broken_intra_doc_links)] in crates.
- run: sudo apt-get -y install libfontconfig1-dev
- name: Check intra-doc links
run: cargo doc --all-features --document-private-items
run: cargo doc --workspace --all-features --document-private-items

fmt:
name: Rustfmt
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/lints-stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
strategy:
matrix:
target:
- wasm32-wasi
- wasm32-wasip1
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -47,9 +47,9 @@ jobs:
- name: Add lazy_static with the spin_no_std feature
working-directory: ./ci-build
run: cargo add lazy_static --no-default-features --features "spin_no_std"
- name: Add typenum with the no_std feature
- name: Add typenum with no default features
working-directory: ./ci-build
run: cargo add typenum --no-default-features --features "no_std"
run: cargo add typenum --no-default-features
- name: Show Cargo.toml for the synthetic crate
working-directory: ./ci-build
run: cat Cargo.toml
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ and this project adheres to Rust's notion of
## [Unreleased]

### Changed
- MSRV is now 1.85.1
- Migrated from yanked `core2` library to `corez`
- `orchard::pczt::Bundle::extract` now takes its `self` argument by
reference instead of by value.
- `orchard::zip32::Error` has added variant `MaxDerivationDepth`

## [0.12.0] - 2025-12-05

Expand Down
22 changes: 15 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 14 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
[workspace]
members = [".", "public"]

[workspace.dependencies]
__impl = { version = "=0.12.0", path = ".", package = "orchard_internal", default-features = false }

[package]
name = "orchard"
name = "orchard_internal"
version = "0.12.0"
authors = [
"Sean Bowe",
"Jack Grigg <jack@electriccoin.co>",
"Sean Bowe <ewillbefull@gmail.com>",
"Jack Grigg <thestr4d@gmail.com>",
"Daira-Emma Hopwood <daira@jacaranda.org>",
"Ying Tong Lai",
"Kris Nuttycombe <kris@electriccoin.co>",
"Kris Nuttycombe <kris@nutty.land>",
]
edition = "2021"
rust-version = "1.70"
rust-version = "1.85.1"
description = "The Orchard shielded transaction protocol"
license = "MIT OR Apache-2.0"
repository = "https://github.com/zcash/orchard"
documentation = "https://docs.rs/orchard"
readme = "README.md"
readme = "INTERNAL-README.md"
categories = ["cryptography::cryptocurrencies"]
keywords = ["zcash"]

Expand Down Expand Up @@ -59,7 +64,7 @@ getset = "0.1"
tracing = { version = "0.1", default-features = false }

# No-std support
core2 = { version = "0.3", default-features = false, features = ["alloc"] }
corez = { version = "0.1.1", default-features = false, features = ["alloc"] }

# Developer tooling dependencies
image = { version = "0.24", optional = true }
Expand All @@ -83,7 +88,7 @@ bench = false

[features]
default = ["circuit", "multicore", "std"]
std = ["core2/std", "group/wnaf-memuse", "reddsa/std"]
std = ["corez/std", "group/wnaf-memuse", "reddsa/std"]
circuit = ["dep:halo2_gadgets", "dep:halo2_proofs", "std"]
unstable-frost = []
multicore = ["halo2_proofs?/multicore"]
Expand Down
3 changes: 3 additions & 0 deletions INTERNAL-README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# orchard_internal

This is the implementation crate for the Orchard shielded transaction protocol. It is not intended to be used directly. Depend on the [`orchard`](https://crates.io/crates/orchard) crate instead, which re-exports the public API from this crate.
3 changes: 2 additions & 1 deletion LICENSE-MIT
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
The MIT License (MIT)

Copyright (c) 2020-2023 The Electric Coin Company
Copyright (c) 2020-2025 The Electric Coin Company
Copyright (c) 2026 Zcash Open Development Lab

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
12 changes: 4 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# orchard [![Crates.io](https://img.shields.io/crates/v/orchard.svg)](https://crates.io/crates/orchard) #

Requires Rust 1.66+.
Requires Rust 1.85.1+.

## Documentation

Expand All @@ -10,13 +10,9 @@ Requires Rust 1.66+.
## `no_std` compatibility

In order to take advantage of `no_std` builds, downstream users of this crate
must enable:

* the `spin_no_std` feature of the `lazy_static` crate; and
* the `no_std` feature of the `typenum` crate.

This is needed because the `--no-default-features` builds of these crates still
rely on `std`.
must enable the `spin_no_std` feature of the `lazy_static` crate. This is
needed because the `--no-default-features` build of `lazy_static` still relies
on `std`.

## License

Expand Down
2 changes: 1 addition & 1 deletion benches/circuit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use criterion::{BenchmarkId, Criterion};
#[cfg(unix)]
use pprof::criterion::{Output, PProfProfiler};

use orchard::{
use orchard_internal::{
builder::{Builder, BundleType},
circuit::{ProvingKey, VerifyingKey},
keys::{FullViewingKey, Scope, SpendingKey},
Expand Down
2 changes: 1 addition & 1 deletion benches/note_decryption.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
use orchard::{
use orchard_internal::{
builder::{Builder, BundleType},
circuit::ProvingKey,
keys::{FullViewingKey, PreparedIncomingViewingKey, Scope, SpendingKey},
Expand Down
2 changes: 1 addition & 1 deletion benches/small.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use criterion::{criterion_group, criterion_main, Criterion};
use orchard::keys::{FullViewingKey, Scope, SpendingKey};
use orchard_internal::keys::{FullViewingKey, Scope, SpendingKey};

fn key_derivation(c: &mut Criterion) {
// Meaningless random spending key.
Expand Down
41 changes: 41 additions & 0 deletions public/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
[package]
name = "orchard"
version = "0.12.0"
authors = [
"Sean Bowe <ewillbefull@gmail.com>",
"Jack Grigg <thestr4d@gmail.com>",
"Daira-Emma Hopwood <daira@jacaranda.org>",
"Ying Tong Lai",
"Kris Nuttycombe <kris@nutty.land>",
]
edition = "2021"
rust-version = "1.70"
description = "The Orchard shielded transaction protocol"
license = "MIT OR Apache-2.0"
repository = "https://github.com/zcash/orchard"
documentation = "https://docs.rs/orchard"
readme = "README.md"
categories = ["cryptography::cryptocurrencies"]
keywords = ["zcash"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs", "--html-in-header", "katex-header.html"]

[dependencies]
__impl = { workspace = true }

[features]
default = ["circuit", "multicore", "std"]
std = ["__impl/std"]
circuit = ["__impl/circuit"]
multicore = ["__impl/multicore"]
unstable-frost = ["__impl/unstable-frost"]
dev-graph = ["__impl/dev-graph"]
test-dependencies = ["__impl/test-dependencies"]

[dev-dependencies]
incrementalmerkletree = "0.8.1"
rand = "0.8"
shardtree = "0.6"
zcash_note_encryption = "0.4"
1 change: 1 addition & 0 deletions public/LICENSE-APACHE
1 change: 1 addition & 0 deletions public/LICENSE-MIT
1 change: 1 addition & 0 deletions public/README.md
1 change: 1 addition & 0 deletions public/katex-header.html
Loading
Loading