On Thu, Mar 06, 2003 at 09:41:04AM -0700, M. Warner Losh wrote:
>In message: <[EMAIL PROTECTED]>
>            Peter Jeremy <[EMAIL PROTECTED]> writes:
>: Disadvantages:
>: - Needs grunt-work to write the #defines
>: - Kernel symbols reported by nm(1) look strange (unless we patch
>:   binutils to understand our versioning scheme).
>: - May present problems to '##' built symbols.
>
>History has shown that people suck at keeping such a complex scheme up
>to date.  Also, it versions functions, but not datta structures.  Data
>strucutre changes are the number 1 cause of ABI breakage we've had
>over the last 5 years.

I had thought it was fairly simple to maintain, but hadn't really
thought through the issue of data structures.  If a function or
variable definition changes directly, it isn't a great deal of
overhead to increment a number elsewhere in a header file that you
have to edit anyway.  (Though the number of 'bump PORTREVISION please'
followups to ports commits suggests that it would be forgotten).

If a struct/union/typedef changes, you would need to look through all
the references to that type and update them.  And if any of the
references were another struct/union/typedef, you need to repeat the
process.  This would be onerous - especially for common types - and
therefore neglected.  I can't think of any way to easily automate
this so I'll withdraw my suggestion.

That said, I feel that a single number (or variable name) is too
coarse and the "do I need to bump the version" decision is too fuzzy.
Unfortunately, I can't think of anything better that wouldn't incur
an unacceptable maintenance overhead.

Peter

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to