Migrating from 0.3 to 0.4

0.4 extracts the confium-tc god-crate into focused sub-crates (confium-tc-core, confium-coordinator, confium-tc-keys, confium-crypto-vss, confium-crypto-zk, confium-privacy, confium-observability, confium-pki-tc). The confium-tc facade stays in place and its re-exports are NOT yet deprecated — they will be in 0.5, and removed in 0.6.

Status: Draft — the extracted sub-crates shipped in 0.4.0 (currently 0.4.7); deprecation of the facade re-exports is queued for 0.5. This guide is for consumers who want to switch to the focused crates now.

What changed in 0.4

Extracted sub-crates available

New consumers can depend directly on the extracted crates:

Old path New path
confium_tc::coordinator confium_coordinator
confium_tc::paillier confium_crypto_vss::paillier
confium_tc::share_envelope confium_tc_core::share_envelope
confium_tc::session, message, party, registry, share confium_tc_core::*
confium_tc::ring_sig (in progress) confium_privacy::ring_sig

Scheme crates (confium-tc-cmp20, -gg18, -frost-*) still depend on confium-tc because they need paillier (which lives there). Moving paillier into confium-crypto-vss is queued for 0.5 as part of P1 #56 as part of the remaining-work catalog.

confium-tc facade re-exports NOT deprecated yet

The pub use re-exports in confium-tc/src/lib.rs continue to work without warnings. Deprecation is queued for 0.5. Today, consumers can choose either path.

Cargo features

confium-tc doesn’t yet have product-aligned Cargo featuresqueued for 0.5). For per-product feature gating today, depend on the product facades (confium-threshold, confium-pki, confium-keyless, etc.).

Migration steps

  1. Audit your imports — anywhere you write confium_tc::X, check whether X is now in an extracted crate via the table above.
  2. Switch imports where the extracted crate is the better home. The facade still re-exports everything, so a mix is fine.
  3. For new code, depend on the focused crate directly. The build time win is significant: scheme crates that switch from confium-tc (27K lines) to confium-tc-core (5K lines) see 4-5x faster incremental builds.

Why we’re doing this

confium-tc was a 120-module god-crate. The 0.4 restructuring extracted 8 focused crates but kept confium-tc as a thin facade for back-compat. In 0.5 we’ll deprecate the facade to signal the new shape. In 0.6 the facade is emptied.

The benefit: new consumers depend on focused crates (5K lines each), not the 27K-line facade. Build times drop; dependency graphs shrink; crate boundaries become real.

Need help

Open a Discussion tagged migration-help.