1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-12-24 18:00:55 +01:00

Merge pull request #14030 from roberth/c-api-item-access

C API: Various improvements to attribute/item access
This commit is contained in:
Jörg Thalheim 2025-09-25 09:06:11 +02:00 committed by GitHub
commit bdd3eb400a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 564 additions and 9 deletions

View file

@ -0,0 +1,16 @@
---
synopsis: "C API: Add lazy attribute and list item accessors"
prs: [14030]
---
The C API now includes lazy accessor functions for retrieving values from lists and attribute sets without forcing evaluation:
- `nix_get_list_byidx_lazy()` - Get a list element without forcing its evaluation
- `nix_get_attr_byname_lazy()` - Get an attribute value by name without forcing evaluation
- `nix_get_attr_byidx_lazy()` - Get an attribute by index without forcing evaluation
These functions are useful when forwarding unevaluated sub-values to other lists, attribute sets, or function calls. They allow more efficient handling of Nix values by deferring evaluation until actually needed.
Additionally, bounds checking has been improved for all `_byidx` functions to properly validate indices before access, preventing potential out-of-bounds errors.
The documentation for `NIX_ERR_KEY` error handling has also been clarified to specify when this error code is returned.