Toolchain Lean
| Toolchain | Commit | Stato |
|---|---|---|
leanprover/lean4:v4.34.1 |
5045d0056413266e57c625dcd7c365b10e377c52 |
supportata |
Il lean-toolchain di un progetto deve indicare esattamente una toolchain supportata; qualsiasi
altro valore, compresi i nomi mobili (stable, nightly), fallisce con
LNG0102 prima che venga compilato qualcosa. Il lean --version della
toolchain installata deve corrispondere a quella fissata.
Rust
Rust 1.89 o successivo, edizione 2024.
Host e modalità
| Host | PureRust | LeanOracle | Limite di memoria del worker |
|---|---|---|---|
| Linux | sì | sì | sì |
| macOS | sì | sì | no (LNG0104) |
Windows, target *-windows-msvc |
sì | no (LNG0104) |
sì |
Windows, target *-windows-gnu |
sì | sì | sì |
- PureRust genera codice per qualsiasi target Rust, compresi i target di cross-compilazione; il codice generato non collega alcun runtime di Lean né codice C.
- LeanOracle collega il runtime nativo di Lean dalla toolchain dell’host e non può fare cross-compilazione. Su Windows richiede l’ABI GNU, per cui è compilato il runtime di Lean.
Il runtime precompilato
Ogni release pubblica il runtime (lungo runtime fetch --target <triple>) per:
| Target | Statica | Condivisa | Usato da |
|---|---|---|---|
x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu (glibc 2.28 o successiva) |
sì | sì | C, Go, Python |
x86_64-unknown-linux-musl, aarch64-unknown-linux-musl |
sì | C | |
x86_64-apple-darwin, aarch64-apple-darwin (macOS 12 o successivo) |
sì | sì | C, Go, Python, Swift |
aarch64-apple-ios, aarch64-apple-ios-sim, x86_64-apple-ios (iOS 15 o successivo) |
sì | C, Swift | |
x86_64-pc-windows-msvc |
sì | sì | C, Python |
x86_64-pc-windows-gnu |
sì | sì | C, Go (cgo compila con MinGW-w64) |
wasm32-wasip1 |
sì | TypeScript |
I runtime musl sono solo librerie statiche: le build musl sono crt-static, con cui Rust non
produce alcuna libreria condivisa.
I target Apple sono anche combinati in un unico XCFramework (macOS universale, iOS, simulatore iOS universale), usato dal pacchetto Swift.
Binding dei linguaggi
| Linguaggio | Richiede | Piattaforme |
|---|---|---|
| C | CMake 3.20, un compilatore C11 | ogni target qui sopra |
| Go | Go 1.22, cgo con un compilatore C (GCC di MinGW-w64 su Windows) | Linux (amd64, arm64), macOS (amd64, arm64), Windows (amd64) |
| Python | Python 3.9, CMake, un compilatore C per installare dai sorgenti | Linux (x86_64, aarch64, glibc), macOS (x86_64, arm64), Windows (x86_64) |
| Swift, Objective-C | Swift 5.9 | macOS, iOS, simulatore iOS |
| TypeScript | Node.js 20, oppure un browser | ovunque giri WebAssembly; niente thread, processi figli, socket, segnali o timer (LNG0408) |
lungo stesso gira su Linux (x86_64, aarch64), macOS (x86_64, arm64) e Windows (x86_64). Il
comando rilasciato è collegato staticamente su Linux (musl) e compilato per l’ABI GNU su
Windows, che è anche il target predefinito dei suoi comandi runtime.
Requisiti del progetto Lake
lean-toolchain,lakefile.tomlolakefile.lean, elake-manifest.json.- Le dipendenze bloccate nel manifest devono essere materializzate (
lake update, oppurelungo setup). Le build non risolvono, scaricano né aggiornano mai le dipendenze. - I moduli radice appartengono al pacchetto radice del progetto.