]> granicus.if.org Git - graphviz/commit
remove sfio versioning mechanism
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 7 Jul 2021 01:49:03 +0000 (18:49 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 10 Jul 2021 00:12:24 +0000 (17:12 -0700)
commit43d1dfdcce3eccf054c55924a8cdc13750a0d59c
tree1ad3dead822523bc74db1084c41703c42bcaf847
parent6a2272de0ff7abfc071bf303790c86bff4599694
remove sfio versioning mechanism

The sfio library versioned its format structure, _sffmt_s. This allowed multiple
format structures of differing versions to exist in memory at once,¹ with sfio
able to distinguish between a structure created by itself vs a structure created
by a different version of sfio. In theory, this allows multiple versions of the
sfio library to be loaded at once.

In practice, Graphviz does not take advantage of any of this. In fact, it is not
possible to do this within Graphviz as SFIO_VERSION has not been bumped when
lib/sfio is changed. It still claims to be compatible with a version developed
in 2001.

This commit removes the versioning mechanism entirely, in order to both reduce
maintenance overhead as well as remove the runtime cost associated with managing
this data. The latter is trivial in terms of runtime, but it is also work that
has no purpose.

¹ This kind of design often also allows you to serialize a structure to disk or
  network to later be read back in by a potentially differing version of the
  library. In the case of sfio however, this use case was not possible because
  the structure contains function pointers.
lib/expr/exeval.c
lib/sfio/sfio.h
lib/sfio/sftable.c