It's a solvable problem so long as compute nodes can execute preferred compilers (which for Julia, means LLVM). Current precompilation support can get you much of the way. Julia has run at large scale. It required some customization, but most of that work generalizes.
https://juliacomputing.com/case-studies/celeste.html Writing a PETSc replacement in Julia would, unfortunately, make it harder to use for all the non-Julia libraries and applications out there. One of my interests in Rust is that it's possible to write libraries with C interfaces such that the user need not know what language(s) the library is implemented in. One thing I've been thinking about lately is how to write parallel libraries that can be cleanly interrupted. This is very common in interactive workflows. One could adopt a strictly process-based approach with clever use of shared memory to manage IO costs, but that makes assumptions about the environment. Much better would be for the library itself to be able to handle and propagate interrupt requests so as to return in a consistent state without leaks. I don't feel like that is a (maintainably) tractable problem when working in C.