Versioning

Two independent dimensions:

  1. Project version — native-api-bindgen 0.x.y (SemVer) covers the generator, runtime, IR schema and the shape of generated APIs.
  2. 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