Split orchard into orchard_internal (wide visibility) + orchard (API-preserving shim)#480
Conversation
028d3a6 to
c1d49e6
Compare
czarcas7ic
left a comment
There was a problem hiding this comment.
ACK, I have rebased the widening PR and fixed-base multiplication support PR onto this branch as well.
|
@ebfull what should the plan be with respect to crate publishing here? We're working toward an |
… via `orchard` crate in `public/`
Path-only deps without a `version` field cause `cargo publish` to reject the `orchard` shim crate: once published, cargo resolves the `orchard_internal` dep from crates.io, which requires a version to match against. Centralize the dep spec in the workspace table so the version and path stay in one place, and pin it to `=0.12.0` so the two crates can only ever be consumed as a matched set. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
`readme = \"../README.md\"` produced a `cargo package` warning because the in-package `public/README.md` (developer-facing directory blurb) took precedence over the referenced root README, meaning crates.io would have shown the wrong content. Replace the developer blurb with a symlink to the root README — cargo dereferences symlinks when packaging, so the published tarball contains a regular file with the correct content, and there is no longer any copy to keep in sync. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
91f066a to
af5beb4
Compare
|
force-pushed to rebase atop the |
czarcas7ic
left a comment
There was a problem hiding this comment.
ACK the commits since my last comment.
nuttycom
left a comment
There was a problem hiding this comment.
A couple of minor requests for changes; the main thing is why was some of the module documentation removed? I can't find that it was moved anywhere.
daira
left a comment
There was a problem hiding this comment.
utACK modulo Kris' review comments.
Reviewers (kris@nutty.land) flagged that the three-place value representation preamble (`NoteValue`, `ValueSum`, `valueBalanceOrchard`) and the `MAX_MONEY`/51-bit downstream guidance were removed without justification, along with the intra-doc link references. Restore the preamble and links. No code changes.
`rust-version` in the root `Cargo.toml` is already `1.85.1`; the README was still claiming 1.70+.
Per daira's review, update the personal email addresses used for Jack Grigg and Kris Nuttycombe in both `Cargo.toml` files.
Extend the ECC copyright range through 2025 and add a line for Zcash Open Development Lab for 2026, per daira's review.
The KaTeX header file was duplicated byte-for-byte at the repository root and under `public/`. Replace the duplicate with a relative symlink so edits at the root propagate automatically.
typenum 1.20.0 dropped the `no_std` feature (the crate is now no_std by default), so `cargo add typenum --no-default-features --features "no_std"` in the synthetic ci-build crate fails with "unrecognized feature for crate typenum: no_std". Drop the flag from both no_std CI workflows and the matching README bullet.
Address review feedback on zcash#480
|
@nuttycom I was in a holding pattern due to the security incidents, and was under the impression there would be a major release of |
| //! ## Nomenclature | ||
| //! | ||
| //! All types in the `orchard` crate, unless otherwise specified, are Orchard-specific | ||
| //! types. For example, [`Address`] is documented as being a shielded payment address; we | ||
| //! implicitly mean it is an Orchard payment address (as opposed to e.g. a Sapling payment | ||
| //! address, which is also shielded). |
There was a problem hiding this comment.
Note: this documentation is not removed; it's just moved to the public orchard crate.
|
Bumping this to |
Yup, I'm fine with getting this in to 0.13. I'll finish that today. |
Downstream extensions to Orchard, such as the new voting protocol, will want to create their own circuits while reusing components of this crate (especially its internal circuits). But, we would prefer that the API is not enlarged on
orcharditself.This PR turns this repository into a workspace. The existing
orchardcrate becomesorchard_internal(crate name reserved) andorchardis published from thepublic/subdirectory, which contains a shim crate implementation that exposes an identical API (and documentation) as the currentorchardcrate.Later,
orchard_internalwill have many components that are currentlypub(crate)turnedpub, and some very minor refactors to enable the voting circuits will also be folded in.