Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[RFC 0062] Content-addressed paths (NixOS#62)
* CAP RFC: First draft * typo * Apply @grahamc's suggestions Co-Authored-By: Graham Christensen <[email protected]> * nix code -> Nix expression * Break-up the big introduction paragraph As suggested in https://github.com/NixOS/rfcs/pull/62/files#r356694585 * Rename to match the PR number * Rename the drv attribute to __contentAddressed Makes it more in line with other "magic" attributes like `__structuredAttributes` Also fix the orthograph * Mention the GC issue * Remove the ambiguity on what an `output` is * Replace aliases paths by a pathOf mapping * Move the example after the design description * Rephrase the design In particular, replace `static` and `dynamic` by `symbolic` and `resolved` * Add shepherd team * Rewrite the RFC to account for the RFC meeting comments - Add the notion of `drvOutputId` - Replace the alias paths by a `PathOf(drvOutputId)` function - Mention the notion of "truster" in the `PathOf` function * Add a section about leaking output paths * Refine the design summary * Rename dependency-addressed into input-addressed And define the term at the begining of the RFC * minor fixup after comments * Apply suggestions from code review Co-authored-by: asymmetric <[email protected]> Co-authored-by: Profpatsch <[email protected]> * Update rfcs/0062-content-addressed-paths.md * Update the terminology to match the in the implementation * Reword the detailed design presentation * Quote some strings in the yaml frontmatter * Add a design paragraph about the remote caching And update the “unresolved questions” to take it into account * Lift the determinism requirement It's not required anymore by the current remote caching semantics * Typo Co-authored-by: davidak <[email protected]> * Apply suggestions from code review Co-authored-by: davidak <[email protected]> * Rewrite the RFC This is mostly a full-rewrite of the RFC to 1. Make it more “incremental”: A first part just describes the minimal model upon which everything is based, and a second one shows different extensions of this model to add more features 2. Remove the big ugly examples that don’t add much value because they aren’t really readable 3. Add a python pseudo-code pseudo-formalisation of the RFC. This is imho both more readable and precise than nested bullet-points of handwaved language * Make the python samples a bit more pythonic Co-authored-by: zseri <[email protected]> * Explicit that unresolved dependencies are eval-time * Prettify * Make the end-goal an experiment Simplify the paperwork and just get this to FCP because right now it’s stuck in a hole Co-authored-by: Théophane Hufschmitt <[email protected]> Co-authored-by: Graham Christensen <[email protected]> Co-authored-by: John Ericson <[email protected]> Co-authored-by: asymmetric <[email protected]> Co-authored-by: Profpatsch <[email protected]> Co-authored-by: Jörg Thalheim <[email protected]> Co-authored-by: Eelco Dolstra <[email protected]> Co-authored-by: davidak <[email protected]> Co-authored-by: zseri <[email protected]>
- Loading branch information