Writing cross-language implementation is difficult

When starting a new software project, one of the first choices to make is the programming language to use. This choice is mandatory: without it, you cannot proceed.

This choice is hugely impactful, as it defines what libraries, frameworks, and tooling you have available.

Even if similar frameworks, libraries and tools exist in a different programming language, there will be many differences: the functionality will be different, the terminology will be different, the APIs will be different, the undocumented and/or buggy behavior will be different, etc.

It is often quite hard to reuse software from other languages. There are some bridges (e.g. calling JavaScript from Ruby, or Ruby from Swift etc) but these are brittle and unreliable.

Porting a software project from one language to another might as well be a full rewrite.

Some tools (e.g. Ragel) cross languages, which makes them uniquely useful, even if they have some tie-in to the host languages.

See also: There is no cross-language standard library.