Boost logo

Boost :

From: Edward Diener (eldiener_at_[hidden])
Date: 2020-09-22 16:14:12


On 9/22/2020 10:35 AM, Andrey Semashev via Boost wrote:
> On 9/21/20 8:37 PM, Edward Diener via Boost wrote:
>> Since we are reviewing Vinnie Falco's JSON library I thought that this
>> would be a good time to present a proposal to add information to each
>> Boost library's meta/libraries.json file regarding the level of C++
>> standard compliance for that library. This could then be added to each
>> library's visual documentation so that end-users would instantly know
>> the C++ standard level they would need to use in order to use a Boost
>> library.
>>
>> My proposal is to add 3 fields whose data would be the same as the
>> cxxstd allowed values from Boost Build, using the first value of each
>> choice ( currently 03, 11, 14, 17, 20 ).
>>
>> standard = minimum C++ level for the library
>> extended = same functionality in the library as the minimum C++ level
>> but with extended use given higher C++ levels
>> required = new functionality in the library above the minimum C++
>> level which requires given higher C++ levels
>>
>> The 'standard' field would be a single value, while the 'extended' or
>> 'required' fields could be more than one comma separated value. If you
>> don't like the names for 'standard', 'extended', or 'required' you can
>> bikeshed the name, although I think the 'standard' name is pretty well
>> apparent.
>>
>> The idea is to provide this information in the meta/libraries.json
>> field for each library, so that the end-user of the library can
>> immediately know the usability of the library with appropriate C++
>> standard levels of compilation.
>
> One downside of a manual markup is that this information can go out of
> sync. Including due to changes in a dependency of a library. Granted,
> the status quo also has this downside, so it doesn't make things worse.
> But since we're talking about a tag in a JSON document, it would be nice
> if the value could be deduced from dependencies.
>
>> I realize that the line between the 'extended' and 'required' entries,
>> as I have described them, could be blurred. The 'standard' field
>> remains the most important. I have long felt that the end-user should
>> not have to do any investigation, in code or in documentation, just to
>> determine if a library is usable for his C++ standard level of
>> compilation.
>
> I'm not sure I understand what "extended" and "required" tags mean. I
> think the most practical tags are the minimal C++ version at which the
> library is minimally useful, and the minimal C++ version at which it is
> fully useful (meaning, the user can use all features of the library).

I proposed "extended" to mean that the C++ level(s) gives an easier
means to use the functionality of the library without changing the
functionality offered, while "required" is meant to mean that the C++
level(s) adds new functionality to the library. The former might be used
if their was better, improved syntax in the library to use the
functionality in the library above the minimum "standard" level, while
"required" meant that added functionality exists in the library which is
not available at the minimum "standard" level.

If the two latter "extended" or "required" are dropped, I am fine with
that, but let's at least tell the end-user what the minimum C++ level is
to use a Boost library in an easy to find transparent way with
"standard" ( or whatever you want to call it ).


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk