One can even completely ignore the RCW/CCW support in .Net entirely and just hack together some struct types that match the vtable layout.
Also you ignored that .NET was made to fully support C++ via Managed C++, replaced with C++/CLI on version 2.0.
C++/CLI ultimately still uses the same features the runtime uses for p/invoke calls, though it uses slightly different IL to transition to native code since it doesn’t have to worry about an external ABI within a mixed mode assembly. Sure, there’s a whole compiler that supports this weird mixed mode world from a language perspective - but it’s really boring at runtime.
Something that no UNIX does, and we only find similar ideas in Swift/Objective-C++, IBM language environments, and the old OS/2 SOM (Smalltalk/C++).
While everyone else just writes glue code with C like interfaces, as if the world has hardly changed from UNIX V6.
I agree that C as the lowest common denominator sucks.
Project Reunion seems to have rebooted everything, which is most likely the reason for it to have stalled.
Two examples: My understanding is that there's a ton of code and added complexity in Swift itself to support Obj-C interoperation. And while you can call C and Obj-C APIs, as-is, there was/is basically a company-wide effort to write API wrappers (aka. overlays) for existing system APIs.
For the second part, maybe if Rust for Linux kernel programming gets to the level of popularity as, say, TypeScript in the JavaScript community, the Linux community will end up creating the needed API wrappers as an organic, group effort.