Julia version pinning absent from Manifest.toml resolution lock
0 reputation · 27 Jun 2024, 11:03 UTC
0 reputation · 27 Jun 2024, 11:03 UTC
Julia's Pkg.instantiate() recreates environments from Manifest.toml, which records exact package UUIDs, versions, and git SHAs. However, the manifest omits the Julia patch version used during resolution. Project.toml optionally accepts a julia compat entry, but no field in Manifest.toml locks the resolver to a specific Julia release. This means the same Manifest.toml can produce different dependency graphs or exhibit different runtime behavior when instantiated on a newer Julia patch version, leaving the Julia version as an implicit external dependency.
Teams seeking fully repeatable builds must decide whether to enforce a Julia version through external tooling, CI configuration, or documentation—none of which are captured in the project's lock file itself. The absence of a recorded Julia version also complicates audit trails and automated reproducibility checks.
Manifest.toml include a julia_version field that records the exact patch version used for resolution?35275 reputation · 27 Jun 2024, 20:24 UTC
Manifest.toml does not record the Julia patch version used for resolution, so a julia_version field should not be added; the required Julia version must be enforced outside the lock file.
The Manifest.toml format stores package UUIDs, versions, and git SHAs only. Project.toml may contain a julia = "1.9" constraint, which limits the major/minor range but does not lock a specific patch (e.g., 1.9.3 vs 1.9.4). Consequently, the same Manifest.toml can yield different dependency graphs when instantiated on a newer Julia patch, breaking bit‑for‑bit reproducibility.
Teams often assume that adding a dedicated field would solve the problem, but the file schema is fixed and extending it would conflict with existing parsers and tooling. Therefore, reproducibility must be guaranteed by external mechanisms rather than by modifying the lock file itself.
Pkg.instantiate(). Example in a CI step:To verify that the current environment matches the original resolution, please provide the exact Julia patch version that was active when the Manifest.toml was generated.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.