← Back to team overview

kicad-developers team mailing list archive

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

 

On Wed, Jan 14, 2015 at 5:20 AM, 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
>

I would prefer to do what had been done in the past - simply increase
the File Version number and don't expect earlier versions to support
the new features (or to read the board at all).  What we *can* safely
do is check the file version number when parsing and if the parser
does not recognize it then we can display a message to say that it
is a newer file version and we cannot read it. If people are collaborating
and this can be an issue then they must agree on a version of KiCad
to use; after all in most cases they can build any historical version
from the past 2 years.

- Cirilo

Follow ups

References