Skip to main content

Instant tools. Instant builds. One command.

Project description

soldr

Instant tools. Instant builds. One command.

soldr = crgx + zccache in a single tool.

In soldering, flux removes the oxide so the joint bonds clean. soldr removes the friction between you and your build: no waiting for tool installs, no waiting for recompilation.

The point of soldr is not to invent some brand-new primitive. The point is to combine the pieces that already work into one tool that people can actually rely on every day.

zccache is already excellent. crgx already proved the value of instant Rust tooling. soldr turns those into one front door:

  • get the right Rust tool for the job
  • get the right Windows ABI without thinking about it
  • get transparent compilation caching without separate setup

That is the same reason uv is compelling. uv did not win because it invented packaging, virtual environments, or Python installation. It won because it made the whole workflow feel like one tool instead of a pile of separate ones.

soldr aims for the same outcome in the Rust toolchain world.

Current release line:

  • 0.5.x is the secure front-door, tool-fetch, and built-in zccache-backed cache release line
  • 1.0.0-rc remains reserved for broader release hardening and bootstrap validation
  • the supported external integration boundary remains the soldr executable, not the internal Rust crates; see docs/API_BOUNDARY.md

Why soldr exists

On Windows, the real problem is not "how do I cache builds?" or "how do I download a tool binary?" in isolation.

The real problem is that the execution path is messy:

  • the wrong cargo can win on PATH
  • the wrong Windows target can get selected
  • GNU can leak in where MSVC should have been used
  • users end up debugging their toolchain instead of shipping code

soldr exists to make that path boring.

When you run soldr, the tool should do the obvious thing:

  • pick MSVC on Windows by default
  • fetch the tool you asked for
  • cache it locally
  • fetch and manage zccache so Rust builds get transparent caching without manual wrapper setup

If soldr solves that one problem well, it becomes a super tool: the command you reach for first, because it makes the rest of the stack behave.

  • Tool acquisition (the crgx half): Need maturin, cargo-dylint, or any crate binary? soldr fetches a pre-built binary from GitHub Releases in seconds. No cargo install from source. Cached locally for instant reuse. On 0.5.x, this is still an upstream trust decision rather than a repo-side trust guarantee; see docs/TRUST_BOUNDARIES.md.

  • Compilation caching (the zccache half): soldr cargo ... now fetches and manages a pinned zccache release for Rust builds. soldr owns the zccache daemon/session wiring; zccache's artifact store still uses its current default cache root.

# Build through soldr's front door:
soldr cargo build --release
soldr cargo test
soldr --no-cache cargo test

# Fetch and run any Rust tool instantly:
soldr maturin build --release
soldr cargo-dylint check
soldr rustfmt src/main.rs

How it works

soldr cargo build --release
  +-- resolve the real cargo binary
  +-- fetch/start managed zccache when cache is enabled
  +-- set soldr as the compiler wrapper for this build
  +-- have soldr wrapper mode delegate to managed zccache
  +-- delegate to cargo with your existing flags

soldr maturin build --release
  +-- maturin cached? --> run instantly
  +-- not cached?     --> download pre-built binary (2s) --> run

Design goals

  • One obvious command: Fetch tools, pick the right Windows target, and run through managed zccache through the same entry point.
  • Front-door builds: soldr cargo ... is the primary build UX.
  • Invisible caching: soldr cargo ... uses a soldr-managed zccache by default, with soldr --no-cache cargo ... as the opt-out.
  • Real cache controls: soldr status, soldr cache, and soldr clean report and manage the soldr-managed zccache state instead of placeholder behavior.
  • One cache boundary, eventually: soldr keeps its own tools and zccache session state in ~/.soldr/. Current zccache artifacts still live in zccache's default cache root until upstream exposes a supported cache-dir override.
  • Pre-built first: Download a pre-built binary before compiling from source. Fall back gracefully.
  • Cargo-compatible: soldr preserves normal cargo arguments instead of forcing a separate workflow.
  • Cross-platform: Linux, macOS, Windows (x86_64 + aarch64).
  • MSVC by default on Windows: Always targets x86_64-pc-windows-msvc (or aarch64-pc-windows-msvc) unless the active project explicitly selects another target in .cargo/config.toml, .cargo/config, or rust-toolchain.toml. MSVC links against vcruntime140.dll which ships with every modern Windows install. The GNU target requires shipping libgcc_s_seh-1.dll and libwinpthread-1.dll with every binary, which is extra baggage for no benefit. This matches the Rust ecosystem default: rustup, cargo-binstall, and nearly all published release binaries target MSVC. crgx gets this wrong by baking the target at compile time, causing it to look for GNU binaries when compiled under MSYS2.

Architecture

soldr/
|-- crates/
|   |-- soldr-core/      # Shared types, config, cache directory layout
|   |-- soldr-fetch/     # Binary resolution + download (the crgx half)
|   |-- soldr-cache/     # Compilation caching (the zccache half)
|   `-- soldr-cli/       # CLI entry point + wrapper mode
|-- src/soldr/           # Python package (maturin bin bindings)
`-- tests/
Crate Role
soldr-core Cache paths, config, version types
soldr-fetch Resolve crate binaries from crates.io metadata and GitHub Releases. Download and cache.
soldr-cache zccache integration helpers, cache policy, session plumbing.
soldr-cli Mode detection, cargo front door, built-in commands (status, clean, config, cache), tool fetch dispatch.

These workspace crates are implementation details. They are not a supported public Rust library API.

Prior art

Built on lessons from:

Security And Verification

License

BSD-3-Clause

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

soldr-0.7.0-py3-none-win_arm64.whl (2.4 MB view details)

Uploaded Python 3Windows ARM64

soldr-0.7.0-py3-none-win_amd64.whl (2.6 MB view details)

Uploaded Python 3Windows x86-64

soldr-0.7.0-py3-none-manylinux_2_39_x86_64.whl (3.0 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

soldr-0.7.0-py3-none-manylinux_2_39_aarch64.whl (2.9 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ ARM64

soldr-0.7.0-py3-none-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

soldr-0.7.0-py3-none-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file soldr-0.7.0-py3-none-win_arm64.whl.

File metadata

  • Download URL: soldr-0.7.0-py3-none-win_arm64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for soldr-0.7.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 9e297c34296ebbac3036f9011fbd0b0c7409a5765b9770626280f4600f1ebdb3
MD5 07c4a6abb3139fafbcabc4067e731480
BLAKE2b-256 b176e3a348a05251b5a80df0ece4e9c2c830b1ce1adb9418d288060618b71e14

See more details on using hashes here.

Provenance

The following attestation bundles were made for soldr-0.7.0-py3-none-win_arm64.whl:

Publisher: release.yml on zackees/soldr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soldr-0.7.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: soldr-0.7.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for soldr-0.7.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1b749e51595abca5b325f37b6217104f19cbabbf73b895558a75b9f2522d9bef
MD5 37d1a771814a0c575cee738764fb9eae
BLAKE2b-256 8cbcbc4182dfde721d8042fffd9b80bd6322e0961dc58bfbae04da7e4b72f857

See more details on using hashes here.

Provenance

The following attestation bundles were made for soldr-0.7.0-py3-none-win_amd64.whl:

Publisher: release.yml on zackees/soldr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soldr-0.7.0-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for soldr-0.7.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 003b75cf684c1be78ede590690283a646fead8ca287b03c63671dca833ad29d0
MD5 3d87e293f8c64bb0f4bfdfa92287eea9
BLAKE2b-256 9ce3468ac6e5f86f5b5f966a5de8dd605f00efcd5c7a05f47844d6c5966b338a

See more details on using hashes here.

Provenance

The following attestation bundles were made for soldr-0.7.0-py3-none-manylinux_2_39_x86_64.whl:

Publisher: release.yml on zackees/soldr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soldr-0.7.0-py3-none-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for soldr-0.7.0-py3-none-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 0804c5e12bffe1219f573d66e666de15f2b032175cae83b8f75e56c8a7a1d2ce
MD5 5d08f804224c9e27e630f23a2fff551d
BLAKE2b-256 29d6827acd12fc8d4c291cfd6c71daf59e73a23282584db7aa1ec135f0a51311

See more details on using hashes here.

Provenance

The following attestation bundles were made for soldr-0.7.0-py3-none-manylinux_2_39_aarch64.whl:

Publisher: release.yml on zackees/soldr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soldr-0.7.0-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: soldr-0.7.0-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for soldr-0.7.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 27e5ad1933c213c37da1c0354ebe961d5a443c0d3cc30a458ba25b8bbcddf644
MD5 51b4c7f9a0607259e4d9bd8cacf11c9c
BLAKE2b-256 572c38b0366677e5a7b1f3e8a612f7787a07e04b81177bb2c9e034308eef39e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for soldr-0.7.0-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on zackees/soldr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soldr-0.7.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for soldr-0.7.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 009f08913325f807cb48bd58525a664102c63a1838cc7ed25d7dc053dfdbb380
MD5 2c36e5fa9ddb44bac423cc043ab8e577
BLAKE2b-256 883bc03ade86970c66712753986377ba1adfa9693cf73acbfabf9dcc70482c3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for soldr-0.7.0-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on zackees/soldr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page