jade and Gerrit Code Review
61d394e344
Merge "Build with traps on signed overflow" into main
2024-03-28 20:27:32 +00:00
jade and Gerrit Code Review
ae065a992d
Merge "progress-bar.cc: fix signed overflow" into main
2024-03-28 15:21:11 +00:00
Jade Lovelace
14207e1cf8
Build with traps on signed overflow
...
This is UB, we should not be doing it, and we can cheaply turn it into
crashes reliably. We would much rather have crashes than the program
doing something silly.
Benchmarks, but i wonder if they are nonsense because they get identical
times across compilers?!
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|:---|---:|---:|---:|---:|
| `result-clang/bin/nix eval -f ../nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix` | 375.5 ± 24.0 | 353.8 | 408.8 | 1.00 |
| `result-gcc/bin/nix eval -f ../nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix` | 407.9 ± 26.0 | 385.1 | 449.5 | 1.09 ± 0.10 |
| `result-clangsan/bin/nix eval -f ../nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix` | 382.2 ± 26.6 | 354.9 | 419.0 | 1.02 ± 0.10 |
| `result-gccsan/bin/nix eval -f ../nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix` | 408.6 ± 24.6 | 384.5 | 441.9 | 1.09 ± 0.10 |
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|:---|---:|---:|---:|---:|
| `result-clang/bin/nix search --no-eval-cache github:nixos/nixpkgs/e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870 hello` | 17.199 ± 0.167 | 16.930 | 17.499 | 1.01 ± 0.01 |
| `result-gcc/bin/nix search --no-eval-cache github:nixos/nixpkgs/e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870 hello` | 17.409 ± 0.126 | 17.242 | 17.633 | 1.02 ± 0.01 |
| `result-clangsan/bin/nix search --no-eval-cache github:nixos/nixpkgs/e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870 hello` | 17.080 ± 0.137 | 16.879 | 17.350 | 1.00 |
| `result-gccsan/bin/nix search --no-eval-cache github:nixos/nixpkgs/e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870 hello` | 17.396 ± 0.160 | 17.131 | 17.660 | 1.02 ± 0.01 |
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|:---|---:|---:|---:|---:|
| `result-clang/bin/nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'` | 6.267 ± 0.069 | 6.197 | 6.415 | 1.02 ± 0.01 |
| `result-gcc/bin/nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'` | 6.232 ± 0.045 | 6.180 | 6.311 | 1.01 ± 0.01 |
| `result-clangsan/bin/nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'` | 6.162 ± 0.020 | 6.133 | 6.196 | 1.00 |
| `result-gccsan/bin/nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'` | 6.229 ± 0.031 | 6.199 | 6.289 | 1.01 ± 0.01 |
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|:---|---:|---:|---:|---:|
| `GC_INITIAL_HEAP_SIZE=10g result-clang/bin/nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'` | 4.683 ± 0.044 | 4.630 | 4.761 | 1.00 |
| `GC_INITIAL_HEAP_SIZE=10g result-gcc/bin/nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'` | 4.750 ± 0.041 | 4.680 | 4.812 | 1.01 ± 0.01 |
| `GC_INITIAL_HEAP_SIZE=10g result-clangsan/bin/nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'` | 4.703 ± 0.040 | 4.640 | 4.760 | 1.00 ± 0.01 |
| `GC_INITIAL_HEAP_SIZE=10g result-gccsan/bin/nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'` | 4.766 ± 0.037 | 4.727 | 4.844 | 1.02 ± 0.01 |
Change-Id: I616ca3eab670317587d47b41870d8ac963c019ae
2024-03-27 23:54:04 -07:00
Jade Lovelace
ffbad9b762
progress-bar.cc: fix signed overflow
...
this was caused by the use of std::chrono::duration::max() which gets
multiplied by some ratio to calculate nanoseconds to wait. then, it
explodes because that is a signed integer overflow. this was definitely
a bug.
error below:
/nix/store/fdiknsmnnczx6brsbppyljcs9hqckawk-gcc-12.3.0/include/c++/12.3.0/bits/chrono.h:225:38: runtime error: signed integer overflow: 9223372036854775807 * 1000000 cannot be represented in type 'long'
#0 0x736d376b2b69 in std::chrono::duration<long, std::ratio<1l, 1000000000l>> std::chrono::__duration_cast_impl<std::chrono:
:duration<long, std::ratio<1l, 1000000000l>>, std::ratio<1000000l, 1l>, long, false, true>::__cast<long, std::ratio<1l, 1000l>>(
std::chrono::duration<long, std::ratio<1l, 1000l>> const&) /nix/store/fdiknsmnnczx6brsbppyljcs9hqckawk-gcc-12.3.0/include/c++/12
.3.0/bits/chrono.h:225:38
#1 0x736d376b2b69 in std::enable_if<__is_duration<std::chrono::duration<long, std::ratio<1l, 1000000000l>>>::value, std::chr
ono::duration<long, std::ratio<1l, 1000000000l>>>::type std::chrono::duration_cast<std::chrono::duration<long, std::ratio<1l, 10
00000000l>>, long, std::ratio<1l, 1000l>>(std::chrono::duration<long, std::ratio<1l, 1000l>> const&) /nix/store/fdiknsmnnczx6brs
bppyljcs9hqckawk-gcc-12.3.0/include/c++/12.3.0/bits/chrono.h:270:9
#2 0x736d376b2b69 in std::enable_if<__is_duration<std::chrono::duration<long, std::ratio<1l, 1000000000l>>>::value, std::chr
ono::duration<long, std::ratio<1l, 1000000000l>>>::type std::chrono::ceil<std::chrono::duration<long, std::ratio<1l, 1000000000l
>>, long, std::ratio<1l, 1000l>>(std::chrono::duration<long, std::ratio<1l, 1000l>> const&) /nix/store/fdiknsmnnczx6brsbppyljcs9
hqckawk-gcc-12.3.0/include/c++/12.3.0/bits/chrono.h:386:14
#3 0x736d376b2b69 in std::cv_status std::condition_variable::wait_for<long, std::ratio<1l, 1000l>>(std::unique_lock<std::mut
ex>&, std::chrono::duration<long, std::ratio<1l, 1000l>> const&) /nix/store/fdiknsmnnczx6brsbppyljcs9hqckawk-gcc-12.3.0/include/
c++/12.3.0/condition_variable:164:6
#4 0x736d376b1ee9 in std::cv_status nix::Sync<nix::ProgressBar::State, std::mutex>::Lock::wait_for<long, std::ratio<1l, 1000
l>>(std::condition_variable&, std::chrono::duration<long, std::ratio<1l, 1000l>> const&) /home/jade/lix/lix/src/libutil/sync.hh:
65:23
#5 0x736d376b1ee9 in nix::ProgressBar::ProgressBar(bool)::'lambda'()::operator()() const /home/jade/lix/lix/src/libmain/prog
ress-bar.cc:99:27
#6 0x736d36de25c2 in execute_native_thread_routine (/nix/store/a3zlvnswi1p8cg7i9w4lpnvaankc7dxx-gcc-12.3.0-lib/lib/libstdc++
.so.6+0xe05c2)
#7 0x736d36b6b0e3 in start_thread (/nix/store/1zy01hjzwvvia6h9dq5xar88v77fgh9x-glibc-2.38-44/lib/libc.so.6+0x8b0e3) (BuildId
: 287831bffdbdde0ec25dbd021d12bdfc0ab9f5ff)
#8 0x736d36bed5e3 in __clone (/nix/store/1zy01hjzwvvia6h9dq5xar88v77fgh9x-glibc-2.38-44/lib/libc.so.6+0x10d5e3) (BuildId: 28
7831bffdbdde0ec25dbd021d12bdfc0ab9f5ff)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /nix/store/fdiknsmnnczx6brsbppyljcs9hqckawk-gcc-12.3.0/include/c++/12.3.
0/bits/chrono.h:225:38 in
Change-Id: Ia0303242cdfd5d49385ae9e99718d709625a4633
2024-03-27 22:56:04 -07:00
Jade Lovelace
edba570664
HOT SALE: 15% off your build times!
...
This was achieved by running maintainers/buildtime_report.sh on the
build directory of a meson build, then asking "why the heck is json
eating our build times", and strategically moving the json using bits
out of widely included headers.
It turns out that putting literally any metrics whatsoever into the
build had immediate and predictable results.
Results are 1382.5s frontend time -> 1175.4s frontend time, back end
time approximately invariant.
Related: https://git.lix.systems/lix-project/lix/issues/159
Change-Id: I7edea95c8536203325c8bb4dae5f32d727a21b2d
2024-03-27 03:52:57 +00:00
Jade Lovelace
412a9c9f67
Enable clang build timing analysis
...
I didn't enable this by default for clang due to making the build time
10% worse or so. Unfortunate, but tbh devs for whom 10% of build time is
not *that* bad should probably simply enable this.
Change-Id: I8d1e5b6f3f76c649a4e2f115f534f7f97cee46e6
2024-03-27 03:52:57 +00:00
Jade Lovelace
50c6feeb77
Add release notes system for dev facing release notes
...
We keep changing dev stuff and we probably should keep the news up to
date?
Change-Id: I819da6a29f1c56c8ab8d758c159a9c96164cb04e
2024-03-27 03:52:57 +00:00
jade and Gerrit Code Review
da22dbc333
Merge "Issue importer: do not notify" into main
2024-03-26 22:04:48 +00:00
jade and Gerrit Code Review
a5254186fd
Merge "libstore/filetransfer: use Lix UA and unnix error message" into main
2024-03-26 20:46:27 +00:00
jade and Gerrit Code Review
531b8d0ab8
Merge "libmain: version printer uses Lix instead of Nix" into main
2024-03-26 16:06:15 +00:00
jade and Gerrit Code Review
5a1c35f907
Merge "Restore system-install profile files from the previous installer" into main
2024-03-25 04:17:36 +00:00
Jade Lovelace
dee6b75702
Restore system-install profile files from the previous installer
...
These files are required to get Nix in PATH in existing multi-user installs using
the legacy installer. We really could use some tests.
Cc: https://git.lix.systems/lix-project/lix/issues/33
This partially reverts commit 93cc063344 .
Fixes: https://git.lix.systems/lix-project/lix/issues/173
Change-Id: Iafb55280596732670a432f604b897f48562868e4
2024-03-25 04:17:14 +00:00
Jade Lovelace
33da9c09c8
Issue importer: do not notify
...
This uses the forgejo patch we have for dont_notify on issue creation on
the api, and indeed does not notify, so we can simply run the script
safely :D
Fixes: https://git.lix.systems/lix-project/web-services/issues/38
Change-Id: I86bcbf9b4499b439b79b82af84ee7df0f8eb3298
2024-03-23 19:03:34 -07:00
Jade Lovelace
946fc12e4e
Revert "Merge pull request #9476 from alois31/restore-progress-bar"
...
Observed to regress nix repl attrset printing with narrow windows.
This reverts commit a2d5e803cf .
Fixes: https://git.lix.systems/lix-project/lix/issues/168
Change-Id: I8e0031475b4ec26d6a71014357d973578b70815c
2024-03-23 18:04:29 -07:00
jade and Gerrit Code Review
a7161b6c0f
Merge "clang-tidy check infrastructure" into main
2024-03-21 12:28:13 -06:00
jade and Gerrit Code Review
5a28d70d1e
Merge "un-ups your start" into main
2024-03-19 14:29:57 -06:00
jade and Gerrit Code Review
4050245faa
Merge changes I72c945ca,I2138bb4d,Ib96749f3 into main
...
* changes:
Release notes for builtins.nixVersion change
un-nixes ur lix, a little
issue importer: list issues that are *not* closed when finding existing issues
2024-03-18 20:19:53 -06:00
Jade Lovelace
985bd5eb9f
un-ups your start
...
We do not need upstart, it is so thoroughly obsolete that we should not
care about supporting it.
Change-Id: Ie0ca084740845555fddffacc899cd129c9a4c1fe
2024-03-18 18:28:08 -07:00
Jade Lovelace
20b4a97af3
Release notes for builtins.nixVersion change
...
Change-Id: I72c945cab464d26d73f5594ef0a4bb2184545da4
2024-03-18 18:26:52 -07:00
Jade Lovelace
30233d87f9
un-nixes ur lix, a little
...
I didn't really go attack the docs because we need to pull a bunch of
PRs. I went looking for strings in the code that called lix nix.
Change-Id: I2138bb4dd239096bc530946b281db7f875195b39
2024-03-18 18:20:24 -07:00
Jade Lovelace
81be5eb7c6
issue importer: list issues that are *not* closed when finding existing issues
...
Turns out also, you cannot set the queue to 0 with any success. So we
really should just like, prevent notifications in forgejo itself.
Filed a bug for that:
https://git.lix.systems/lix-project/web-services/issues/38
Change-Id: Ib96749f3159659182904963cab7b2ef88fc64442
2024-03-18 18:14:31 -07:00
Jade Lovelace
6b0020749d
clang-tidy check infrastructure
...
This brings in infrastructure for developing new custom clang-tidy lints
and refactors for Lix.
Change-Id: I3df5f5855712ab4f97d4e84d771e5e818f81f881
2024-03-18 16:10:29 -07:00
Jade Lovelace
37c4b10c44
Add clang format configuration
...
Contemplate the configuration with: https://clang-format-configurator.site/
(cherry picked from commit 53fdcbca509b6c5dacaea3d3c465d86e49b0dd74)
Change-Id: I5446fd45de2bf644e34112f719afb3318a440b30
2024-03-18 13:31:39 -07:00
jade and Gerrit Code Review
47a237f7ec
Merge "Delete hasPrefix and hasSuffix from the codebase" into main
2024-03-18 12:01:39 -06:00
jade and Gerrit Code Review
2890840b96
Merge "Forgejo issue importer" into main
2024-03-17 22:08:59 -06:00
Jade Lovelace
61e21b2557
Delete hasPrefix and hasSuffix from the codebase
...
These now have equivalents in the standard lib in C++20. This change was
performed with a custom clang-tidy check which I will submit later.
Executed like so:
ninja -C build && run-clang-tidy -checks='-*,nix-*' -load=build/libnix-clang-tidy.so -p .. -fix ../tests | tee -a clang-tidy-result
Change-Id: I62679e315ff9e7ce72a40b91b79c3e9fc01b27e9
2024-03-17 20:17:19 -07:00
jade and Gerrit Code Review
706cee5c49
Merge "builtins.nixVersion: return fixed fake version" into main
2024-03-17 12:13:21 -06:00
Jade Lovelace
886a418d23
builtins.nixVersion: return fixed fake version
...
This builtin is only going to cause us problems because we are not Nix,
so let's just falsify being in the 2.18 series, since that is the
closest target that has any meaning.
In future we might want to have a better feature detection mechanism,
for when we actually add stuff to some builtin's attr set argument. But
builtins.nixVersion is just going to be hopelessly broken and it should
be stubbed out.
Fixes https://git.lix.systems/lix-project/lix/issues/144
Change-Id: Id7390b32a29c6147f2977737d81846320de5d67e
2024-03-17 00:32:19 -07:00
Jade Lovelace
3392020710
Forgejo issue importer
...
We needed a script to go yoink all the real NixOS/Nix issues from our
mirror into the Lix repo.
Change-Id: If8c8ebfb58634c675eae450454c0189288c6b18a
2024-03-16 00:22:33 -07:00
Jade Lovelace
0d85875c3a
Allow dlopen of plugins to fail
...
It happens with some frequency that plugins that might be unimportant to
the evaluation at hand mismatch with the nix version, leading to
spurious load failures. Let's make these non fatal.
Change-Id: Iba10e951d171725ccf1a121bcd9be1e1d6ad69eb
2024-03-15 12:31:16 -07:00
Jade Lovelace
7d361f1a82
Test that :st does ... something
...
Change-Id: I97c00b5eb1288f68d8c2b484436cc185d040b8b2
2024-03-15 12:31:16 -07:00
Jade Lovelace
af066af7f3
repl_characterization: Also verify the stack trace exists
...
Change-Id: I8b2d8211a24011fae1586a1182d7d0772a039cd7
2024-03-15 12:31:16 -07:00
Jade Lovelace
78513b1fc8
repl_characterization: eat newlines after commands and source-dir paths
...
This is because they are unrepresentable in the source files with
commentary but not in the output, so we should just eat them in
normalization. It's ok.
Change-Id: I2cb7e8b3fc7b00874885bb287cbaa200b41cb16b
2024-03-15 12:31:16 -07:00
Jade Lovelace
8a8715af89
Add regression tests for #9917 , #9918
...
Change-Id: Ib0591e1499c5dba5e5a83ee75a899c9d16986827
2024-03-15 12:31:16 -07:00
Jade Lovelace
18ed6c3bdf
Implement a repl characterization test system
...
This allows for automating using the repl without needing a PTY, with
very easy to write test files.
Change-Id: Ia8d7854edd91f93477638942cb6fc261354e6035
2024-03-15 12:31:16 -07:00
Jade Lovelace
38571c50e6
Implement a parser for a literate testing system for the repl
...
This parser can be reused for other purposes. It's inspired by
https://bitheap.org/cram/
Although eelco's impostor exists https://github.com/mobusoperandi/eelco ,
it is not very nice to depend on out of tree testing frameworks with no
way to customize them.
Change-Id: Ifca50177e09730182baf0ebf829c3505bbb0274a
2024-03-14 14:30:38 -07:00
jade and Gerrit Code Review
c79b5dca2a
Merge "flake: dev shells should include the LOCALE_ARCHIVE so configure does not complain" into main
2024-03-14 12:22:35 -06:00
jade and Gerrit Code Review
cc55da201b
Merge "un-thumbs-up ur github templates" into main
2024-03-14 12:22:09 -06:00
Jade Lovelace
0278c03de5
un-thumbs-up ur github templates
...
These are not the way that we want to do things.
Change-Id: I5f3706cf50d007a6659edb96a6230d52e18a769a
2024-03-13 23:10:25 -07:00
jade and Gerrit Code Review
2a8f579c53
Merge "Backport PR#10204 by 9999years: Replace foo with __NIX_STR in cxx-big-literal" into main
2024-03-14 00:07:21 -06:00
Jade Lovelace
ab5ff86917
flake: dev shells should include the LOCALE_ARCHIVE so configure does not complain
...
Change-Id: Id661bd8c90696cb663a25503878a697f596d1e77
2024-03-13 12:25:23 -07:00
Jade Lovelace
1b8662b85c
import the revisions to the characterization test framework from cppnix
...
This has some Flaws for sure (like, it is going to be a bit stretched to
use for repl characterization), but it is a start.
Change-Id: I258c8beb3aee236f45818a03be83bcda858120c9
2024-03-11 14:14:43 -07:00
Jade Lovelace
be2b87ed4d
add automated usage mode to the repl
...
This is definitely not a stable thing, but it does feel slightly crimes
to put it as an experimental feature. Shrug, up for bikeshedding.
Change-Id: I6ef176e3dee6fb1cac9c0a7a60d553a2c63ea728
2024-03-11 14:14:43 -07:00
jade and Gerrit Code Review
b06a392114
Merge "refactor: repl prompts are now the job of the interacter" into main
2024-03-11 15:12:09 -06:00
jade and Gerrit Code Review
dd05106d1c
Merge "refactor: move readline stuff into its own file" into main
2024-03-11 15:11:56 -06:00
jade and Gerrit Code Review
df2723b972
Merge "finally.hh: delete copy constructor which is a bad idea" into main
2024-03-11 15:11:20 -06:00
jade and Gerrit Code Review
d9367da027
Merge "Add box_ptr: nonnull unique_ptr with value semantics" into main
2024-03-11 15:11:15 -06:00
jade and Gerrit Code Review
50c401b4c1
Merge "util.hh: split out signals stuff" into main
2024-03-11 11:14:24 -06:00
Jade Lovelace
1758a6ef25
refactor: repl prompts are now the job of the interacter
...
Change-Id: I17c2873dfbbff303cdbdc7a8903deb8409ce3026
2024-03-11 01:04:52 -07:00
Jade Lovelace
95a87f2c2a
refactor: move readline stuff into its own file
...
This is in direct preparation for an automation mode of nix repl.
Change-Id: I26e6ca88ef1c48aab11a2d1e939ff769f1770caa
2024-03-11 01:04:52 -07:00
Jade Lovelace
45f6e3521a
finally.hh: delete copy constructor which is a bad idea
...
Change-Id: I6d0b5736893c44bddc6f5789b452b434f8671b9b
2024-03-11 01:04:52 -07:00
Jade Lovelace
af515baf6e
Add box_ptr: nonnull unique_ptr with value semantics
...
This solves the problem of collections of boxed subclasses with virtual
dispatch, which should still be treated as values, since the
indirection is only there due to the virtual dispatch.
Change-Id: I368daedd3f31298e99c6e56a15606337a55494c6
2024-03-11 01:04:52 -07:00
Jade Lovelace
8be7030299
util.hh: split out signals stuff
...
Copies part of the changes of ac89bb064aeea85a62b82a6daf0ecca7190a28b7
Change-Id: I9ce601875cd6d4db5eb1132d7835c5bab9f126d8
2024-03-11 00:52:09 -07:00
jade and Gerrit Code Review
6432bf9197
Merge "Print derivation paths in nix eval" into main
2024-03-10 16:12:32 -06:00
jade and Gerrit Code Review
eac76dbe90
Merge "Update version to 2.90.0" into main
2024-03-07 20:26:26 -07:00
jade and Gerrit Code Review
0d9a043f43
Merge "fix: bounds check result in getMaxCPU" into main
2024-03-06 22:24:51 -07:00
Jade Lovelace
6122bed3af
fix: bounds check result in getMaxCPU
...
Upstream-Bug: https://github.com/NixOS/nix/issues/9725
Upstream-PR: https://github.com/NixOS/nix/pull/10172
Change-Id: I2b8e8b15ee28951be98e5cbe3ccea5b9c8de5994
2024-03-06 21:00:33 -08:00