← Back to team overview

kicad-developers team mailing list archive

file version compatibility (optional tokens in s-expression files)

 

Hi all,

During my work on diff pairs/matched length tools, I've encountered a
rather tricky problem: as the diff pair gap specific to a particular
pair of traces is stored nowhere, the shove algorithm will mess up DP
coupling after saving and re-loading the board. Ergo: the DP gaps (and
possibly other settings) need to be stored somewhere in .kicad_pcb
files. Perhaps in a yet another s-expr token.

The problem is that adding any new token to the file format causes all
precedent versions of pcbnew to drop an error attempting to load the
file. I would propose two solutions to overcome this:
- (a dumb one) if the version in the file header is newer than the
version supported by the running application, issue warnings instead of
fatal errors on unknown tokens,
- (a bit smarter) enclose all optional tokens in a "minimum" version
block ( min_version version_number ( optional_token ( ... ) ) ) that
would be ignored if the application version < version_number.

I consider this modification quite important from the point of view of
adding future features and the upcoming stable version: if we keep
things as they are, adding any new feature will either make the files
unreadable to the stable version or force us to support saving in
multiple format versions.

Looking forward to your feedback,
Tom


Follow ups