I've considered using your suggested approach but also been using an arguably cleaner solution for around the past year[*]. If you look in src/client/symbols.map you will find:

  MIR_CLIENT_9.1 {  # New functions in Mir 0.15

It's no less foolproof than what you suggest, but has the added benefit of not over-growing symbol names embedded in the binaries.

Given that symbol name length is a major cause of binary bloat in C++ already, that's something to consider...


[*] Past year but you won't find many traces of it because we keep deleting the entries with comments when they get subsumed by major ABI bumps.


On 28/08/15 23:46, Alan Griffiths wrote:
The current approach to naming stanzas in the symbol maps leads to a
potential for mistakes. For example, src/platform/symbols.map has the
following stanzas:

MIRPLATFORM_9 {
...
}

MIRPLATFORM_9.1 {
...
} MIRPLATFORM_9;

It is far from obvious when adding a symbol whether it should be added
to MIRPLATFORM_9.1 or to a new MIRPLATFORM_9.2. As it happens
MIRPLATFORM_9.1 was created after 0.15 was branched so that is the
"right one". But it isn't obvious: If MIRPLATFORM_9.1 had shipped in
0.15 then MIRPLATFORM_9.2 would be right.

I don't know of any reason why we name stanzas this way except "tradition".

What does the team think of using this instead?

MIRPLATFORM_9_new_symbols_from_0.16 {
...
} MIRPLATFORM_9;

And after we branch release 0.16 it is clearer we should add:

MIRPLATFORM_9_new_symbols_from_0.17 {
...
} MIRPLATFORM_9_new_symbols_from_0.16;

When the ABI breaks we consolidate as before.


--
Mir-devel mailing list
Mir-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/mir-devel

Reply via email to