Managed languages solve a large set of problems, but introduce two big problems as I see it:
- Cause nondeterministic overhead which is particularly problematic for kernels, games, and software with heaps over, say, 10 gigabytes.
- Limit ability to safely pass objects outside their ecosystem. How many libraries written in managed code are worth using outside of the language they are written in?
Strong typed languages with automatic memory management, having native compilers and used for writing OS, exist since Mesa/Cedar (70's at Xerox PARC)
Back when C was UNIX only, no one talked about C ABI. The only ABI that mattered was the OS ABI.
Amoeba, OS/400, Lisp Machines, Oberon are a few examples of having multiple languages interoperate via the OS ABI..
Regarding the interoperability, it really depends at what level OS, GC or RC services are available.
If just on the language runtime, yes it complicates the distribution of libraries. As it raises the issues how many copies of the runtime one gets and version compatibility issues.
If the OS offers the services, then any language on that specific OS, can enjoy exposing libraries that interoperate with GC or RC.
COM (now WinRT) is a possible example of such OS services.
With the overhead of GC...
Now to get back what was lost in terms of safety, new languages are required, as the old ones are considered legacy by the average Joe/Jane coder.