New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
P2123 interfaces: A Facility to Manage ABI/API Evolution #842
Comments
2021-05-11 ISO C++ Library Evolution TeleconP2123R0: Interfaces 2021-05-11 Library Evolution Telecon Minutes Chair: Bryce Adelstein Lelbach Champion: Hal Finkel & Tom Scogland Minute Taker: Inbal Levi Start: 2021-05-11 10:08 Pacific Motivation:
"On costs" slide typo - "technical dept" should be "technical debt". Presentation Ends, Discussion Starts: 11:00 Idea: Mechanism for globally changing the default interface version and default level of resiliency. Idea: Mechanism for different versions to exist within a single TU, including conversion from newer version objects to older version objects. End: 11:31 SummarySpurred by P2123 (interfaces), we had an excellent discussion of what the Standard Library would need from a language facility for resiliency and the nature and extent of Library Evolutionary challenges relating to stability. A few of the key takeaways from the discussion are summarized below. We need clearer definitions of the problems we are trying to solve and the techniques we plan to use to solve them. For example, it is important to clearly differentiate between:
It is also important for us to establish a clear understanding of the distinction between various techniques and solutions in this space:
An extensive and thorough study of specific places where we could improve the Standard Library if we could change the ABI, but not API or semantics, would be valuable. In particular, such a study for One of the main concerns with resiliency mechanisms like those proposed in P2123 are the costs and overheads, especially in cases where resiliency is not actually required. Breaking If we have a resiliency mechanism, deciding the defaults for resiliency and stability will be challenging. The status quo is the that Standard Library facilities default to non-resilient and stable. P2123 suggests the default for Standard Library facilities should be non-resilient and non-stable; not all present agreed. If a resiliency mechanism is on by default, then developers may end up paying for it when they don't need it. If a resiliency mechanism is not on by default, then developers may fail to use resiliency mechanisms when they should, causing problems for those who need to use their code. Those who need resiliency (the users of an interface) are not necessarily the ones who decide if the interface is resilient. Supporting multiple distinct versions of a facility that can be used within the same TU is an approach that we feel has potential. Interoperability between objects of different versions could be achieved by making the newer versions convertible to and from the older versions. Then, users would only pay the cost of resiliency (conversion) when they need to call code that expects an older version of a facility. New language facilities that make it easier to develop and maintain multiple distinct versions of facilities could make this approach feasible and sustainable enough for use in the Standard Library. Machinery similar to what's in P2123 could be support this technique. |
@brycelelbach please assign to EWG once seen by LEWG. |
P2123R0 interfaces: A Facility to Manage ABI/API Evolution (Hal Finkel, Tom Scogland)
The text was updated successfully, but these errors were encountered: