feat(model): a version entry's packaging revision (0.0.58) - #1
Closed
speak-agent wants to merge 1 commit into
Closed
speak-agent wants to merge 1 commit into
speak-agent wants to merge 1 commit into
Conversation
A version entry may state `revision`, a non-negative integer that counts changes to what the recipe installs under an unchanged upstream version. An entry that states none, and an entry whose value is not a non-negative integer, reads as revision 0. The loader reads the field from the entry table itself, so every resource shape (single url, mirror map, per-arch map, template, res) carries it the same way; a `ref` alias carries none. This is the one addition the reference implementation needs for openxlings/xlings#620. The decision that uses the field -- a recorded revision that differs from the recipe's means not installed -- belongs to the client, and the contract is stated in the xpkg V2 specification. The V2 compatibility rule makes the addition safe in both directions: a client built on 0.0.57 ignores the key, and a recipe may state it before any client reads it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MajuX4J8ewFeWvZJjzRJt5
Owner
Author
|
Superseded by openxlings#42. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A version entry may state
revision, a non-negative integer that counts changes to what the recipe installs under an unchanged upstream version. An entry that states none, or states a value that is not a non-negative integer, reads as revision 0.PlatformResource::revision(src/xpkg.cppm), read by the loader from the entry table itself (src/xpkg-loader.cppm). Every resource shape carries it the same way: single url, mirror map, per-arch map, template andres. Arefalias carries none.mcpp.toml,mcpp.lock).This is the only change the reference implementation needs for openxlings/xlings#620. The decision that uses the field belongs to the client: a recorded revision that differs from the recipe's means the payload is not installed. The xpkg V2 specification states that contract (openxlings/xim-pkgindex,
docs/V2/xpackage-spec.md).Compatibility
The change is additive in both directions. A client built on 0.0.57 ignores the key, and a recipe may state it before any client reads it.
Tests
tests/fixtures/pkgindex/pkgs/v/v2revision.lua.V2_Revision_ParsedPerVersionEntry(tests/test_loader.cpp) covers stated, absent and malformed values across the resource shapes.Ecosystem
install_targetsrevision; CI guard; glibc 2.44.3 revision 1This PR is merged first, because xlings pins libxpkg 0.0.58.
🤖 Generated with Claude Code
https://claude.ai/code/session_01MajuX4J8ewFeWvZJjzRJt5
Generated by Claude Code