https://github.com/indoorvivants/sn-bindgen
Scala 3 native binding generator + libclang facade
https://github.com/indoorvivants/sn-bindgen
bindings c generator sbt scala scala-native
Last synced: 3 days ago
JSON representation
Scala 3 native binding generator + libclang facade
- Host: GitHub
- URL: https://github.com/indoorvivants/sn-bindgen
- Owner: indoorvivants
- Created: 2021-12-26T14:09:46.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2026-06-15T11:15:35.000Z (3 days ago)
- Last Synced: 2026-06-15T11:40:13.216Z (3 days ago)
- Topics: bindings, c, generator, sbt, scala, scala-native
- Language: Scala
- Homepage: https://sn-bindgen.indoorvivants.com
- Size: 3.44 MB
- Stars: 98
- Watchers: 2
- Forks: 15
- Open Issues: 58
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Bindings generator for Scala 3 Native
[](https://index.scala-lang.org/indoorvivants/sn-bindgen/bindgen-interface)
Distributed as a SBT plugin and a CLI program, this project generates idiomatic
Scala 3 Native bindings to C libraries using libclang.
- [Documentation](https://sn-bindgen.indoorvivants.com/index.html)
- [Template](https://github.com/keynmol/sn-bindgen-template)
- [Sample bindings and usage examples](https://github.com/keynmol/sn-bindgen-examples) - Postgres, Sqlite, Tree Sitter, cJSON, Git, Lua, Redis, RocksDB, DuckDB, libuv, Cmark, s2, OpenSSL, etc.
**Status (March 2026)**: project it actively maintained, and is used in several applications
- Generates glue C code to work around Scala Native's missing interop features
- Strongly typed (where possible) interfaces to structs, unions, and functions
- Supports named enums
- Collects unnamed enums into a single location
- Extra flags to work around compiler deficiencies
- Supports some `#define` macro definitions