"Guy Harris" <guy@xxxxxxxxxxxx> wrote in message
news:D0F39927-63B3-4B50-9C3A-BDE6A6727AD9@xxxxxxxxxxxx...
>
> On Dec 19, 2010, at 10:37 PM, news.gmane.com wrote:
>
>> Well, that meens, any dissector DLL that uses this function stops working
>> with the next revision of libwireshark.dll
>
> We have never guaranteed that a dissector built for Wireshark major
> version 1.x will work with the development version 1.{x+1} or the
> next major release 1.{x+2}. We only guarantee that a dissector built
> for 1.x will work with 1.x.y, i.e. that stability will be preserved for
> all minor releases corresponding to a given major release.
So this change to trunk will not affect 1.4.x, will it? That's good.
BTW: When you only rename a function as you announce in this list it can be
still compatible with older DLLs. You need to create an alias in the DEF
file:
;old.def:
EXPORTS
foo
bar
;new.def
EXPORTS
foo_renamed
foo=foo_renamed
bar_renamed
bar=bar_renamed
This creates four entries in the export table while the implementaion has
only the new (renamed) functions.
>> I hope the new function names become stable, so that someday a Wireshark
>> API
>> can be defined.
>
> It takes more than just stable function names for a stable API.
> It requires that:
>
> for any function, its signature not change (no added or removed
> parameters);
>
> no function be removed;
>
> no incompatible change to any arguments for a function be made.
This is correct but incomplete. Please add:
- no incompatible change to any structure that is reference by any argument
- no change in the expected behavior must not change
The first should be illustrated. The pinfo member fd points to a structure
that has been changed between 1.2.x and 1.4.x. You this structure to
retrieve the packet number, used to identify conversations.
--
Andy