Skip to content
Jack Grigg edited this page Oct 3, 2024 · 3 revisions

This repository contains a set of core Rust crates that power much of the Zcash ecosystem. As such, they have many different downstream consumers with differing needs. In this wiki we document how we develop the crates, and how changes can flow through from a proposed idea to being included in a published production crate release.

Development overview

This repository is currently developed with an "unstable main" workflow. The current contents of the main branch is a preview of what the next full release of all crates may look like, but is not stable. For example, as-yet-unreleased zcash_client_sqlite migrations may be altered incompatibly at any time.

In the main branch, all crates have the version corresponding to their most recent stable release on https://crates.io; this enables the preview state to be tested ahead-of-time by downstream users via [patch.crates-io] directives.

Individual crates have their own tags, e.g. zcash_primitives-0.19.0. These tags point to the Git commit at which that crate version was published (which in general is not the merge commit for a release branch, but the actual commit that incremented the crate's version). Note however that other crates should not be considered stable at that revision, even if the tagged crate depends on them (there may be backwards-incompatible changes to upstream crates in the branch that are not used by the tagged crate and do not affect its public API).

Making changes to the crates

TBD

Clone this wiki locally