1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-08 11:36:03 +01:00
Nix, the purely functional package manager
Find a file
John Ericson e6afa20c67 Encapsulate and slightly optimize string contexts
These steps are done (originally in order, but I squashed it as the end
result is still pretty small, and the churn in the code comments was a
bit annoying to keep straight).

1. Create proper struct type for string contexts on the heap

   This will make it easier to change this type in the future.

2. Make `Value::StringWithContext` iterable

   This make some for loops a lot more terse.

3. Encapsulate `Value::StringWithContext::Context::elems`

   It turns out the iterators we just exposed are sufficient.

4. Make `StringWithContext::Context` length-prefixed instead

   Rather than having a null pointer at the end, have a `size_t` at the
   beginning. This is the exact same size (note that null pointer is
   longer than null byte) and thus takes no more space!

Also, see the new TODO on naming. The thing we already so-named is a
builder type for string contexts, not the on-heap type. The
`fromBuilder` static method reflects what the names ought to be too.
2025-11-07 13:58:45 -05:00
.github Merge pull request #14388 from NixOS/dependabot/github_actions/actions/upload-artifact-5 2025-11-04 18:14:06 +00:00
ci/gha ci/gha: Disable linkcheck on darwin 2025-11-05 15:38:23 +01:00
contrib function-trace: always show the trace 2019-09-18 23:23:21 +02:00
doc/manual Add change-log entry for derivation format changes 2025-11-06 15:19:44 -05:00
maintainers maintainers: Remove mergify note from release-process.md 2025-10-08 00:51:50 +03:00
misc zsh/completion: put compdef on first line 2025-10-29 18:09:42 +08:00
nix-meson-build-support meson: Also split version string at '+' for Darwin 2025-10-31 23:12:54 +03:00
packaging nix-kaitai-struct: make it not longer part of the devshell 2025-11-05 22:22:45 +01:00
scripts Merge branch 'master' into fzakaria/shellcheck-systemd-multi-user 2025-09-25 07:40:27 +02:00
src Encapsulate and slightly optimize string contexts 2025-11-07 13:58:45 -05:00
tests Make the store path info ca field structured in JSON 2025-11-06 15:19:44 -05:00
.clang-format Update clang-format with fixing namespace coments, and separate definition blocks 2025-07-18 12:46:51 -04:00
.clang-tidy Add .clang-tidy 2024-02-01 01:01:39 +01:00
.coderabbit.yaml .coderabbit.yaml: Kill chats 2025-11-04 22:55:18 +03:00
.dir-locals.el .dir-locals.el: Set c-block-comment-prefix 2020-07-10 11:21:06 +02:00
.editorconfig No global eval settings in libnixexpr 2024-06-24 12:15:16 -04:00
.git-blame-ignore-revs git-blame-ignore-revs: Add nixfmt 1.0.0 reformat 2025-08-18 20:30:54 +03:00
.gitignore Overriding gtest with gmock 2025-05-31 07:41:27 -07:00
.shellcheckrc housekeeping: shellcheck for tests/functional/ca/build-cache.sh 2024-06-12 17:41:16 -04:00
.version Bump version 2025-10-07 17:15:28 +02:00
CITATION.cff chore: PhD thesis as reference in CITATION.cff 2024-05-18 20:05:22 +02:00
CONTRIBUTING.md Update developer facing links to nix.dev 2025-07-25 10:59:44 +02:00
COPYING COPYING: update to latest lgpl-2.1.txt (fixes #13758) 2025-09-18 00:45:01 +08:00
default.nix Format .nix files 2025-01-24 17:04:02 +01:00
docker.nix Merge pull request #13524 from gmarti/fix_cacertificate 2025-08-28 23:28:53 +03:00
flake.lock flake: Update, nixos-25.05-small -> nixos-25.05 2025-11-02 14:10:36 +01:00
flake.nix ci/gha: Disable linkcheck on darwin 2025-11-05 15:38:23 +01:00
HACKING.md Rename doc/manual{src -> source} 2024-10-14 11:21:24 -04:00
meson.build nix-kaitai-struct: make it not longer part of the devshell 2025-11-05 22:22:45 +01:00
meson.format flake: Add meson formatter 2025-06-11 22:08:03 +00:00
meson.options add derivation parser benchmark 2025-07-29 16:51:55 +02:00
README.md fix(docs): update Matrix channel links 2025-05-04 12:17:48 +02:00
shell.nix Remove url literals 2022-01-24 13:28:21 +01:00

Nix

Open Collective supporters CI

Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. Please refer to the Nix manual for more details.

Installation and first steps

Visit nix.dev for installation instructions and beginner tutorials.

Full reference documentation can be found in the Nix manual.

Building and developing

Follow instructions in the Nix reference manual to set up a development environment and build Nix from source.

Contributing

Check the contributing guide if you want to get involved with developing Nix.

Additional resources

Nix was created by Eelco Dolstra and developed as the subject of his PhD thesis The Purely Functional Software Deployment Model, published 2006. Today, a world-wide developer community contributes to Nix and the ecosystem that has grown around it.

License

Nix is released under the LGPL v2.1.