You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@use currently resolves only stdlib modules. There is no mechanism for user-defined or third-party packages with versioning, no lockfile integration for external deps, and no path toward an ecosystem.
Acceptance Criteria
Defined package manifest format (e.g. nls.toml or nlspackage.nl)
@use package_name@version syntax works for local and registered packages
Lockfile captures external dependency hashes
nlsc install or equivalent resolves and pins dependencies
Slice 1 landed (PR #246). Against this issue's acceptance criteria:
Defined package manifest format — nls.pkg.json (nls.pkg/1): project name/version and dependencies mapping dotted package names to a local path plus a semver constraint (*, exact, ^, ~).
@use package_name@version syntax works for local packages — @use <package>.<domain> resolves inside the dependency root (longest dot-boundary prefix; v{major}/<domain>.nl layout) before stdlib roots. Version pinning is by manifest constraint: each dependency's own manifest version is checked (EPKG003); the inline @version spelling from the issue text is not implemented — the constraint lives in the manifest, and @use keeps the Standard Library Structure (@use Directives) #90 grammar.
Lockfile captures external dependency hashes — nls.pkg.lock records each dependency's resolved version, manifest-relative path, and a content hash; nlsc install --check reports drift (EPKG004).
nlsc install or equivalent resolves and pins dependencies — implemented, with project-root discovery from subdirectories.
Does not require the full package registry — registry work remains in feat: ANLU package registry #27; only local path sources are supported.
Remaining in this issue's scope for the next slice: symbol linking (imported ANLUs resolve and lock but are not yet merged into the caller's symbol table, so cross-package calls are not possible), and version-pinned @use spelling if the manifest constraint proves insufficient in practice. Keeping the issue open for the linking slice; the limitation is documented in docs/packages.md.
Activity
Merge pull request #246 from Mnehmos/feat/146-package-model
Mnehmos commentedon Sep 12, 2026
Slice 1 landed (PR #246). Against this issue's acceptance criteria:
nls.pkg.json(nls.pkg/1): project name/version anddependenciesmapping dotted package names to a local path plus a semver constraint (*, exact,^,~).@use package_name@versionsyntax works for local packages —@use <package>.<domain>resolves inside the dependency root (longest dot-boundary prefix;v{major}/<domain>.nllayout) before stdlib roots. Version pinning is by manifest constraint: each dependency's own manifest version is checked (EPKG003); the inline@versionspelling from the issue text is not implemented — the constraint lives in the manifest, and@usekeeps the Standard Library Structure (@useDirectives) #90 grammar.nls.pkg.lockrecords each dependency's resolved version, manifest-relative path, and a content hash;nlsc install --checkreports drift (EPKG004).nlsc installor equivalent resolves and pins dependencies — implemented, with project-root discovery from subdirectories.Remaining in this issue's scope for the next slice: symbol linking (imported ANLUs resolve and lock but are not yet merged into the caller's symbol table, so cross-package calls are not possible), and version-pinned
@usespelling if the manifest constraint proves insufficient in practice. Keeping the issue open for the linking slice; the limitation is documented indocs/packages.md.