API bindings

API bindings allow for programmatic use of IREE's compiler and runtime components. The core IREE project is written in C[^1], allowing for API bindings to be written in a variety of other languages.

!!! question - “Something missing?”

Want to use another language? Looking for something specific out of one of
those already listed?

We welcome discussions on our
[communication channels](../../index.md#communication-channels) and
contributions on [our GitHub page](https://github.com/iree-org/iree)!

Official API bindings

Members of the core project team and other partner groups maintain these official bindings:

LanguageCompiler API?Runtime API?Published packages?
C/C++:white_check_mark: Supported:white_check_mark: Supported:x: Unsupported
Python:white_check_mark: Supported:white_check_mark: Supported:white_check_mark: Supported

C/C++

See the C API reference page.

:simple-python: Python

See the Python reference page.

Unofficial and experimental API bindings

Members of our developer community have authored bindings using other languages:

LanguageCompiler API?Runtime API?Published packages?
JavaScript:grey_question: Experimental:grey_question: Experimental:x: Unsupported
Java:x: Unsupported:grey_question: Experimental:x: Unsupported
Julia:grey_question: Experimental:grey_question: Experimental:x: Unsupported
Rust:x: Unsupported:grey_question: Experimental:grey_question: Experimental

:simple-javascript: JavaScript

  • JavaScript bindings for WebAssembly and WebGPU are under development in IREE's experimental/web/ directory.

:fontawesome-brands-java: Java

:simple-julia: Julia

  • Coil.jl is an experimental package to lower and execute Julia tensor operations to IREE.

:simple-rust: Rust

[^1]: with some C++ tools and utilities