docs

Language Bindings

Use Ultralight from other languages or build your own binding on the C API.

On this page

You can use Ultralight from languages other than C++ and C by adopting a community binding or building your own on the C API. We provide C++ and C directly, while community projects add support for other languages.

The C Base

Every binding sits on the C API, which mirrors the C++ surface (the JavaScript bridge, the DOM API, and data bindings included), so a binding built on the C headers reaches all of it. To see where the C API fits into the library's module map, see Architecture.

The <Ultralight/CAPI.h> umbrella header pulls in the JavaScript bridge headers automatically— the DOM and data-binding headers under <Ultralight/CAPI/> are separate includes.

If you're writing a binding, start with C API Conventions for the ownership, string, and callback rules.

Community Bindings

Community projects provide bindings for several languages.

Language URL
C# https://github.com/SupinePandora43/UltralightNet
Java (archived) https://github.com/LabyMod/ultralight-java
Rust (High Level) https://github.com/psychonautwiki/rust-ul
Rust (Low Level) https://github.com/psychonautwiki/rust-ul-sys

These are community projects, so check each one's README for the Ultralight release it targets.

If you've built a new binding, share it with us on Discord.