@zackees/soldr 0.8.19 → 0.8.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Third-party comparison (soldr vs Swatinem/rust-cache vs ...): published from `za
|
|
|
18
18
|
|
|
19
19
|
*[performance details](https://zackees.github.io/soldr/)*
|
|
20
20
|
|
|
21
|
-
Cold builds are a wash; warm and cross-worktree
|
|
21
|
+
Cold builds are a wash; clean-target reconstruction from a warm compiler cache and cross-worktree sharing are where soldr's wrapper architecture pays off. The README chart's clean-target row intentionally deletes `target/`; it does not claim Cargo's intact-target freshness fast path. Full historical trend + interactive view: [zackees.github.io/soldr](https://zackees.github.io/soldr/). For the swatinem/rust-cache comparison (GHA target-dir caching, a different layer) see [PERF.md](PERF.md#readme-comparison-bars-issue-785).
|
|
22
22
|
|
|
23
23
|
**Instant tools. Instant builds. One command.**
|
|
24
24
|
|
|
@@ -169,13 +169,13 @@ When you run `soldr`, the tool should do the obvious thing:
|
|
|
169
169
|
- pick MSVC on Windows by default
|
|
170
170
|
- fetch the tool you asked for
|
|
171
171
|
- cache it locally
|
|
172
|
-
-
|
|
172
|
+
- run the built-in zccache service so Rust builds get transparent caching without manual wrapper setup
|
|
173
173
|
|
|
174
174
|
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.
|
|
175
175
|
|
|
176
176
|
- **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](./docs/TRUST_BOUNDARIES.md).
|
|
177
177
|
|
|
178
|
-
- **Compilation caching** (the zccache half): `soldr cargo ...`
|
|
178
|
+
- **Compilation caching** (the zccache half): `soldr cargo ...` uses the zccache service compiled into Soldr. soldr owns the daemon/session wiring and keeps its object store under the active Soldr root at `cache/zccache/daemon-state/embedded-v1/<zccache-version>/objects`, so production and development roots remain isolated.
|
|
179
179
|
|
|
180
180
|
```bash
|
|
181
181
|
# Build through soldr's front door:
|
|
@@ -240,11 +240,26 @@ files touched. What you get over `build-backend = "maturin"`:
|
|
|
240
240
|
- **Compilation caching** — rustc invocations run under soldr's
|
|
241
241
|
`RUSTC_WRAPPER`, so repeat builds hit the cache.
|
|
242
242
|
|
|
243
|
-
Local PEP 517 builds use
|
|
244
|
-
debug information, no LTO, and
|
|
245
|
-
|
|
243
|
+
Local PEP 517 builds use an explicit fast `dev` profile by default:
|
|
244
|
+
`opt-level = 0`, 256 codegen units, line-table debug information, no LTO, and
|
|
245
|
+
incremental compilation. Explicit Maturin/Cargo settings and
|
|
246
|
+
`SOLDR_PEP517_PROFILE` remain authoritative per setting; release pipelines
|
|
246
247
|
should select their release profile explicitly.
|
|
247
248
|
|
|
249
|
+
Successful wheel and editable builds print a one-line cache and timing summary
|
|
250
|
+
to stderr. Set `SOLDR_PEP517_STATS=off` to silence it; `SOLDR_PEP517_STATS=full`
|
|
251
|
+
(and detected verbose `pip`/`uv` frontends) also prints the complete session
|
|
252
|
+
statistics payload.
|
|
253
|
+
|
|
254
|
+
Soldr also caches the last successful wheel for each project/build mode under
|
|
255
|
+
`<effective-soldr-root>/pep517/wheels/`. The backend asks the selected soldr
|
|
256
|
+
binary for this root, so official (`.soldr`), development (`.soldr-dev`), and
|
|
257
|
+
custom roots remain separate even when `SOLDR_CACHE_DIR` was initially unset.
|
|
258
|
+
Before packaging it scans source and staged-artifact
|
|
259
|
+
metadata (relative path, size, and modification time); an unchanged tree
|
|
260
|
+
hardlinks the cached wheel into pip's requested output directory and skips
|
|
261
|
+
wheel rebuilding/compression. Set `SOLDR_PEP517_WHEEL_CACHE=off` to opt out.
|
|
262
|
+
|
|
248
263
|
Projects whose packaging backend is not maturin can use soldr as a managed
|
|
249
264
|
wrapper by selecting a delegate in `pyproject.toml`:
|
|
250
265
|
|
|
@@ -367,7 +382,13 @@ If you also have many separate test binaries, consider consolidating them under
|
|
|
367
382
|
- **Front-door builds**: `soldr cargo ...` is the primary build UX.
|
|
368
383
|
- **Invisible caching**: `soldr cargo ...` uses a soldr-managed zccache by default, with `soldr --no-cache cargo ...` as the opt-out.
|
|
369
384
|
- **Real cache controls**: `soldr status`, `soldr cache`, and `soldr clean` report and manage the soldr-managed zccache state, while `soldr purge` removes all Soldr-managed cache artifacts for bug clearing and benchmarking.
|
|
370
|
-
- **One cache boundary**: soldr keeps its
|
|
385
|
+
- **One cache boundary**: official soldr keeps its tools and cache state under `~/.soldr/`; development builds use `~/.soldr-dev/`. Use `SOLDR_CACHE_DIR` to select an explicit root.
|
|
386
|
+
- **Bounded while idle**: the long-lived daemon owns only its selected root,
|
|
387
|
+
checks pressure every five minutes, expires old state daily, and installs no
|
|
388
|
+
OS scheduler. Embedded zccache defaults to 5% of the filesystem clamped to
|
|
389
|
+
40–200 GiB, becomes aggressive for entries older than four days near full,
|
|
390
|
+
and expires artifacts after 30 days. Production, development (`.soldr-dev`),
|
|
391
|
+
custom, and standalone `.zccache` roots never sweep one another.
|
|
371
392
|
- **Disposable-worktree friendly on Windows**: for build orchestration, soldr can relocate itself under `~/.soldr/runtime/soldr-self/` so `RUSTC_WRAPPER` does not keep using a worktree-local `soldr.exe`; stale runtime copies are cleaned up periodically.
|
|
372
393
|
- **Pre-built first**: Download a pre-built binary before compiling from source. Fall back gracefully.
|
|
373
394
|
- **Cargo-compatible**: soldr preserves normal cargo arguments instead of forcing a separate workflow.
|