Date: Mon, 19 Sep 2022 21:23:07 -0500
Communication of version isn't even worth thinking about until you solve the interoperability problem. That is I have two unrelated libraries, one using std::foov1 and one std::foov2. How do i, in a performant and not too ugly way move data between these two libraries.
So long as the above problem isn't solved I need to build everything against the same standard library and so a simple system wide flag is all we need. Or maybe some for of package config (currently there is no C++ package manager but many implementations have something. Cmake for example) my build system can throw an error if i'm mixing versiones.
I have some ideas for how to solve the problem, but they only work in specific circumstances and not general. Where they work I don't need any marker like you propose. Though i'm open to other solutions that do. However either way, start by. Proposing something that breaks ABI, then propose a work around to allow mixing old and new (where new is aware of old), and then only if a marker is needed do we add it.
So long as the above problem isn't solved I need to build everything against the same standard library and so a simple system wide flag is all we need. Or maybe some for of package config (currently there is no C++ package manager but many implementations have something. Cmake for example) my build system can throw an error if i'm mixing versiones.
I have some ideas for how to solve the problem, but they only work in specific circumstances and not general. Where they work I don't need any marker like you propose. Though i'm open to other solutions that do. However either way, start by. Proposing something that breaks ABI, then propose a work around to allow mixing old and new (where new is aware of old), and then only if a marker is needed do we add it.
-- Henry Miller hank_at_[hidden] On Mon, Sep 19, 2022, at 20:21, William Linkmeyer via Std-Proposals wrote: > # Versioned Standard > > ### Document: <awaiting> > > ### Date: September 19, 2022 > > ### Audience: LEWG > > ### Reply To: willhl_at_[hidden] > > ## Introduction > > ABI stability is a communication problem. Libraries, meant to be > shared, often version themselves. The obvious purpose is to communicate > change over time. > > The standard library itself is often versioned. Some shared standard > library, `libc++.so.0`, may differ from some other shared standard > library, `libc++.so.9`. > > There is no reliable channel of communication between between libraries > and their associated standards. > > ## Motivation > > ABI is a perennial issue. Tools must be provided to users who wish to > specify their intended standard library version. > > ## Implementation > > Introduce the *language* template to specify the intended standard > version range to be used: > > ```c++ > using std = std::v<2017, 2023>; > ``` > > Which will embed an implementation-defined hint within the resulting binary. > > WL > -- > Std-Proposals mailing list > Std-Proposals_at_[hidden] > https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
Received on 2022-09-20 02:23:28