[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: nlohmann-json3-dev need to be reverted to trixie version



Hello Timo,

>If the namespace name is the only relevant thing that changed, this will 
>work and is (IMHO) a quite elegant solution to the current dilemma. 
>However, if there is genuine ABI breakage, it will just paper over the 
>issue and cause bugs downstream, so we need to check that first.

I think I already checked that long time ago, I don't see breakages, but other experts might
want to have another look please

>There is a spectrum with the current solution (each release is an 
>implicit ABI bump) at the one end and this proposal (no ABI versioning 
>at all) at the other.
>
>Personally, I would prefer the middle ground with a namespace tag that 
>has an independent ABI version that gets bumped like a SONAME, because 
>you can never have two different versions of nlohmann-json interfering 
>in the same binary (for example, because two libraries happen to use 
>them internally and do not hide their private symbols properly).
>
>In practise, it will most likely not be an issue unless the Release Team 
>forgets to BinNMU a library that uses nlohmann-json as private 
>dependency (becauses vendored copies in third party libraries will 
>probably keep the default namespace versioning). So proper versioning 
>for nlohmann-json is not the hill I'm going to die defending. ;)


Question, isn't this covered by

#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK
    #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH)
        #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 12 || NLOHMANN_JSON_VERSION_PATCH != 0
            #warning "Already included a different version of the library!"
        #endif
    #endif
#endif

#define NLOHMANN_JSON_VERSION_MAJOR 3   // NOLINT(modernize-macro-to-enum)
#define NLOHMANN_JSON_VERSION_MINOR 12  // NOLINT(modernize-macro-to-enum)
#define NLOHMANN_JSON_VERSION_PATCH 0   // NOLINT(modernize-macro-to-enum)

code?

G.


Reply to: