@zackees/soldr 0.8.44 → 0.9.1
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
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# Soldr / Rust
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
<img width="1536" height="1024" alt="ChatGPT Image Apr 19, 2026, 09_43_32 PM" src="https://github.com/user-attachments/assets/87d94693-3542-4f4f-8b02-600bf0b9810e" />
|
|
5
6
|
|
|
7
|
+
*Beta software, please pin*
|
|
6
8
|
|
|
7
9
|
*A tool to download rust tool sets and aggressive cache your build. **2× faster cross-PR builds** via content-addressed caching that swatinem's per-key cache cannot share. GH and local builds. Just add soldr before all your build commands.*
|
|
8
10
|
|
|
9
|
-
Third-party comparison (soldr vs Swatinem/rust-cache vs ...): published from `zackees/setup-soldr` — see its `comparison-cluster` workflow and the rendered page once the migration in soldr#674 completes. The legacy `https://zackees.github.io/soldr/` page is being repurposed for soldr-internal per-scenario regression history (no third-party comparison surface lives on this repo anymore).
|
|
10
11
|
|
|
11
12
|
[](https://github.com/zackees/soldr/actions/workflows/ci.yml)
|
|
12
13
|
[](https://github.com/zackees/soldr/actions/workflows/release-auto.yml)
|
|
@@ -69,8 +70,8 @@ The current GitHub Actions entry point is the public `setup-soldr` action:
|
|
|
69
70
|
with:
|
|
70
71
|
cache: true
|
|
71
72
|
|
|
72
|
-
- run: soldr cargo build --
|
|
73
|
-
- run: soldr cargo test
|
|
73
|
+
- run: soldr cargo build --release
|
|
74
|
+
- run: soldr cargo test
|
|
74
75
|
```
|
|
75
76
|
|
|
76
77
|
That action:
|
|
@@ -90,8 +91,8 @@ For existing workflows where rewriting every `cargo ...` command is high-frictio
|
|
|
90
91
|
with:
|
|
91
92
|
tool-shims: cargo
|
|
92
93
|
|
|
93
|
-
- run: cargo build --
|
|
94
|
-
- run: cargo test
|
|
94
|
+
- run: cargo build --release
|
|
95
|
+
- run: cargo test
|
|
95
96
|
```
|
|
96
97
|
|
|
97
98
|
The shim mode is off by default. When enabled, the action resolves the real Cargo binary before prepending its shim directory, then exports that real path for Soldr so `cargo ...` can safely trampoline into `soldr cargo ...` without recursive PATH lookup.
|
|
@@ -114,7 +115,7 @@ Two equivalent ways to declare a cross target: declaratively via `rust-toolchain
|
|
|
114
115
|
```toml
|
|
115
116
|
# rust-toolchain.toml — declarative (preferred)
|
|
116
117
|
[toolchain]
|
|
117
|
-
channel = "1.
|
|
118
|
+
channel = "1.95.0"
|
|
118
119
|
targets = ["aarch64-pc-windows-msvc"]
|
|
119
120
|
```
|
|
120
121
|
|
|
@@ -187,7 +188,6 @@ If soldr solves that one problem well, it becomes a super tool: the command you
|
|
|
187
188
|
# Build through soldr's front door:
|
|
188
189
|
soldr cargo build --release
|
|
189
190
|
soldr cargo test
|
|
190
|
-
soldr --no-cache cargo test
|
|
191
191
|
soldr purge
|
|
192
192
|
SOLDR_RUSTC_WRAPPER=sccache soldr cargo build
|
|
193
193
|
SOLDR_RUSTC_WRAPPER=none soldr cargo build
|
|
@@ -215,6 +215,32 @@ formatter because Cargo's explicit crate-root argv does not include child
|
|
|
215
215
|
modules that rustfmt discovers itself. A content-marker shortcut is used only
|
|
216
216
|
for invocations that explicitly set `skip_children=true`.
|
|
217
217
|
|
|
218
|
+
## Compile C and C++ directly
|
|
219
|
+
|
|
220
|
+
`soldr cc` and `soldr c++` expose the same catalogue-backed compilers and
|
|
221
|
+
sysroots used by blessed Rust cross-builds. GNU/Linux defaults to the pinned
|
|
222
|
+
glibc 2.17 toolchain:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
soldr cc --target x86_64-linux-gnu.2.17 hello.c -o hello
|
|
226
|
+
./hello
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
CMake accepts the command plus its required target arguments through `CC` and
|
|
230
|
+
`CXX`:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
CC="soldr cc --target x86_64-linux-gnu.2.17" \
|
|
234
|
+
CXX="soldr c++ --target x86_64-linux-gnu.2.17" \
|
|
235
|
+
cmake -S . -B build
|
|
236
|
+
cmake --build build
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Omit `--target` to select the host triple. The first standalone slice supports
|
|
240
|
+
the catalogue GNU/Linux and musl/Linux targets plus
|
|
241
|
+
`x86_64-pc-windows-gnu`. External build tooling can query the prepared tool
|
|
242
|
+
paths with `--print-cc`, `--print-cxx`, `--print-ar`, and `--print-linker`.
|
|
243
|
+
|
|
218
244
|
## Use soldr as your PEP 517 build backend (instead of maturin)
|
|
219
245
|
|
|
220
246
|
For Rust+Python packages, point `pyproject.toml` at soldr instead of
|
|
@@ -404,7 +430,7 @@ If you also have many separate test binaries, consider consolidating them under
|
|
|
404
430
|
|
|
405
431
|
- **One obvious command**: Fetch tools, pick the right Windows target, and run through Soldr's embedded zccache service through the same entry point.
|
|
406
432
|
- **Front-door builds**: `soldr cargo ...` is the primary build UX.
|
|
407
|
-
- **
|
|
433
|
+
- **Broker-owned caching**: `soldr cargo ...` uses the zccache service embedded in a broker-placed `soldr-daemon`; cacheable compiler work has one mandatory route.
|
|
408
434
|
- **Real cache controls**: `soldr status`, `soldr cache`, and `soldr clean` report and manage embedded-zccache state, while `soldr purge` removes all Soldr-managed cache artifacts for bug clearing and benchmarking.
|
|
409
435
|
- **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.
|
|
410
436
|
- **Bounded while idle**: the long-lived daemon owns only its selected root,
|
|
@@ -437,7 +463,7 @@ soldr/
|
|
|
437
463
|
|
|
438
464
|
| Crate | Role |
|
|
439
465
|
|---|---|
|
|
440
|
-
| `soldr-core` | Shared types, config (`~/.soldr/config.toml`), target-triple resolution (MSVC default on Windows), the daemon wire schema, error types
|
|
466
|
+
| `soldr-core` | Shared types, config (`~/.soldr/config.toml`), target-triple resolution (MSVC default on Windows), the daemon wire schema, error types. No I/O beyond config files. |
|
|
441
467
|
| `soldr-fetch` | Binary resolution. `known_tools` registry, `trust` (SHA-256 pins + `SOLDR_TRUST_MODE` enforcement), rustup auto-bootstrap, resolution chain (local cache → repo lookup → GitHub Releases → extract). |
|
|
442
468
|
| `soldr-cache` | `RUSTC_WRAPPER` mode: hash inputs (blake3), check `~/.soldr/cache/`, daemon IPC (Unix socket / Windows named pipe), LRU eviction, `soldr save` / `soldr load` archive transport, auto-GC. |
|
|
443
469
|
| `soldr-daemon` | Daemon lifecycle (spawn/displacement/relocation), IPC server, wire codec, and the embedded zccache service. Depends on `soldr-core` + `soldr-cache`. |
|
|
@@ -12,52 +12,52 @@
|
|
|
12
12
|
{
|
|
13
13
|
"id": "rust-embedded-runtime-topology",
|
|
14
14
|
"gate": "hard",
|
|
15
|
-
"command": "soldr --no-cache cargo
|
|
15
|
+
"command": "soldr --no-cache cargo nextest run -p soldr-cli --test no_standalone_spawn_lint"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"id": "rust-zccache-entry",
|
|
19
19
|
"gate": "hard",
|
|
20
|
-
"command": "soldr --no-cache cargo
|
|
20
|
+
"command": "soldr --no-cache cargo nextest run -p soldr-cli --test zccache_trampoline_gate"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"id": "rust-wrapper-env",
|
|
24
24
|
"gate": "hard",
|
|
25
|
-
"command": "soldr --no-cache cargo
|
|
25
|
+
"command": "soldr --no-cache cargo nextest run -p soldr-cli --test cli_cargo_wrappers"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"id": "rust-rust-plan",
|
|
29
29
|
"gate": "hard",
|
|
30
|
-
"command": "soldr --no-cache cargo
|
|
30
|
+
"command": "soldr --no-cache cargo nextest run -p soldr-cli --test cli_rust_plan"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"id": "rust-cache-cli",
|
|
34
34
|
"gate": "hard",
|
|
35
|
-
"command": "soldr --no-cache cargo
|
|
35
|
+
"command": "soldr --no-cache cargo nextest run -p soldr-cli --test cli_cache"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"id": "rust-cache-session",
|
|
39
39
|
"gate": "hard",
|
|
40
|
-
"command": "soldr --no-cache cargo
|
|
40
|
+
"command": "soldr --no-cache cargo nextest run -p soldr-cli --lib cache::session::tests"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"id": "rust-native-cache-unit",
|
|
44
44
|
"gate": "hard",
|
|
45
|
-
"command": "soldr --no-cache cargo
|
|
45
|
+
"command": "soldr --no-cache cargo nextest run -p soldr-cli --lib native_cc::tests"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
"id": "rust-native-cache-integration",
|
|
49
49
|
"gate": "hard",
|
|
50
|
-
"command": "soldr --no-cache cargo
|
|
50
|
+
"command": "soldr --no-cache cargo nextest run -p soldr-cli --test cli_cargo_native_cc"
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"id": "rust-wrapper-perf",
|
|
54
54
|
"gate": "hard",
|
|
55
|
-
"command": "soldr --no-cache cargo
|
|
55
|
+
"command": "soldr --no-cache cargo nextest run -p soldr-cli --test cli_wrapper_perf"
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
58
|
"id": "rust-watchdog-lint",
|
|
59
59
|
"gate": "hard",
|
|
60
|
-
"command": "soldr --no-cache cargo
|
|
60
|
+
"command": "soldr --no-cache cargo nextest run -p soldr-cli --test no_timed_test_guard"
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
"id": "python-setup-contracts",
|
|
@@ -321,11 +321,11 @@
|
|
|
321
321
|
"gate": "hard",
|
|
322
322
|
"covers": [
|
|
323
323
|
"zccache integration tests live outside monolithic source modules",
|
|
324
|
-
"
|
|
324
|
+
"the removed per-test watchdog does not return (timeouts belong to nextest)",
|
|
325
325
|
"embedded-runtime contract tests remain discoverable"
|
|
326
326
|
],
|
|
327
327
|
"test_files": [
|
|
328
|
-
"crates/soldr-cli/tests/
|
|
328
|
+
"crates/soldr-cli/tests/no_timed_test_guard.rs",
|
|
329
329
|
"crates/soldr-cli/tests/no_standalone_spawn_lint.rs",
|
|
330
330
|
"crates/soldr-cli/tests/zccache_trampoline_gate.rs",
|
|
331
331
|
"crates/soldr-cli/src/cargo_front_door/cache_plan.rs"
|