← Back to team overview

kicad-developers team mailing list archive

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

 

In general, I like the min version idea.  It matches many web APIs with
including the version number.

However, I don't want to have to maintain users who want to run five stable
versions old and have them expect their software will still work with new
stuff.

Adam Wolf
On Jan 13, 2015 12:20 PM, "Tomasz Wlostowski" <tomasz.wlostowski@xxxxxxx>
wrote:

> 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
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
>

References