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

