An experimental C API for MapLibre Native, built for low-level language bindings and host integrations that need a C boundary instead of direct C++ interop. https://maplibre.org/maplibre-native-ffi/
  • Kotlin 17.9%
  • Rust 15.1%
  • C++ 11.4%
  • Python 8.6%
  • C 8.5%
  • Other 38.3%
Find a file
2026-10-13 15:32:40 -07:00
.agents/skills/docs-writing improve docs (#512) 2026-08-02 02:19:52 -07:00
.claude improve docs (#512) 2026-08-02 02:19:52 -07:00
.config Bump clangsharppinvokegenerator and 3 others (#429) 2026-08-05 13:20:48 -07:00
.devcontainer Make the cross-compilation SDKs opt-in (#567) 2026-08-06 21:37:50 -07:00
.github fix: authenticate standalone mise toolchain installs in CI (#809) 2026-10-13 15:32:07 -07:00
.idea Bump maplibre-native to 6f75ff0 and drop upstreamed workarounds (#744) 2026-09-23 08:29:17 +00:00
.mise fix: build color ramps with the current global state (#806) 2026-10-10 12:33:42 -07:00
.ona Scope mise tools to monorepo projects (#317) 2026-07-25 12:23:27 -07:00
.vscode fix formatters on windows (#188) 2026-05-23 19:57:38 -07:00
.zed add shared dev tooling setup 2026-04-26 15:04:06 -07:00
bindings fix: don't set the map size again when set_target keeps the same size (#807) 2026-10-11 06:34:49 +00:00
buildSrc Support Vulkan on Android ARMv7 (#660) 2026-08-24 02:08:33 +00:00
ci fix: retry interrupted Android emulator SDK downloads (#810) 2026-10-13 15:32:40 -07:00
cmake fix(android): use platform locale expression services (#801) 2026-10-09 08:20:26 +00:00
docs fix: include callback_adapter.h siblings by bare name (#808) 2026-10-13 13:49:47 -07:00
examples Drop stale rpath edits from the Swift iOS simulator packaging task (#763) 2026-09-29 08:29:44 +00:00
gradle build: adopt NDK r30 LTS and consolidate Android provisioning (#796) 2026-10-08 22:54:31 -07:00
include fix: include callback_adapter.h siblings by bare name (#808) 2026-10-13 13:49:47 -07:00
patches fix: build color ramps with the current global state (#806) 2026-10-10 12:33:42 -07:00
scripts fix: retry interrupted Android emulator SDK downloads (#810) 2026-10-13 15:32:40 -07:00
src fix: don't set the map size again when set_target keeps the same size (#807) 2026-10-11 06:34:49 +00:00
third_party chore: update Native pin and retire merged fixes (#789) 2026-10-08 19:34:33 -07:00
.clang-tidy Route unconsumed log records to the platform logger on Android, Apple, and Windows (#682) 2026-09-03 07:51:04 +00:00
.clangd Support build variants (and MoltenVK) (#112) 2026-05-07 03:44:26 +00:00
.coderabbit.yaml Disable automatic CodeRabbit reviews 2026-06-19 11:01:58 -07:00
.gitattributes Rename packages to maplibre-native-ffi and align internal identifiers (#516) 2026-08-02 15:48:10 -07:00
.gitignore Move the Swift package manifest to the repository root (#493) 2026-08-01 13:34:57 -07:00
.gitmodules Skip the MapLibre Native submodule for git dependency consumers (#482) 2026-07-31 22:51:21 -07:00
.miserc.toml clean up build orchestration (#287) 2026-07-16 13:52:11 -07:00
.npmrc clean up build orchestration (#287) 2026-07-16 13:52:11 -07:00
AGENTS.md Drop ABI from the full-coverage guidance in AGENTS.md (#747) 2026-09-22 21:46:48 -07:00
AI_POLICY.md Add AI policy supplement and PR disclosure template (#199) 2026-05-28 11:55:18 -07:00
build.gradle.kts Publish tagged Kotlin releases to Maven Central (#559) 2026-08-05 22:14:03 -07:00
build.zig build: adopt NDK r30 LTS and consolidate Android provisioning (#796) 2026-10-08 22:54:31 -07:00
build.zig.zon Rename packages to maplibre-native-ffi and align internal identifiers (#516) 2026-08-02 15:48:10 -07:00
Cargo.lock Support macOS EGL in Rust rendering tests (#754) 2026-09-23 22:33:40 -07:00
Cargo.toml Rename packages to maplibre-native-ffi and align internal identifiers (#516) 2026-08-02 15:48:10 -07:00
CLAUDE.md add CLAUDE.md symlink 2026-04-27 00:15:27 -07:00
CMakeLists.txt Publish OpenHarmony native archives (#577) 2026-08-08 00:51:12 -07:00
CMakePresets.json Bump maplibre-native to 6f75ff0 and drop upstreamed workarounds (#744) 2026-09-23 08:29:17 +00:00
CODE_OF_CONDUCT.md Add contributor and community files (#63) 2026-04-30 02:42:00 -07:00
CONTRIBUTING.md Add binding specification (#219) 2026-06-15 01:33:00 -07:00
Directory.Packages.props Bump the nuget group with 2 updates (#740) 2026-09-22 21:43:29 -07:00
dprint.jsonc chore(format): use the official cmakefmt dprint plugin (#774) 2026-10-05 10:51:43 -07:00
global.json Bump the nuget group with 3 updates (#643) 2026-08-19 20:20:11 +00:00
gradle.properties KMP snapshot release infra (#297) 2026-07-23 09:42:48 -07:00
gradlew Bump the gradle group with 3 updates (#425) 2026-07-29 19:53:54 -07:00
gradlew.bat Bump the gradle group with 2 updates (#766) 2026-10-03 15:03:21 -07:00
hk.pkl Publish snapshots daily, gated on input changes (#474) 2026-07-31 19:06:19 -07:00
LICENSE Add BSD 2-Clause License file 2026-05-05 17:34:29 -07:00
Maplibre.NativeFfi.slnx Rename packages to maplibre-native-ffi and align internal identifiers (#516) 2026-08-02 15:48:10 -07:00
mise.android.lock Make the cross-compilation SDKs opt-in (#567) 2026-08-06 21:37:50 -07:00
mise.android.toml build: adopt NDK r30 LTS and consolidate Android provisioning (#796) 2026-10-08 22:54:31 -07:00
mise.emscripten.lock Make the cross-compilation SDKs opt-in (#567) 2026-08-06 21:37:50 -07:00
mise.emscripten.toml Make the cross-compilation SDKs opt-in (#567) 2026-08-06 21:37:50 -07:00
mise.linux.toml Add musl Linux targets (#657) 2026-08-24 08:45:07 -07:00
mise.lock Remove obsolete Rust entries from mise lockfile (#687) 2026-09-05 23:57:29 +00:00
mise.macos.toml Add tvOS Metal targets for the native C library (#616) 2026-08-13 03:09:31 -07:00
mise.ohos.lock Make the cross-compilation SDKs opt-in (#567) 2026-08-06 21:37:50 -07:00
mise.ohos.toml Refresh the local OHOS plugin link after install (#656) 2026-08-23 07:39:35 +00:00
mise.toml build: adopt NDK r30 LTS and consolidate Android provisioning (#796) 2026-10-08 22:54:31 -07:00
mise.windows.toml Keep Windows dependency sync native (#603) 2026-08-11 06:32:39 +00:00
package.json Bump the npm group across 1 directory with 2 updates (#800) 2026-10-08 22:58:23 -07:00
Package.resolved Move the Swift package manifest to the repository root (#493) 2026-08-01 13:34:57 -07:00
Package.swift Bump maplibre-native to 6f75ff0 and drop upstreamed workarounds (#744) 2026-09-23 08:29:17 +00:00
pnpm-lock.yaml Bump the npm group across 1 directory with 2 updates (#800) 2026-10-08 22:58:23 -07:00
pnpm-workspace.yaml Move pnpm to repo root as a monorepo (#194) 2026-05-27 21:49:45 -07:00
pyproject.toml Bump ruff from 0.16.9 to 0.16.10 in the uv group (#783) 2026-10-08 21:44:08 -07:00
README.md improve docs (#512) 2026-08-02 02:19:52 -07:00
SECURITY.md Add contributor and community files (#63) 2026-04-30 02:42:00 -07:00
settings.gradle.kts Group the Kotlin runtime modules under the binding (#581) 2026-08-08 00:54:53 -07:00
uv.lock Bump ruff from 0.16.9 to 0.16.10 in the uv group (#783) 2026-10-08 21:44:08 -07:00
vite.config.ts Remove docs file overrides from Vite config 2026-05-27 21:56:16 -07:00

MapLibre Logo

MapLibre Native FFI

MapLibre Slack License

This project provides an experimental C API for MapLibre Native. It is built for low-level language bindings and host integrations that need a C boundary instead of direct C++ interop.

The API exposes MapLibre Native concepts directly. Framework concerns such as gestures, widgets, declarative UI, and application lifecycle integration belong in downstream adapters.

MapLibre Native FFI is pre-1.0. The C ABI is unstable while mln_c_version() returns 0.

Documentation

Read the documentation site for concepts, usage guides, the generated C API reference, and contributor notes.

Status

The C API covers most of the MapLibre Native API surface. Advanced extension APIs, including custom layers and shader registry access, are not yet included.

Platform support is still filling in -- see the Overview page for full platform status.

License

BSD 3-Clause. See LICENSE.

Copyright (c) 2026 MapLibre contributors.