Hi,

After some discussions on IRC, it appears this raises several concerns about back-compatibility.

The main points being:

- if a protocol file previously did not use these extra attributes, and choses to add them, depending on the language using them it can be a breaking change (as it would change the prototype of the requests from u(int) to the enum type for example) - if a variant is added to an already existing enum, it can be a breaking change for some languages (Rust is one of them, as the compiler enforces you to cover all possible variants when matching on an enum). - some enums, like xdg_shell::xdg_surface::states are by definition not complete.
- and most likely other similar issues with "array" types or so

These questions need to be resolved, and a proper specification of what should contain the .xml files will certainly need to be written to properly handle all this.

To other bindings writers: what are you opinions and constraints on these back-compatibility hazards ?

In my case (Rust):
- the question adding the an "enum" attribute to a field that didn't use it is a breaking change that needs thought.
- adding a variant to a bitfield is not a problem
- adding a variant to a classic enum is not trivial a priori, but I have possibilities to future-proof this with small overhead, and it would handle incomplete enums as well. (it involves using a wrapping struct that optionnaly tries to convert the raw value to the enum) - as well, adding the specification of the type contained in an array to an arg that didn't have it would be a breaking change, and as such needs thought.

----
Victor

Le 2015-09-18 20:55, Bill Spitzak a écrit :
On Fri, Sep 18, 2015 at 5:37 AM, Nils Chr. Brause
<nilschrbra...@gmail.com> wrote:

Hi,

There are even earlier discussions about including 'bitfield' and
'enum' fields into the XML protocol file, e.g:

http://lists.freedesktop.org/archives/wayland-devel/2014-September/017071.html
[1]
But none of them led to any actual changes.

I still would very much like to see the 'bitfield' and 'enum'
fields
to be included in the XML protocol file. This would greatly
simplify
the creation of Wayland bindings for most high level programming
languages and thus increase the popularity of Wayland amongst
programmers who don't wish to use toolkits.
Without these information about bitfields and enumerations,
language
bindings would have to maintain their own version of the XML
protocol
file, like I am doing with my C++ bindings here:
https://github.com/NilsBrause/waylandpp [2]

Yes please get this in. I really expected this to be merged long ago.

This is almost a requirement for bindings for any language other than
C. And it greatly improves the automatically generated documentation
of the C api, too!

And it is absolutely 100% compatible with everything that exists right
now (except code reading the xml files, which might have to be
modified to ignore the new tags). It does not change the size or bit
layout of any data in the stream protocol and does not change the C
api, and does not prevent the sending or construction of any message
or event that can be sent right now. In particular it does not prevent
bit patterns that are not in the enumeration from being sent by the C
api.



Links:
------
[1]
http://lists.freedesktop.org/archives/wayland-devel/2014-September/017071.html
[2] https://github.com/NilsBrause/waylandpp

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to