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.