-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Lazy attribute names #4154
base: master
Are you sure you want to change the base?
Commits on Oct 19, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 5ddfd1a - Browse repository at this point
Copy the full SHA 5ddfd1aView commit details -
This is a version of Expr::eval that doesn't necessarily have to evaluate the value into a non-thunk, while returning a specific attribute The evalAttr of expressions that evaluate to a subexpression should call evalAttr on that subexpression, therefore bubbling up any potential thunks
Configuration menu - View commit details
-
Copy full SHA for e8fbaf6 - Browse repository at this point
Copy the full SHA e8fbaf6View commit details
Commits on Oct 21, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 48511ea - Browse repository at this point
Copy the full SHA 48511eaView commit details -
Introduce ExprLazyBinOp and tLazyBinOp
This introduces an expression base class that can be used for lazy binary operations, along with a value type for storing partial results of such expressions
Configuration menu - View commit details
-
Copy full SHA for 35d5be4 - Browse repository at this point
Copy the full SHA 35d5be4View commit details -
Make ExprOpUpdate be an ExprLazyBinOp
This makes the // operator lazy in attribute names, only evaluates what is necessary to get a specific attribute.
Configuration menu - View commit details
-
Copy full SHA for 5b1ef7b - Browse repository at this point
Copy the full SHA 5b1ef7bView commit details -
Allocate LazyBinOp values separately from Value
So as to not increase the sizeof(Value) from 24 bytes to 40 bytes
Configuration menu - View commit details
-
Copy full SHA for 152048d - Browse repository at this point
Copy the full SHA 152048dView commit details -
Evaluate ExprOpUpdate sides with maybeThunk
I think this is needed so that any variables on the sides get updated properly Without this, bin/nix-instantiate ~/src/nixpkgs/nixos --arg configuration ~/src/nixpkgs/nixos/modules/profiles/demo.nix -A vm fails with a segfault Not sure why this doesn't happen with the commit that makes // lazy though
Configuration menu - View commit details
-
Copy full SHA for f7c3553 - Browse repository at this point
Copy the full SHA f7c3553View commit details
Commits on Oct 23, 2020
-
Pass left/right lazyBinOp to update functions directly
The previous implementation relied on uninitialized memory not being a certain value for it to work
Configuration menu - View commit details
-
Copy full SHA for 7b947a7 - Browse repository at this point
Copy the full SHA 7b947a7View commit details
Commits on Oct 24, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 4a2c47a - Browse repository at this point
Copy the full SHA 4a2c47aView commit details
Commits on Oct 27, 2020
-
Disable all inf rec checking for now
Since it throws inf rec when it doesn't have to sometimes
Configuration menu - View commit details
-
Copy full SHA for e8a7a5b - Browse repository at this point
Copy the full SHA e8a7a5bView commit details
Commits on Dec 1, 2020
-
Implement infinite recursion detection again
This time it also works with lazy binops The previous optimizations for prevention of allocation had to be undone Code still needs cleanup, but it should be sound
Configuration menu - View commit details
-
Copy full SHA for f99249d - Browse repository at this point
Copy the full SHA f99249dView commit details
Commits on Dec 2, 2020
-
Simplify lazyBinOp handling a bit
With the previous commit, passing left/right is now unnecessary
Configuration menu - View commit details
-
Copy full SHA for 0edad24 - Browse repository at this point
Copy the full SHA 0edad24View commit details -
Configuration menu - View commit details
-
Copy full SHA for d1d9f1e - Browse repository at this point
Copy the full SHA d1d9f1eView commit details
Commits on Dec 4, 2020
-
Remove duplicated methods by implementing evaluation handlers
Every evaluation can now pass a handler, which is called once the resulting value is either a tAttrs or a tLazyAttrs There are two handlers: - One for weak head normal form (changes tLazyAttrs into tAttrs) - One for getting an attribute (lazily gets attributes from tLazyAttrs, strictly from tAttrs)
Configuration menu - View commit details
-
Copy full SHA for d89a995 - Browse repository at this point
Copy the full SHA d89a995View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1642440 - Browse repository at this point
Copy the full SHA 1642440View commit details -
Configuration menu - View commit details
-
Copy full SHA for 272c728 - Browse repository at this point
Copy the full SHA 272c728View commit details -
Configuration menu - View commit details
-
Copy full SHA for b86bd8a - Browse repository at this point
Copy the full SHA b86bd8aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3584b83 - Browse repository at this point
Copy the full SHA 3584b83View commit details -
Configuration menu - View commit details
-
Copy full SHA for ca1201f - Browse repository at this point
Copy the full SHA ca1201fView commit details
Commits on Dec 5, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 42a8ff1 - Browse repository at this point
Copy the full SHA 42a8ff1View commit details -
Configuration menu - View commit details
-
Copy full SHA for e291fc6 - Browse repository at this point
Copy the full SHA e291fc6View commit details -
Configuration menu - View commit details
-
Copy full SHA for b97295e - Browse repository at this point
Copy the full SHA b97295eView commit details -
Configuration menu - View commit details
-
Copy full SHA for a5add93 - Browse repository at this point
Copy the full SHA a5add93View commit details -
Embed LazyBinOp values into Value
By using bitfields to encode the left/right blackhole for infinite recursion detection
Configuration menu - View commit details
-
Copy full SHA for acecc9d - Browse repository at this point
Copy the full SHA acecc9dView commit details -
Configuration menu - View commit details
-
Copy full SHA for e5a3b04 - Browse repository at this point
Copy the full SHA e5a3b04View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5af84e6 - Browse repository at this point
Copy the full SHA 5af84e6View commit details -
Configuration menu - View commit details
-
Copy full SHA for ba195b7 - Browse repository at this point
Copy the full SHA ba195b7View commit details -
Revert "Implement noAllocationValue for Expr's and use it to avoid so…
…me allocs" This reverts commit 4a2c47a.
Configuration menu - View commit details
-
Copy full SHA for cff6f8f - Browse repository at this point
Copy the full SHA cff6f8fView commit details -
1
Configuration menu - View commit details
-
Copy full SHA for c3bbb4d - Browse repository at this point
Copy the full SHA c3bbb4dView commit details