On Tue, Jan 6, 2026 at 12:48 PM Daniel Sahlberg <[email protected]> wrote:
> Den fre 12 dec. 2025 kl 19: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. >> >> >> Thanks, >> Evgeny Kotkov >> > > This might be tangential to Evgeny's original suggestion (which was > resolved and committed in r1930808) but I'll steal the thread anyway. > > The new APIs in Serf are now marked as @since 1.5 in the docstring[1]. > > Would it make sense to update the above to SERF_VERSION_AT_LEAST(1, 5, 0)? > It makes sense to me. Not that there will be a Serf 1.4 release at all [2] but it might cause > less confusion in the future. > Agreed. I don't suggest any change to the SVN__SERF_EXPERIMENTAL flag - Evgeny's > arguments about the stability of the SERF 1.5 APIs still hold (although I > think Serf is nearing a 1.5 release). > > Cheers, > Daniel > > [1] https://lists.apache.org/thread/cnxhq0920st3ny6dt9c58og7oh7c1zsc > [2] https://lists.apache.org/thread/8d3b77gj35jfd646byhscgkb15886rfm > > Thanks, Nathan

