Versioning
Two independent dimensions:
- Project version —
native-api-bindgen 0.x.y(SemVer) covers the generator, runtime, IR schema and the shape of generated APIs. - Platform SDK version — e.g.
Android API 36,iOS SDK 27.0. New platform APIs never bump the project major version.
Every generated file embeds:
// GENERATED CODE - DO NOT MODIFY BY HAND.
// Generated by native-api-bindgen <generatorVersion> (IR schema <irSchemaVersion>, runtime <runtimeVersion>)
// Source SDK: Android API <apiLevel> (platform revision <sourceRevision>)
No timestamps are embedded. ir.json additionally records generatorVersion, runtimeVersion, sdkVersion, apiLevel, sourceRevision and the configuration hash.
What is a breaking change (requires major bump once ≥1.0; minor while 0.x)#
- Renaming generated identifiers for an unchanged native symbol (including overload naming scheme).
- Changing the type mapping of an unchanged native type (e.g.
String↔JString). - Changing ownership/release semantics of generated objects or runtime error types.
- Removing an IR field or changing its meaning.
Not breaking: adding symbols from a newer SDK, adding IR fields, improving diagnostics, adding generated members.
Source:
docs/versioning.md