Den fre 12 dec. 2025 kl 18:43 skrev Evgeny Kotkov via dev <
[email protected]>:

> Hi all,
>
> I noticed that libsvn_ra_serf on trunk currently contains several blocks
> of code conditional on SERF_VERSION_AT_LEAST(1, 4, 0).  Since Serf 1.4.0
> is unreleased, this code relies on development snapshots rather than a
> stable API:
>
>   subversion/libsvn_ra_serf/eagain_bucket.c(69):
>       #if !SERF_VERSION_AT_LEAST(1, 4, 0)
>   subversion/libsvn_ra_serf/eagain_bucket.c(102):
>       #if SERF_VERSION_AT_LEAST(1, 4, 0)
>   subversion/libsvn_ra_serf/sb_bucket.c(120):
>       #if !SERF_VERSION_AT_LEAST(1, 4, 0)
>   subversion/libsvn_ra_serf/sb_bucket.c(163):
>       #if SERF_VERSION_AT_LEAST(1, 4, 0)
>   subversion/libsvn_ra_serf/serf.c(168):
>       #if SERF_VERSION_AT_LEAST(1, 4, 0) && !defined(SVN_SERF_NO_LOGGING)
>   subversion/libsvn_ra_serf/serf.c(255):
>       #if SERF_VERSION_AT_LEAST(1, 4, 0) && !defined(SVN_SERF_NO_LOGGING)
>   subversion/libsvn_ra_serf/serf.c(322):
>       #if SERF_VERSION_AT_LEAST(1, 4, 0) && !defined(SVN_SERF_NO_LOGGING)
>   subversion/libsvn_ra_serf/serf.c(334):
>       #if SERF_VERSION_AT_LEAST(1, 4, 0) && !defined(SVN_SERF_NO_LOGGING)
>   subversion/libsvn_ra_serf/serf.c(594):
>       #if defined(SVN_DEBUG) && !SERF_VERSION_AT_LEAST(1,4,0)
>   subversion/libsvn_ra_serf/update.c(619):
>       #if SERF_VERSION_AT_LEAST(1, 4, 0)
>   subversion/libsvn_ra_serf/util.c(483):
>       #if SERF_VERSION_AT_LEAST(1, 4, 0) && defined(SVN__SERF_TEST_HTTP2)
>   subversion/libsvn_ra_serf/util.c(560):
>       #if SERF_VERSION_AT_LEAST(1, 4, 0) && defined(SVN__SERF_TEST_HTTP2)
>
> It seems that this is essentially a ticking timebomb.  The code encodes
> assumptions about a development version of Serf but will automatically
> activate if a user builds against an officially released Serf 1.4.0+.
>
> More specifically:
>
> - The code may not compile, depending on the final API state in Serf
> 1.4.0+.
>
> - Even if it compiles, assumptions about Serf's behavior may no longer
> hold.
>
> - Even if the assumptions hold, these code paths may still not work as
> intended,
>   because they are effectively hidden from our standard release testing and
>   buildbots.
>
> I think we should treat this as a compatibility issue.  I can think of the
> following ad-hoc fix:
>
> 1) Place such code under an additional guard (#ifdef
> SVN__SERF_EXPERIMENTAL)
>    that is never defined in production builds.
>
> 2) Backport this change to 1.14.x as well.
>

Hi,

I agree in principle on your analysis.

I would prefer to focus resources on getting Serf 1.5 out of the door, see
my message on [email protected]. We could then also include already existing PRs
from our GitHub repository that are just waiting for a Serf release.

Kind regards,
Daniel

Reply via email to