MLLIF is a MLIR based Language to Language Interoperability Flyover - with a goal to integrate API of all programming languages.
For details, See docs!
Frontend | Backend | |
---|---|---|
C | ⚗️ | 📌 |
C++ | ⚗️ | ⚗️ |
C# | 📌 | 🦺 |
- ✅ : Implemented, tested enough
- ⚗️ : Implemented, but in experimental state
- 🦺 : Working in progress
- 📌 : Planned
Origin | Tested on | |
---|---|---|
LLVM/Clang (ClangIR) | https://github.com/llvm/clangir | git (2025-01-18) |
RapidXML | https://rapidxml.sourceforge.net/ | 1.13 |
- Tested on git means it tested with submodule or local-clone of master branch of it
Warning
Currently, CMake script supports clang-based languages only
because this method depends on mllif-cir
.
For details, See docs.
You can use CMake function add_mllif_library
in cmake/UseMLLIF.cmake
:
add_mllif_library(<target> <language> <sources>...)
as:
add_mllif_library(my-project CXX main.cxx foo.cxx)
Note
language should be language identifier in CMake
It generates platform-dependent shared-object file with MSM file (MLLIF-symbol-model; it's just XML :P).
Let's assume target created with this command uses language 'A'. Bridge from host-language (B) to servant-language (A) involves from this MSM file. Then, with FFI in each language, runtime of B calls bridge between A and B. And that bridge calls runtime of A (created shared-object).
By this approach, Each language can call each other in single process, without any additional communication technics (such as TCP, Unix socket, shared memory, etc...).
For details, See docs!