- 
                Notifications
    
You must be signed in to change notification settings  - 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