Interop

Why doing C/C++/Rust interop at all?

C and C++ are not memory safe.

You can do one-shot rewrites (probably with an LLM) but in many cases, it is not feasible without sacrificing quality, so we need incremental rewrites, or in some cases not rewriting some parts of code at all. So C/C++ code needs to interop with the Rust code.

Not all C/C++/Rust interop users are equal

Different users have different constraints on which compilers they can use, some users are tied to a single version of a C or C++ or Rust compiler, or they can't change their build system and have complex setup there. Some users may even need to support multiple toolchains, each imposing some restriction on the project. On the other hand, some users may be ok with whatever compiler and build system that is available and don't mind switching their toolchain for better interop experience. The more flexible users are about their compiler and build system, the more features the interop system can provide to them.

C/C++/Rust interop tools by compiler flexibility

Explain why it is a 2 axis chart.