Closed wg21bot closed 1 year ago
GB-084: Deprecate errc
constants related to UNIX STREAMS
2022-11-08 15:15 to 17:00 UTC-10 Kona Library Evolution Minutes
Champion: Jonathan Wakely (remote)
Chair: Bryce Adelstein Lelbach & Billy Baker
Minute Taker: Mark Zeren
Start: 2022-11-08 15:24 UTC-10
POLL: Send the proposed resolution to GB-084 (Deprecate errc
constants related to UNIX STREAMS) to Library for C++23, to be confirmed by a Library Evolution electronic poll.
Strongly Favor | Weakly Favor | Neutral | Weakly Against | Strongly Against |
---|---|---|---|---|
5 | 10 | 4 | 0 | 1 |
Attendance: 19 (in-person) + 4 (remote)
# of Authors: 1
Author Position: SF
Outcome: Consensus in favor.
SA: I'm worried about the implications for the use of error_condition. I'd like to see a paper exploring this.
End: 15:34
Take a Library Evolution electronic poll to send the proposed resolution to GB-084 (deprecate errc
constants related to UNIX STREAMS) to Library for C++23.
Poll 1.21: Send the proposed resolution to C++23 National Body comment GB-084 Deprecate errc Constants Related To UNIX STREAMS to Library Working Group for C++23, classified as an improvement of an existing feature ([P0592R4] bucket 2 item).
Strongly Favor | Weakly Favor | Neutral | Weakly Against | Strongly Against |
---|---|---|---|---|
11 | 8 | 2 | 0 | 0 |
Outcome: Strong consensus in favor.
@JeffGarland heads up.
https://wiki.edg.com/bin/view/Wg21issaquah2023/LWG3869-202306
poll: approve the resolution for LWG3869 and move to immediate?
F | A | N |
---|---|---|
9 | 0 | 0 |
Accepted.
The error numbers ENODATA, ENOSR, ENOSTR and ETIME are all marked "obsolecent" in POSIX 2017 (the current normative reference for C++) and they are absent in the current POSIX 202x draft. They related to the obsolete STREAMS API, which was optional and not required for conformance to the previous POSIX standard (because popular unix-like systems refused to implement it). C++11 added those error numbers to
<errno.h>
and also defined corresponding errc enumerators: errc::no_message_available, errc::no_stream_resources, errc::not_a_stream and errc::stream_timeout.Given the obsolescent status of those constants in the current normative reference and their absence from the next POSIX standard, WG21 should consider deprecating them now. A deprecation period will allow removing them when C++ is eventually rebased to a new POSIX standard. Otherwise C++ will be left with dangling references to ENODATA, ENOSR, ENOSTR and ETIME that are not defined in the POSIX reference.
After a period of deprecation they can be removed from Annex D, and the names added to [zombie.names] so that implementations can continue to define them if they need to.
Move the four
<errno.h>
error numbers and the corresponding four errc enumerators to Annex D.