[esnacc-dev] ABI-change proposal

Aaron Conole aconole at bytheb.org
Thu Nov 3 20:01:02 UTC 2016


So, for 1.10, I want to propose making a change to the esnacc lists ABI
for the C library.

Currently, the AsnListNode structure uses a data field as an extension
point of the structure.  This is used throughout the code as follows:

  foo = (Foo **)AsnListAppend();
  *foo = Malloc(sizeof Foo)
  Foo *RealFoo = *foo;
  ...

My guess is that the original authors ran into alignment issues, and
rather than figure out how to tell each compiler that the structure
needed to be aligned, they hacked it up and converted over to using
pointer-to-pointer and avoid the alignment problems completely.

Since this makes for unintuitive code, I think it best to make this ABI
incompatible change in the 1.10 release (so, basically, let folks know
that it will be deprecated, and make 1.10 a new ABI).

Any opposition?  Any support?  Thoughts?

-Aaron


More information about the dev mailing list