Sigil 0.9.1
Transitive dependency resolution, version ranges, and lockfile support. The package manager now recursively resolves the full dependency tree — projects only need to declare their direct dependencies, and everything else is fetched automatically. This is the feature that makes the extracted ecosystem from 0.9.0 practical to use at scale.
Transitive Dependency Resolution
sigil deps install now recursively follows from-git dependencies. When a package is fetched, its package.sgl is read and its own dependencies are queued for fetching. Deduplication by package name prevents redundant fetches and cycles.
Before (0.9.0): if your project depends on press, and press depends on sigil-markdown, sigil-sxml, sigil-fp, and 7 other packages, you had to declare all of them manually in your package.sgl.
After (0.9.1): declare press and everything else resolves transitively. sigil-site went from 4 declared dependencies to 2, with 12 more resolved automatically.
Version Ranges
The from-git dependency form now supports an optional version: field with Cargo-style semver ranges:
(from-git url: "codeberg:sigil/sigil-sxml" version: "^0.9.0")Supported range syntax:
^0.9.0— minor-compatible:>=0.9.0, <0.10.0~0.9.0— patch-only:>=0.9.0, <0.9.1- Exact version:
0.9.0 *or omitted — any version (latest tag)
Resolution happens after cloning the bare repo: available tags are listed and the highest matching version is selected.
Lockfile
sigil deps install now writes sigil.lock with the exact commit hash for every resolved dependency (direct and transitive):
;; Auto-generated by sigil deps install. Do not edit.
(lock
(package name: "press" url: "codeberg:sigil/press" ref: "v0.1.0" sha: "abc123...")
(package name: "sigil-stdlib" url: "codeberg:sigil/sigil" ref: "v0.9.0" sha: "def456...")
...)sigil deps installreads the lockfile and uses pinned refs for reproducible installssigil deps updateignores the lockfile, re-resolves frompackage.sglranges, and writes a fresh lockfile--redirectsskips the lockfile entirely (neither read nor written) since local development overrides everything
Version Conflict Detection
When a transitive dependency requires a version range incompatible with an already-resolved version, sigil deps install errors with an actionable message suggesting you add an explicit pin in your package.sgl.
Bug Fixes
- Added
sigil/deps/semverandsigil/deps/lockto Makefile bootstrap modules