Skip to content

merge queue: embarking 2.29-maintenance (56069a9), #13590, #13580, #13599, #13594 and #13586 together#13661

Closed
mergify[bot] wants to merge 12 commits into2.29-maintenancefrom
mergify/merge-queue/a32ec6f3a0
Closed

merge queue: embarking 2.29-maintenance (56069a9), #13590, #13580, #13599, #13594 and #13586 together#13661
mergify[bot] wants to merge 12 commits into2.29-maintenancefrom
mergify/merge-queue/a32ec6f3a0

Conversation

@mergify
Copy link
Contributor

@mergify mergify bot commented Jul 30, 2025

🎉 This pull request has been checked successfully and will be merged soon. 🎉

Branch 2.29-maintenance (56069a9), #13590, #13580, #13599, #13594 and #13586 are embarked together for merge.

This pull request has been created by Mergify to speculatively check the mergeability of #13586.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.

Required conditions of queue default for merge:

  • check-success=installer test on macos
  • check-success=installer test on ubuntu
  • check-success=tests on macos
  • check-success=tests on ubuntu
  • check-success=vm_tests
  • any of [🛡 GitHub branch protection]:
    • check-success = installer test on macos
    • check-neutral = installer test on macos
    • check-skipped = installer test on macos
  • any of [🛡 GitHub branch protection]:
    • check-success = installer test on ubuntu
    • check-neutral = installer test on ubuntu
    • check-skipped = installer test on ubuntu
  • any of [🛡 GitHub branch protection]:
    • check-success = tests on macos
    • check-neutral = tests on macos
    • check-skipped = tests on macos
  • any of [🛡 GitHub branch protection]:
    • check-success = tests on ubuntu
    • check-neutral = tests on ubuntu
    • check-skipped = tests on ubuntu

Required conditions to stay in the queue:

---
checking_base_sha: 651643ff5239fbe5868cf695d5fe25c74b8f5300
previous_failed_batches: []
pull_requests:
  - number: 13586
...

xokdvium and others added 12 commits July 30, 2025 11:51
For heavier objects it doesn't make sense to return
a std::optional with the copy of the data, when it
can be used by const reference.

(cherry picked from commit 4711720)
Previous code had a sneaky bug due to which no caching
actually happened:

```cpp
auto linesForInput = (*lines)[origin->offset];
```

That should have been:
```cpp
auto & linesForInput = (*lines)[origin->offset];
```

See [1].

Now that it also makes sense to make the cache bound in side
in order not to memoize all the sources without freeing any memory.
The default cache size has been chosen somewhat arbitrarily to be ~64k
origins. For reference, 25.05 nixpkgs has ~50k .nix files.

Simple benchmark:

```nix
let
  pkgs = import <nixpkgs> { };
in
builtins.foldl' (acc: el: acc + el.line) 0 (
  builtins.genList (x: builtins.unsafeGetAttrPos "gcc" pkgs) 10000
)
```

(After)

```
$ hyperfine "result/bin/nix eval -f ./test.nix"
Benchmark 1: result/bin/nix eval -f ./test.nix
  Time (mean ± σ):     292.7 ms ±   3.9 ms    [User: 131.0 ms, System: 120.5 ms]
  Range (min … max):   288.1 ms … 300.5 ms    10 runs
```

(Before)

```
hyperfine "nix eval -f ./test.nix"
Benchmark 1: nix eval -f ./test.nix
  Time (mean ± σ):     666.7 ms ±   6.4 ms    [User: 428.3 ms, System: 191.2 ms]
  Range (min … max):   659.7 ms … 681.3 ms    10 runs
```

If the origin happens to be a `all-packages.nix` or similar in size then the
difference is much more dramatic.

[1]: https://www.github.com/lix-project/lix/commit/22e3f0e9875082be7f4eec8e3caeb134a7f1c05f

(cherry picked from commit 5ea81f5)
the second equivalence, using a if-else expression, aligns much closer to how most humans think about implication, adding it might help some people :)

(cherry picked from commit 51151c2)
Commit b36637c set
`__ETC_PROFILE_NIX_SOURCED` globally, but this is not enough to prevent
the script from being run again by child shells, because the
variable was not exported and thus not inherited by any child process.
Exporting the variable also agrees with the bash scripts.

Notably, the old behavior broke `nix develop -c fish` in some cases,
because the profile bin directory got prepended to the path, causing
binaries from the profile to override binareis from the devshell.

(cherry picked from commit b9ed3ae)
@Nilzkool
Copy link

Hi @mergify[bot], I noticed you've been keeping docs up-to-date, always good to see.

I built a small GitHub app for keeping high-level docs (SDK guides, API references, examples, tutorials, etc.) up-to-date whenever you commit changes.

No pressure, just thought it might be useful. It's free for OSS: https://github.com/marketplace/deepdocsai

@mergify mergify bot closed this Jul 30, 2025
@mergify mergify bot deleted the mergify/merge-queue/a32ec6f3a0 branch July 30, 2025 19:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants