Skip to content

Commit bed0456

Browse files
committed
docs: document nightly rustc and fast linker
Describe nightly parallel rustc defaults and opt-in/out variables Update fast-linker examples and overrides in validator docs
1 parent 57d4cf5 commit bed0456

2 files changed

Lines changed: 52 additions & 7 deletions

File tree

README.md

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,36 @@ The repository ships with `.cargo/config.toml` configured to use all available C
5454
(`build.jobs = "default"`). You can override this locally with `CARGO_BUILD_JOBS=8` (or any integer) when
5555
you want a smaller build footprint.
5656

57-
To enable nightly-only parallel rustc and a faster linker, set the environment variables below:
57+
Nightly-only parallel rustc is enabled by default when you use the nightly toolchain file
58+
(`rust-toolchain-nightly.toml`), which sets `PLATFORM_NIGHTLY_RUSTFLAGS="-Z threads=0"`. If you opt into
59+
nightly via `RUSTUP_TOOLCHAIN=nightly` or `cargo +nightly`, you can still enable parallel rustc by setting
60+
`PLATFORM_NIGHTLY_RUSTFLAGS` manually.
61+
62+
Fast linker support is opt-in via environment variables. Supported linkers:
63+
64+
- **Linux**: `mold`, `lld`
65+
- **macOS**: `lld`, `zld`
5866

5967
```bash
6068
# Nightly parallel rustc (requires nightly toolchain)
6169
export RUSTUP_TOOLCHAIN=nightly
6270
export PLATFORM_NIGHTLY_RUSTFLAGS="-Z threads=0"
6371

6472
# Fast linker (install one of mold or lld, then select it)
65-
export PLATFORM_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=mold"
66-
# export PLATFORM_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=lld"
73+
export PLATFORM_FAST_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=mold"
74+
# export PLATFORM_FAST_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=lld"
75+
76+
# macOS linker selection
77+
# export PLATFORM_FAST_LINKER_RUSTFLAGS_DARWIN="-C link-arg=-fuse-ld=lld"
78+
# export PLATFORM_FAST_LINKER_RUSTFLAGS_DARWIN="-C link-arg=-fuse-ld=zld"
6779

6880
cargo build
6981
```
7082

83+
Opt out of parallel rustc by unsetting `PLATFORM_NIGHTLY_RUSTFLAGS` or setting it to an empty string.
84+
To override the default fast-linker flags, set `PLATFORM_LINKER_RUSTFLAGS` (Linux) or
85+
`PLATFORM_LINKER_RUSTFLAGS_DARWIN` (macOS).
86+
7187
Fast linker prerequisites (Ubuntu/Debian):
7288

7389
```bash
@@ -81,14 +97,14 @@ sudo apt-get install -y lld
8197

8298
CI runs stable by default. To run nightly builds/tests, trigger the workflow manually and set
8399
`run_nightly=true` in the GitHub Actions workflow dispatch input. The nightly job sets
84-
`PLATFORM_NIGHTLY_RUSTFLAGS` and `PLATFORM_LINKER_RUSTFLAGS` automatically.
100+
`PLATFORM_NIGHTLY_RUSTFLAGS` and `PLATFORM_FAST_LINKER_RUSTFLAGS` automatically.
85101

86102
Example for a custom CI step:
87103

88104
```bash
89105
export RUSTUP_TOOLCHAIN=nightly
90106
export PLATFORM_NIGHTLY_RUSTFLAGS="-Z threads=0"
91-
export PLATFORM_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=mold"
107+
export PLATFORM_FAST_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=mold"
92108
cargo test
93109
```
94110

@@ -99,7 +115,7 @@ Dockerfiles are only used for Docker-backed test harnesses. The validator runs d
99115
```bash
100116
docker build \
101117
--build-arg INSTALL_FAST_LINKER=mold \
102-
--build-arg PLATFORM_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=mold" \
118+
--build-arg PLATFORM_FAST_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=mold" \
103119
--build-arg PLATFORM_NIGHTLY_RUSTFLAGS="-Z threads=0" \
104120
-t platform:nightly .
105121
```

docs/validator.md

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,35 @@ The validator will auto-connect to the network and sync. No GPUs, no third-party
8585

8686
- Linux (Ubuntu 22.04+ recommended)
8787

88+
### Build Tooling (Nightly Parallel rustc + Fast Linker)
89+
90+
Validator development builds can take advantage of nightly parallel rustc and fast linkers.
91+
Nightly defaults are enabled when using `rust-toolchain-nightly.toml` (it sets
92+
`PLATFORM_NIGHTLY_RUSTFLAGS="-Z threads=0"`). If you opt into nightly with `RUSTUP_TOOLCHAIN=nightly`
93+
or `cargo +nightly`, set the variable yourself.
94+
95+
Supported fast linkers:
96+
97+
- **Linux**: `mold`, `lld`
98+
- **macOS**: `lld`, `zld`
99+
100+
```bash
101+
export RUSTUP_TOOLCHAIN=nightly
102+
export PLATFORM_NIGHTLY_RUSTFLAGS="-Z threads=0"
103+
104+
export PLATFORM_FAST_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=mold"
105+
# export PLATFORM_FAST_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=lld"
106+
107+
# macOS linker selection
108+
# export PLATFORM_FAST_LINKER_RUSTFLAGS_DARWIN="-C link-arg=-fuse-ld=lld"
109+
# export PLATFORM_FAST_LINKER_RUSTFLAGS_DARWIN="-C link-arg=-fuse-ld=zld"
110+
111+
cargo build
112+
```
113+
114+
Opt out by unsetting `PLATFORM_NIGHTLY_RUSTFLAGS` or setting it to an empty string. To override defaults,
115+
set `PLATFORM_LINKER_RUSTFLAGS` (Linux) or `PLATFORM_LINKER_RUSTFLAGS_DARWIN` (macOS).
116+
88117
### Bittensor
89118

90119
- **Minimum stake**: 1000 TAO
@@ -167,7 +196,7 @@ To opt into nightly-only parallel rustc and a faster linker, set:
167196
```bash
168197
export RUSTUP_TOOLCHAIN=nightly
169198
export PLATFORM_NIGHTLY_RUSTFLAGS="-Z threads=0"
170-
export PLATFORM_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=mold"
199+
export PLATFORM_FAST_LINKER_RUSTFLAGS="-C link-arg=-fuse-ld=mold"
171200
```
172201

173202
Install a fast linker (Ubuntu/Debian):

0 commit comments

Comments
 (0)