-
Couldn't load subscription status.
- Fork 196
Open
Description
Nimble 1.0.0 Overview
The new Nimble 1.0.0 introduces a SAT-based design with a brand-new greenfield code path, reducing complexity and improving maintainability.
local dependency resolution will be the new default.
Key Changes
- No Nim required initially – Resolves the Nim version from
compilation.nim; no VM fallback for Nim itself. - Centralized, upfront resolution – Solves dependencies globally at the start, replacing the legacy greedy approach.
- Single-pass by default – Uses a declarative parser for most cases; falls back to the VM parser (with the resolved Nim) only for tricky packages or
requirestatements inside control flow. - Local dependencies by default – Ensures predictable behavior and avoids global pollution.
- Ensure compatibility with fallback – Guarantees backward compatibility with existing projects.
- Lay the groundwork for a new choosenim alternative – Provides the foundation for future Nim version management improvements.
- Improve speed – Declarative parser is faster than the VM parser, along with faster Nim selection and other optimizations.
- Introduce “prefer” for Nim – Uses the system Nim version if possible, selecting older dependency versions when needed.
Example: If system Nim is 2.0 but the latest package B requires 2.2, Nimble will choose an earlier package B that works with 2.0. - Normalize dependencies – Resolves package URLs to names before solving so different URLs for the same package aren’t treated as separate dependencies.
Milestones
- Implement upfront SATPass (main goal; required major refactor)
- Remove requirement for Nim at startup
- Make local dependencies the default
- Improve speed
- Add benchmarks
- Optimize code paths
- Enable parallel downloads
- Expand cache
- Ensure full backward compatibility with
legacyflag (preserves old behavior) - Implement dependency normalization
- Add
prefersystem Nim feature - Support file paths for local
requires - Improve
nimble developworkflow - Add Nim version management (e.g.
nimble install [email protected]) - Complete miscellaneous tasks:
- Update `nimble dump
- nimble update nimble
- Battle test Nim selection
- Triage issue tracker
Postponed to next version (1.2.x)
- Complete declarative parser (missing platform selection for
when) PR already done: Adds support somewhenexpressions in the declarative parser. #1457 (likely will require changes though) - Lazy Tagged Versions Mechanism (Lazy Tagged Versions Mechanism #1478)
arnetheduck, pouriyajamshidi, Araq, Abathargh, lucidrains and 7 more
Metadata
Metadata
Assignees
Labels
No labels