If you intend to write extension for Python, Ruby, PHP, Lua, Node or most of any high level language, you need to write it in C.

Want to build a library that can be used in any of the high level languages? Write it in C and provide binding.

A library code written in PHP can't be used by Haskell. Not without a big overhead. Or vice versa. Write it in C and your are done.

These are where C still comes handy.

Fortunately, you don't have to use C for this any more. Rust has bindings for making extensions for Ruby, Python, Lua and Node, and generally it's very well suited for making zero-cost cleaner APIs on top of C FFI.

https://github.com/tildeio/helix https://github.com/PyO3/pyo3 https://github.com/kyren/rlua https://github.com/neon-bindings/neon