Create an empty taproot-primitives crate
What changed, and why it matters
This commit creates a brand-new, empty Rust crate named 'bitcoin-taproot-primitives'. It contains no executable code, no new logic, and no changes to existing behavior. It is purely a project structure change preparing for future development.
No security action needed. This is a normal repository restructuring commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch adds a new workspace member crate ‘taproot-primitives’ with a Cargo.toml, README, and an empty src/lib.rs. It updates the workspace member list and lock files accordingly. There is no implementation code, no dependency changes beyond the new crate registration, and no modifications to existing crates.
Changed components
workspace configuration (Cargo.toml)new taproot-primitives crate scaffoldingInspect captured patch +60 / −1
diff --git a/Cargo-minimal.lock b/Cargo-minimal.lock
index ee6b3104..a7c421c1 100644
--- a/Cargo-minimal.lock
+++ b/Cargo-minimal.lock
@@ -186,6 +186,10 @@ dependencies = [
"serde_json",
]
+[[package]]
+name = "bitcoin-taproot-primitives"
+version = "0.1.0"
+
[[package]]
name = "bitcoin-units"
version = "0.3.0"
diff --git a/Cargo-recent.lock b/Cargo-recent.lock
index 66b5898c..c4cdf369 100644
--- a/Cargo-recent.lock
+++ b/Cargo-recent.lock
@@ -185,6 +185,10 @@ dependencies = [
"serde_json",
]
+[[package]]
+name = "bitcoin-taproot-primitives"
+version = "0.1.0"
+
[[package]]
name = "bitcoin-units"
version = "0.3.0"
diff --git a/Cargo.toml b/Cargo.toml
index ea0e55e9..4021d577 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,5 +1,5 @@
[workspace]
-members = ["addresses", "base58", "bip158", "bitcoin", "chacha20_poly1305", "consensus_encoding", "crypto", "fuzz", "hashes", "internals", "io", "key_expression", "network", "p2p", "primitives", "units"]
+members = ["addresses", "base58", "bip158", "bitcoin", "chacha20_poly1305", "consensus_encoding", "crypto", "fuzz", "hashes", "internals", "io", "key_expression", "network", "p2p", "primitives", "taproot-primitives", "units"]
exclude = ["benches"]
resolver = "2"
diff --git a/taproot-primitives/Cargo.toml b/taproot-primitives/Cargo.toml
new file mode 100644
index 00000000..8583f71d
--- /dev/null
+++ b/taproot-primitives/Cargo.toml
@@ -0,0 +1,29 @@
+[package]
+name = "bitcoin-taproot-primitives"
+version = "0.1.0"
+authors = ["Andrew Poelstra <apoelstra@wpsoftware.net>"]
+license = "CC0-1.0"
+repository = "https://github.com/rust-bitcoin/rust-bitcoin"
+description = "Taproot stuff destined for bitcoin-primitives"
+categories = ["cryptography::cryptocurrencies"]
+keywords = ["bitcoin", "types"]
+readme = "README.md"
+edition = "2021"
+rust-version = "1.74.0"
+exclude = ["tests", "contrib"]
+
+[features]
+default = ["std"]
+std = ["alloc"]
+alloc = []
+
+[dependencies]
+
+[dev-dependencies]
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = ["--cfg", "docsrs"]
+
+[lints]
+workspace = true
diff --git a/taproot-primitives/README.md b/taproot-primitives/README.md
new file mode 100644
index 00000000..1ab45a17
--- /dev/null
+++ b/taproot-primitives/README.md
@@ -0,0 +1,8 @@
+# Taproot primitives
+
+This is stuff that will eventually end up in `primitives` but for
+which we are currently not 100% sure of the API.
+
+## Minimum Supported Rust Version (MSRV)
+
+This library should always compile with any combination of features on **Rust 1.74.0**.
\ No newline at end of file
diff --git a/taproot-primitives/src/lib.rs b/taproot-primitives/src/lib.rs
new file mode 100644
index 00000000..6c8fff71
--- /dev/null
+++ b/taproot-primitives/src/lib.rs
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: CC0-1.0
+
+//! Taproot stuff destined for bitcoin-primitives.
+
+#![no_std]
+// Experimental features we need.
+#![doc(test(attr(warn(unused))))]
+// Coding conventions.
+#![warn(deprecated_in_future)]
+#![warn(missing_docs)]
+// Exclude lints we don't think are valuable.
+#![allow(clippy::needless_question_mark)] // https://github.com/rust-bitcoin/rust-bitcoin/pull/2134
+#![allow(clippy::manual_range_contains)] // More readable than clippy's format.
+#![allow(clippy::uninlined_format_args)] // Allow `format!("{}", x)` instead of enforcing `format!("{x}")`
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.