[libcxx-dev] Proposal for handling experimental features in libc++
Marshall Clow via libcxx-dev
libcxx-dev at lists.llvm.org
Fri May 17 08:18:17 PDT 2019
On Thu, May 16, 2019 at 11:18 PM Eric Fiselier <eric at efcs.ca> wrote:
> I'm coming into this conversation late, so let me pontificate for a moment:
> A large problem for the C++ commitee and standardization in general is
> that we don't actually get feedback from
> the experimental components we standardize and which standard libraries
> We want user feedback. And user feedback only comes when vendors can ship
> these experiments to users.
> The utility of feedback is it allows us to fix the experimental
> specification before it becomes locked in. This means
> allowing experimental implementation to change and evolve. We need to be
> allowed to make breaking changes.
> This requires breaking users.
> With that in mind, here are my thoughts on the proposal:
> * The "experimental" treatment should apply only to components the ISO C++
> committee deems "experimental".
> * `std::experimental::foo` and `std::foo` are different things. It's
> important for users to understand that
> `std::experimental::foo` provides none of the same API/ABI stability
> guarantees `std::foo` does.
> * We want to make it easy for users to transition from
> `std::experimental::foo` to `std::foo`.
I don't see how we (libc++) have any affect on this; other than making sure
that `std::foo` is available.
* It's super surprising when `std::experimental::foo` and `std::foo` both
> exist but have different behavior. If
> the `std::` version changed, we should consider this a bug fix against
> the experimental specification. Having
> two disparate sets of behavior helps no one.
I disagree here; each one has a different specification.
We should match the specs. If someone wants the new behavior in std::foo,
then they should use std::foo.
In the long (or even not-so-long) run, there should be only one:
Once that has landed in a shipping standard, we should get rid of
`std::experimental::foo` as soon as possible.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the libcxx-dev