JARVIGManual

Versioning

These counters move on their own. Bumping one does not bump the others.

StreamWhat it versionsBreak means
JARVIG_API_VERSIONThe stable C ABI and the plugin entryThe loader rejects a module that cannot negotiate
C++ SDKThe wrapper headersA recompile of the game, not a silent ABI break
Plugin APIThe capability tables a category usesThat category fails to load
Type registryField ids and type idsA migration for stored properties
World and asset schemajarvig.scene, jarvig.material, project filesA loader migration, already the rule for those schemas
Material IRCompiler outputA recook
Network protocolPackets between processesA version handshake
Cooked contentDerived bytesA cache miss, not a crash

ABI rules

  • JARVIG_API_VERSION is a uint32_t. The engine and the module both say what they implement.
  • Each long-lived struct and each function table also carries struct_size and api_version. One global number does not replace that. See c-abi.md.
  • Within a major version, codes, handle layouts, and existing struct fields do not change meaning.
  • New functions and new error codes are append-only.
  • Removing or renumbering a field is a new major version.
  • A deprecated function stays callable for at least one minor version after the docs mark it, unless it is a safety defect. The replacement is named in the same note.
  • A plugin that does not understand the engine's version fails cleanly with JARVIG_VERSION_MISMATCH and a log line. It does not run halfway.

The manifest of a plugin carries api_version, plugin_version, and the capability list it needs. Missing a required capability is a failed load, not a null crash later.

Serialized schemas keep the ids they already have (jarvig.scene/v1, jarvig.material/v1). This page does not invent a second version for those files.

native/jarvig_core/include/jarvig_core.h is a bootstrap slice, not the SDK, and it is not version-negotiated. The first header under sdk/c/include/jarvig/ defines JARVIG_API_VERSION. Do not pretend the clock exports are that header.