mirror of
https://github.com/NixOS/nix.git
synced 2024-11-22 14:52:55 +00:00
fecff520d7
Previously, `state.mkList()` would set the type of the value to tList and allocate the list vector, but it would not initialize the values in the list. This has two problems: * If an exception occurs, the list is left in an undefined state. * More importantly, for multithreaded evaluation, if a value transitions from thunk to non-thunk, it should be final (i.e. other threads should be able to access the value safely). To address this, there now is a `ListBuilder` class (analogous to `BindingsBuilder`) to build the list vector prior to the call to `Value::mkList()`. Typical usage: auto list = state.buildList(size); for (auto & v : list) v = ... set value ...; vRes.mkList(list); |
||
---|---|---|
.. | ||
libexpr | ||
libexpr-support | ||
libstore | ||
libstore-support | ||
libutil | ||
libutil-support |