4 ms·
linux ELF code is loading the ELF loader only. $ORIGIN may not be a good idea since that would add more ELF complexity to the kernel. If we are honest with our
by sylware 3mo ago
linux ELF code is loading the ELF loader only. $ORIGIN may not be a good idea
since that would add more ELF complexity to the kernel.
If we are honest with ourself, ELF is the core of the issue: for executables and
dynamic libraries we _now_ know it is severely obsolete on modern hardware
architectures.
I am currently using my own format, excrutiatingly simple, no loader, basically a
program segment, "userland syscalls" with hardware CPU synchronization. I do wrap
the executables into ELF capsules to run them transparently. So simple a small RFC will be enough.
With that, I discovered that the hard part is c++ and other similar languages which are very expensive in runtime infrastructure and linking complexity. I
would need to build a mesa vulkan driver with that format, and it seems the blocker is c++ (and similar language namely with grotesque and absurd syntax
complexity). Thx to valve to have removed a lot of c++, for less c++... would
have been much better if plain and simple C.
- setheron 3mo agoI would love to learn more about this; I'm deeply interested in replacing ELF with something either simpler or maybe leveraging sqlite for much of the functionality.
- setheron 3mo agoFeel free to email me! (author)
- sylware 3mo agoOnce I have something satisfying, I'll post the "RFC-like" draft and preliminary reference toolchain on HN (well, if I can since HN is going 'whatwg cartel' web engines only then I may be blocked for good). For the moment, I am 'testing' all that while writting my own wayland compositor for linux (that's why I will try to build mesa AMD vulkan driver for this format... or stick to wl_shm in the end). Well, for a new executable and dynamic library format, the computer language syntax complexity and its runtime complexity do matter A LOT, c++ is massive pain, and since, if I am not mistaken, sqlite is going microsoft rust, that's bad omens since microsoft rust syntax seems to be now as brain damaged than c++ syntax... but with an even worse runtime (unless all that is not actually true, I have not checked). That said, ISO f*cked up C with things like '__thread' which requires some level of OS support.