Skip to content

Conversation

@jplexer
Copy link
Member

@jplexer jplexer commented Feb 10, 2026

Decouple symbol table ordering (addedRevision) from firmware compatibility by adding an updateRevision field to exported_symbols.json. After linking, the build system analyzes the app ELF to find which SDK functions are used, computes the max updateRevision among them, and patches the binary's SDK version field. This allows apps compiled with a newer SDK to target older firmware when they only use older APIs.

Revisions <= 89 map to minor 0x56 (historical cutoff); revisions >= 90 map directly to the minor byte (90 = 0x5A, 91 = 0x5B, etc.).

Basically a version of #577 that should not break existing behavior

@jplexer jplexer force-pushed the add-update-revision-support branch from b45e026 to 74fce16 Compare February 10, 2026 21:35
Decouple symbol table ordering (addedRevision) from firmware
compatibility by adding an updateRevision field to exported_symbols.json.
After linking, the build system analyzes the app ELF to find which SDK
functions are used, computes the max updateRevision among them, and
patches the binary's SDK version field. This allows apps compiled with a
newer SDK to target older firmware when they only use older APIs.

Revisions <= 89 map to minor 0x56 (historical cutoff); revisions >= 90
map directly to the minor byte (90 = 0x5A, 91 = 0x5B, etc.).

Signed-off-by: Joshua Jun <joshuajun@proton.me>
@jplexer jplexer force-pushed the add-update-revision-support branch from 74fce16 to 45bfc7b Compare February 10, 2026 22:02
@jplexer jplexer marked this pull request as ready for review February 10, 2026 22:02
@jplexer jplexer requested a review from gmarull February 10, 2026 22:03
@jplexer
Copy link
Member Author

jplexer commented Feb 10, 2026

Confirmed working by rebasing moddable repo onto this, compiling some apps with it and seeing if non-moddable api applications run on a older fw

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant