Hacker News new | ask | show | jobs
by nicce 924 days ago
> So to work around ABI instability from the glibc/gcc, you were building a container for each game you wanted to play, this is obviously past the point of being reasonable.

That was my initial reasoning about functional/declarative package managers. They can reach the same but without making full blown containers.

1 comments

Do you realize how much convolution this is? Without even considering the core of the issue: glibc devs and gcc are making core sys libs backward ABI handling a massive pain in the toolchain, and a kind of "silent killer".

It is inappropriate to consider those containers compared to actually doing something about this backward ABI handling in the toolchain for inexperienced devs on elf/linux (those coming from windows). This is technically more reasonable, with a abysmal difference.

But we would need some solution in the meantime?

It might take some huge effort (and time) to convince the devs. Especially, since development is going towards LLVM ecosystem. Linus prefers compailing Linux with clang these days.

When the ABI handling works well, you could still use the same principles for package managment.

There are 2 main axis to work on, which are abysmally less costly than any container based mitigation of the issue, since with the following we get "clean" sets of ELF binaries:

- educate the devs on the matter. Those not using an engine already taking of that (this reduce by A LOT the amount of devs to teach).

- work on a toolchain switch to link with version symbol names from a backward ABI, easily (not having to manually enumerate all version symbol names and use the binutils gas .symver directive, or install a 10 years old distro). And a toolchain which does default to -static-libgcc, -static-libstdc++ (when c++ is used) and -ftls-model=global-dynamic while we are at it (in order to spare those expensive static TLS slots).

I do consider that gcc and clang(llvm) are lost for sane open source. Their absurd and grotesque size and complexity make them more toxic than anything else. Look at tinycc, cproc/qbe, simple-cc/qbe.