Skip to content

Define a versioning and compatibility strategy for ROM symbols and radio blob updates in esp-rom-sys #4675

@JurajSadel

Description

@JurajSadel

we never want breaking changes in esp-rom-sys

That was the initial assumption and it will hold true until we need to update the radio blobs.

What makes all of this a bit more complex is, (in my point of view) we have three different "tiers" of items this crate provides:

  • the Rust helpers / wrappers (this is the easiest part - we just don't want to see anything breaking here, ever)
  • some symbols we rely on (i.e. common ROM functions we use in other crates ... we just don't want to see anything breaking here, ever - but that's only a hand full of symbols)
  • a lot of other symbols we don't even can know what their meaning is (the tricky part ... when the blobs in esp-idf are updated it's quite common that ROM functions get commented out and are replaced by code found in the blobs )
  • (in theory another category: ROM functions replaced by libesp_rom.a ... but that is not a problem since that happens inside esp-rom-sys ... which makes we wonder if we should/need to take that (symbols from libesp_rom.a) into account here?)

So what to do here and now?

I have ideas how to overcome the above problems but we need to carefully validate these (and hope one of them will work). In any case it's far beyond the scope of this PR.

We can just assume our original assumption about this to never see any breaking changes will hold true and just don't allow anything beyond a patch-version bump here. This PR should help us to uphold this requirement.

And we need to open a new issue to find a solution for the outlined (forseeable) problems. (we will need to solve that before the next blob update)

The outcome of that new issue might even be that we will need breaking changes but hopefully not.

Originally posted by @bjoernQ in #4584 (comment)

Metadata

Metadata

Labels

RFCRequest for commentpackage:esp-rom-sysIssue related to the esp-rom-sys package

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions