| 15 Apr 2026 |
raitobezarius | but lower priority | 18:17:05 |
Sergei Zimmerman (xokdvium) | How did you achieve that? It's using the plan old fork() if I read the code correctly and that's still slow when there is a lot of memory allocated | 18:19:58 |
raitobezarius | vfork | 18:20:51 |
raitobezarius | grep inVFork | 18:21:03 |
raitobezarius | in the codebase | 18:21:04 |
raitobezarius | /**
* runs a callback in a vforked child process that shares its address space with
* the current process. the child behaves much like a thread as a result and the
* callback must not make changes to process memory that we cannot undo from the
* parent, otherwise we may leak memory or fully trash the parent address space.
*
* NOTE: see `asVFork` for safety information regarding credentials and signals.
*
* throws an exception if the child exec's or otherwise doesn't return a result.
*/
static auto inVFork(int flags, auto fn)
{
auto [pid, result] = asVFork(flags, fn);
if (result) {
return std::move(result->value());
} else {
throw Error("vfork child unexpectedly did not produce a value");
}
}
this is the entrypoint of the magic
| 18:21:26 |
raitobezarius | some plain old fork() might be used in other places | 18:21:43 |
Sergei Zimmerman (xokdvium) | Ah that's for the sandboxing setup, I see. I was looking at libexec helpers | 18:21:50 |
raitobezarius | but wrt to derivation builds, the overhead is around 2µs ? | 18:21:59 |
raitobezarius | getting lower would be nice ofc | 18:22:44 |
raitobezarius | but not urgent | 18:22:49 |
raitobezarius | it is now possible to build 1M derivations reasonably | 18:23:00 |
| 16 May 2024 |
| zrsk joined the room. | 13:54:49 |
samrose | In reply to @lunaphied:lunaphied.me I think there were a few CLs on the Gerrit but nothing being actively worked The other thing that I could do if it helps is test things and try to find bugs. I did do some C++ work in the past, but may lack the time to do it justice here at least for about 30 days or so | 15:55:29 |
Qyriad | we are not in any rush 🙂 | 17:20:53 |
samrose | Would it help to also test out the existing Lix code and try to find issues/bugs etc? | 17:23:21 |
Qyriad | absolutely | 17:23:41 |
samrose |
- how do people feel about the existing test suite that comes along with nix source code or Lix?
| 17:23:48 |
Qyriad | it's pitiful | 17:24:10 |
samrose | heh | 17:24:16 |
raitobezarius | expanding it is cool | 17:24:23 |
raitobezarius | writing new tests for builtins which are not tested | 17:24:30 |
raitobezarius | new test behaviors, etc. | 17:24:32 |
Qyriad | we have three flavors of test:
gtest (offer only available in libexpr and libutil) bash script virtual machine
the vast, vast majority of testing is in the "bash script" flavor and it is a mess | 17:25:01 |
samrose | I was just going to ask on the "functional" tests: do we still like using bash there? | 17:25:56 |
samrose | the last time that I worked on a major nix related cli project that used bash, or bats for testing, over time it became rather kind of hard to maintain | 17:26:42 |
samrose | I am not usually a big python fan, but in that project we heard from some in the Rust community that they actually use Python to test CLI and seem to have success there. | 17:27:59 |
Qyriad | no gods please kill bash testing. the problem is that it's kind of really difficult to migrate an entire test suite and be sure that you actually migrated the test suite correctly and won't lose coverage accidentally in the process, which makes any kind of migration a bit nerve wracking | 17:28:36 |
samrose | yes it's a rather large undertaking | 17:28:52 |
samrose | could be done in chunks | 17:28:59 |