[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

ABI breakage

From: Philip Martin <philip_at_codematters.co.uk>
Date: 2005-03-22 23:33:39 CET

Philip Martin <philip@codematters.co.uk> writes:

> Ben Collins-Sussman <sussman@collab.net> writes:
>
>> After four months of work, the locking branch is merged and gone.
>>
>> Huge thanks to Fitz and Lundblad, you guys were amazing. And thanks
>> to Sander for helping with the libsvn_fs_base schema, and cmpilato and
>> kfogel for undying support... and ... um... I'd like to thank the
>> Academy...
>>
>> So start playing around. Find the bugs. I'd like to branch for 1.2
>> in a week. :-)
>
> I see that you changed the svn_wc_entry_t struture:
>
> - It is now about 20% bigger on a typical 32-bit machine. The entries
> caching in the client means that there are lots of these in memory,
> I don't know what proportion of the memory they use but it's
> possible it will noticeably affect the memory used by the client.
>
> - I have a nasty feeling that it qualifies as an ABI change, so the
> rules require a new svn_wc_entry2_t. Yuck! I really don't like the
> size of the changes we would need to accomodate that.
>
> Perhaps the lock data could be stored in a separate cache within the
> access baton, then no change to svn_wc_entry_t would be required.
> A separate cache could avoid using any significant memory if there are
> no locks.

I see that svn_wc_status_t and svn_client_ctx_t have also been
changed, as well as svn_wc_entry_t noted above. In all cases new
members have been added to the end of a structure, and I see that the
new svn_wc_notify_t structure advises that doing this for ABI
compatibility. While it is possible to write code that is compatible
with such changes, it is also trivial to write code that will be
broken. We have to consider third-party code as well as the
Subversion code, these are public structures.

The svn_client_ctx_t change might well be classified as acceptable,
since the documentation advises that svn_client_create_context is used
to create/initialise such structures. I see we already made such a
change to svn_ra_plugin_t in 1.1 and I guess that we always intended
to be able to do that even if we did not document it.

For the other structures, namely svn_wc_status_t and svn_wc_entry_t no
such warning is given and third party software may well be using these
in a way that is incompatible with the current ABI changes.

-- 
Philip Martin
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Mar 22 23:35:46 2005

This is an archived mail posted to the Subversion Dev mailing list.