On Mon, Feb 25, 2019 at 12:42:58PM +0100, Erik Skultety wrote: > On Mon, Feb 25, 2019 at 11:14:41AM +0000, Daniel P. Berrangé wrote: > > On Mon, Feb 25, 2019 at 12:09:41PM +0100, Erik Skultety wrote: > > > On Fri, Feb 22, 2019 at 04:43:25PM +0000, Daniel P. Berrangé wrote: > > > > On Fri, Feb 22, 2019 at 04:32:27PM +0100, Erik Skultety wrote: > > > > > Unfortunately, in order to support the new flags, the last patch introduces an > > > > > API breakage as the convention we use for the bindings is to also enforce types > > > > > for flags. > > > > > > > > Yes, unfortunately this need to break ABI is fallout resulting from > > > > my decision to make the Go bindings do stricter enum validation that > > > > we have had at the C level. > > > > > > How would this affect the ABI? Both the old and the new enum have the same int > > > value 0x01, with the only difference that you could have fed a few more enums > > > into the API even though we documented that they were unsupported for that > > > usage. > > > > Previously an application would have done > > > > dom.ManagedSaveGetXMLDesc(libvirt.DOMAIN_XML_SECURE) > > > > With your change pushed, this becomes a compile error > > > > demo.go:20:27 cannot use DOMAIN_XML_SECURE (type DomainXMLFlags) as type DomainSaveImageXMLFlags in argument to dom.ManagedSaveGetXMLDesc > > > > because the DomainXMLFlags enum type doesn't match the new > > DomainSaveImageXMLFlags enum type. > > Yes, but if it's a compile time error, it's static type checking, isn't that > still API breakage? I'd understand if e.g. it was a public structure and the > project we'd expand the structure or added padding where the type is still the > same, so compilation is okay, but from binary POV it would not... Oh, i missed that you wrote 'ABI' rather than 'API'. ABI is probably ok unless function param types result in symbol mangling like C++ does, but I've not checked that. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list