MetaCall allows calling functions between multiple programming languages.


When working with different technologies and developers of different programming languages, the productivity of the entire team worsens due to the lack of interoperability and communication between them. If the developers need two technologies which are written in different programming languages, for example, a C/C++ library called from NodeJS, the team usually needs to port to one of the two languages or write a wrapper around them. Maintaining a port of a library or the plumbing code is usually error prone, time consuming and does not add any value to the final product.

Why MetaCall?

The main objective of MetaCall is to provide a transparent interoperability in both ways, no matter what language you are using, so you feel like you are using a library written in the same language but in fact, it may be written in C, NodeJS or whatever.

We want to allow polyglot applications to be written in a transparent way, and allow multiple developers to work in the same project using different languages.


MetaCall currently provides a mechanism to introspect the types and function signatures which allows us to provide this type info to the caller language. You can have type safety and at the same time avoid boilerplate in both directions.


MetaCall addresses the main shortcomings of embedding independent languages separately. Having a common implementation with a plugin architecture allows you to implement newer languages without rewriting more code. With a single solution you get C#, Ruby, Python, ... or any language you prefer. We can improve the core continuously and add new languages. Imagine you don't want to use CPython anymore and you want to try PyPy instead because you need performance. Write a new backend and you will only need to change the language tag "py" by "pypy" and you are done.

lightbulb_outline View ideas list


  • c/c++
  • javascript
  • python
  • cmake
  • guix


comment IRC Channel
mail_outline Contact email

MetaCall 2021 Projects

  • Harsh Bardhan Mishra
    Development of Jupyter Kernel for MetaCall Core
    MetaCall Core is an open-source software that brings the polyglot programming experience to Developers. With MetaCall, developers can embed different...
  • ketangupta34
    Java Loader using Java Native Interface
    Metacall acts as a middleware between two languages using which we can call function present in one language from another. Java is a high-level...
  • Jeppe Blomgren
    WebAssembly loader
    WebAssembly is an emerging standard for a binary instruction format designed to be run on a virtual machine. It is designed to be portable, stable...