Skip to content

FFI Guide ​

Project Links: GitHub · FFI Source · Bindings

Overview ​

MaìLang supports 12 programming languages through its C FFI layer.

C/C++ ​

c
#include "mailang.h"

int main() {
    MailangInterpreter* interp = mailang_create();
    MailangResult result = mailang_eval(interp, "1 + 2");
    if (result.code == 0) {
        printf("Result: %s\n", result.output);
        mailang_free_string(result.output);
    }
    mailang_destroy(interp);
    return 0;
}

Python ​

python
from mailang import MailangInterpreter

interp = MailangInterpreter()
result = interp.eval("1 + 2")
print(f"Result: {result}")

JavaScript/Node.js ​

javascript
const { MailangInterpreter } = require('mailang');
const interp = new MailangInterpreter();
console.log(interp.eval('1 + 2'));

Rust ​

rust
use mailang_core::MailangInterpreter;

fn main() {
    let mut interp = MailangInterpreter::new();
    println!("{}", interp.eval("1 + 2").unwrap());
}

Supported Languages ​

LanguageFFI MechanismTool
C/C++Native linkingcbindgen
PythonCPython C APIPyO3
JavaScriptNode-APInapi-rs
JavaJNIjni crate
GocgoC FFI
LuaLua C APImlua
RubyFFI gemUniFFI
SwiftC bridgingUniFFI
PHPext-ffiC FFI
C#P/InvokeC FFI
KotlinJNIUniFFI
WASMwasm-bindgenwasm-bindgen

Next Steps ​