Definitely more work on linker functionality.
Advanced linker technology is a great part of what makes C great for systems programming in user-land:
- weak symbols
- explicit interposition (the INTERPOSE flag
on Solaris/Illumos, LD_PRELOAD generally)
- collision avoidance (recording dependencies where
they are needed, rather than globally)
- direct binding (Solaris/Illumos) /
versioned symols (Linux)
- libdl / dlopen() and friends, including dladdr()
(LoadLibraryEx() and friends on Windows)
- filters and auxilliary filters (Solaris/Illumos)
- audit objects
Static linking could have a lot of the above, and, really really ought to, but static linking technology for C is stuck in 1980. This need not be so for Rust! Please, please, if you build static linking for any language, make sure to build ELF-style semantics, not C static linking semantics!