| 15 Nov 2024 |
emily | and the executable rebuilds are really cheap | 11:24:08 |
emily | just some patching | 11:24:10 |
emily | so if you eliminate OpenSSL from your build tools, that means that OpenSSL updates become ~free | 11:24:15 |
emily | a few thousand seds, basically | 11:24:20 |
p14 | Sketch makes sense. | 11:24:32 |
emily | I wouldn't be opposed to helping trying to implement it, at least in the form of "oh, this is how you should handle X" | 11:24:53 |
emily | I doubt Nixpkgs will ever adopt this system, though | 11:24:59 |
aleksana 🏳️⚧️ (force me to bed after 18:00 UTC) | In reply to @emilazy:matrix.org here's the sketch: for every derivation producing a shared library, you want to use llvm-ifs to generate stubs from the libraries. you put those in dev, say Looks like libgl or vulkan-loader | 11:25:01 |
aleksana 🏳️⚧️ (force me to bed after 18:00 UTC) | Makes sense | 11:25:04 |
emily | sufficiently ambitious projects like this go in my "for the Nix successor" folder :) | 11:25:15 |
emily | In reply to @aleksana:mozilla.org Looks like libgl or vulkan-loader yeah, except we patch in the final location at build-time | 11:25:23 |
emily | so everything is still as early-bound, we just skip a lot of building when we know it would produce the same result | 11:25:34 |
p14 | In reply to @emilazy:matrix.org sufficiently ambitious projects like this go in my "for the Nix successor" folder :) Right, so, where do we start boiling the ocean from? ;-) | 11:25:41 |
emily | this is really key to exploiting ca-derivations, because it's not very useful to know a library didn't really change if the actual library you build against changes | 11:25:52 |
emily | and it's really silly that Unix merges the interface and implementation into one file | 11:26:02 |
emily | builds don't look at the object code of the dynamic libraries they link against. why is it in the same file? | 11:26:19 |
emily | In reply to @p14:matrix.org Right, so, where do we start boiling the ocean from? ;-) I've got a five year plan… | 11:26:40 |
emily | (probably an underestimate) | 11:26:55 |
p14 | Best time to plant tree twenty years ago... :D | 11:27:06 |
p14 | [second best, now, as they say] | 11:27:20 |
aleksana 🏳️⚧️ (force me to bed after 18:00 UTC) | In reply to @emilazy:matrix.org so everything is still as early-bound, we just skip a lot of building when we know it would produce the same result Oh so we don't rebuild in the end, we just re...link | 11:27:29 |
emily | In reply to @aleksana:mozilla.org Oh so we don't rebuild in the end, we just re...link yep! | 11:27:38 |
emily | or as fzakaria showed us, we can actually do what the dynamic loader would normally do at runtime | 11:27:50 |
emily | actually patch up all the indirect references | 11:27:54 |
aleksana 🏳️⚧️ (force me to bed after 18:00 UTC) | This means that we just need to add an intermediate derivation? | 11:28:02 |
emily | the stuff that would normally happen in-memory can happen to the binary | 11:28:07 |
p14 | In reply to @emilazy:matrix.org actually patch up all the indirect references https://fzakaria.com/2024/07/21/scaling-past-1-million-elf-symbol-relocations.html | 11:28:11 |
emily | it's pretty fast, because it normally happens at runtime anyway | 11:28:14 |
emily | but it means that executable loading time goes down! | 11:28:18 |
emily | In reply to @p14:matrix.org https://fzakaria.com/2024/07/21/scaling-past-1-million-elf-symbol-relocations.html yeah I linked these in the thread :) | 11:28:23 |