WG14 N840 / J11 98-039 Minutes of Colocated ISO/IEC JTC1/SC22/WG14 and NCITS J11 Meetings 1998-06-22 to 1998-06-26 Copenhagen, Denmark Monday, 1998-06-22 1. Opening activities 1.1. Opening comments 1.2. List of participants introduced: John Benito, Perennial WG14, Convener Frank Farance, Farance Inc. J11 Erin Harris, IBM J11; WG14, Canada Mark Hoerth, HP J11 Rex Jaeschke, Self J11, Chair Larry Jones, SDRC J11, Project Editor David Keaton, Self J11, Meeting Secretary Jan Kristoffersen, Ramtex WG14, Denmark Antoine Leca, Renault WG14, France Tom MacDonald, SGI J11 Neil Martin, Plum Hall UK WG14, UK John Parks, DEC J11 Thomas Plum, Plum Hall J11 Bill Seymour, Self J11, Rationale Editor Keld Simonsen, DKUUG WG14, Denmark Keishiro Tanaka, Fujitsu WG14, Japan Jim Thomas, HP J11 alternate Douglas Walls, Sun J11 1.3. Jaeschke was unanimously selected as chair. 1.4. Dansk Standard is hosting this meeting. 1.5. Usual procedures to be used. 1.6. Approval of previous minutes. Corrections: Item 1.7 second entry #23 Change WG14 to WG15. 1.7. Action items. *open Gwyn & Benito to notify WG15 about changes to assert. *open Gwyn & Seebach to make sure printf & scanf are done right. *closed Tydeman, Gwyn, Thomas, LIA-1 review. *open Benito to investigate avail. of stds. in electronic form. *closed Benito contacted Ann Wallace. *closed Meyers to draft response to PC-0002. *closed Peterson to look at issue of UCNs in external identifiers. *closed Seebach to send e-mail to MacDonald listing proposed FP requirement. *closed Gwyn to produce inttypes.h wording. *closed Benito to respond to DR63. *closed T/P/T/M/W to review paragraph. *closed Gwyn to discuss with outside sources. *closed Meyers to complete his work on the UCN model. *closed Jaeschke to e-mail Japanese representatives. *closed Meyers to generate rationale wording from PC-0002. *closed Meyers to generate rationale wording for intg conversion rules. *closed Jones to incorporate ISO directive. *closed Thomas, MacDonald to look at prior art. *closed Keaton to draft stdbool.h. *closed Benito to check draft. *open Jaeschke to respond to Tribble. *open Harris to get rationale from Mooney. *closed Meyers to submit paper to fix arrays as lvalues. *closed Jones to provide rationale. *open Feather to provide rationale for struct hack. *closed MacDonald to provide rationale for restrict. *closed MacDonald to provide rationale for inline. *closed MacDonald to provide rationale for VLAs. *open Feather to provide rationale for mixed decls & code. *open Feather to produce rationale wording for vararg macros. *open Meyers to produce rationale for macro replacement & pragmas. *open Thomase tgmath.h rationale. *open Feather to provide va_copy rationale. *open Gwyn to discuss horrible random number generator. *A Bill Seymour to take this on. *open Walls to draft _exit() rationale. *open Seebach to provide rationale for no strsep(). *open Feather rationale for struct tmx. *open Jones to provide rationale fro strftime(). *closed Keaton make something happen wrt. mixed decls & VLAs. *closed Jaeschke to foward to SC22. *closed Typdeman to generate discussion paper. *closed Meyers to draft words for %m and others. *? Meyers to write rationale for %m. 1.8. Approval of agenda. New items to cover: N836 Peterson, no extended characters in external identifiers. N815 Keaton, bool. 1.9. Distribution of new documents. 1.10. Information on next meeting. 1998-10, SGI & Plum-Hall, Silicon Valley, document to describe. Proximity to C++ mtg was a factor. Scheduled to happen again, 1999-10 in Hawaii. Summer, 1999 mtg. possibly in UK. No current hosts for 2000. 1.11. Identification of national bodies/J11 voting members. CA, DK, JP, US today; FR, UK expected tomorrow. 11 J11 voting members present out of 17. 2. Project and rationale editors' reports. Editor's comments: Applied N808; should be backed out & changed to N829. Duplicate function specifiers: what happens? Need discussion of for statement with compound literals. Significant wording changes no previously reported: 5.1.2.2.1 return type of main is int. 5.2.4.2.1 limits.h comments listing powers of two. 6.4 lexical elements place-marker preprocessing tokens. 6.7.8 initialization examples. 6.8.5.3 for statement introduces a new scope (requires discussion). 7.1.1 listed subclause titles instead of functions. 7.5.3 picked up wording from a DR response. Rationale editor's comments: Reorganized the document to match the draft. Incorporated changes from Colorado meeting. Almost finished with clause 6. Seymour & Farance will work on making a Postscript copy available. Rationale should be ready as far as possible in the August/September time frame to make the C9X schedule. *A Jaeschke will coordinate a review process for the rationale. Public review period is expected to begin in September. Much of a slip would make C9X become C2k. February mtg expected to be ballot resolution & FDIS. 3. CD Ballot status & resolution. Ballot results N821: 5 P-members voted approval with no comments (CZ, FI, NL, NO, US). (US voted yes with understanding that forthcoming comments would be addressed.) 1 P-member approved with comment (CA). 4 P-members voted no (DK, FR, JP, UK). 2 P-members abstained (AU, DE). 10 P-members not voting. At FDIS level, abstentions don't count. 75% of P-members should approve and 66% of O-members should approve. Plan to formally answer all of N821 during this meeting. Existing comments from US public will be addressed as well. 4. Identify & prioritize work; assign issues to subgroups. Leaders & groups: Plum, UCNs. Thomas, FP. Benito/Jaeschke, US position. Hoerth, miscellaneous. 5. Status/subgroups. Subgroup status; subgroups to supply changes for the minutes: MacDonald, FP. Hoerth, misc. Plum, UCNs. Much debate. Ja1eschke, US comments from N834. *A Simonsen will draft a response to US comment 5. -- 1998-06-23 Bool, N815: This is the combination of Farance's bool proposal, N738, and Keaton's bit-field proposal, N743. Two important aspects of this proposal are the hiding of the type in a header file and the signedness aspect of the type (unsigned vs. no signedness). Debate over the header file approach dealt with the widely held opinion that introducing basic types through header files is "ugly" vs. the widely held opinion that too much user code would be broken otherwise. Keaton suggested the compromise of adopting the header file approach but deprecating alternate uses of future keywords bool, true, and false. Those present did not express support for this [but did later]. Keaton brought up the signedness issue because Feather (not present) had expressed misgivings about it in the past. No objections were expressed by those present. Keaton indicated that the purpose of the proposed approach was to touch the minimum necessary parts of the standard and to ensure that 1-bit bool bit-fields work. Keaton mentioned that Feather had also had misgivings about the use of 0 and 1 as the underlying values of the macros false and true respectively. No objections were expressed by those present. Much debate ensued over header files vs. first-class types. Who can support ? *SV J11 10/0 *SV WG14 4/1 (dissent was JP and was personal opinion, not national posn.) Bill Seymour pointed out that this paper addresses both of the UK comments concerning bool. The issue is tabled until tomorrow to give people time to review it. Danish Posix comments, N821: Accept all up to the 7.5.2.1 table 7.5.2.1 table: Norway, p_sep_by_space --> 1; n_sep_by_space --> 1 whole row int_p_sep_by_space --> 1 whole row int_n_sep_by_space --> 1 Defer the localeconv [pn]_sep_by_space English text. strftime: The committee had previously voted against adding the 8 new formats. No objections were raised this time. There was debate regarding the E&O specifiers since they require underlying structure members that some vendors do not have. Support E&O specifiers? *SV J11 8/2/1 *SV WG14 5/1/0 Subgroup reports: FP: no issues to bring to cmte. misc: same UCNs: same US: comment 32: no action supported comment 40: answer is yes comment 41: Strike the unadorned sentence? *SV 10/2 No national body objections. comment 44: Compound Literals 6.5.2.5 example 8 p. 66. Tabled until for loop debate. comment 58: no action supported Divide into subgroups. Reconvene; subgroup status: UK: General comment 3, semantics of restrict. MacDonald stated that the proposed change was in the original restrict wording but was rejected by the committee since it added new meaning to the const qualifier. Even changing const semantics would only go part of the way; fully addressing this issue requires serious invention. GC4, remove long long. General support for explaining the reasons for long long. No support expressed for removing it. Laundry list PC-UK0003 (#3): Tabled. #5: Add clarifying words other than those proposed. #7: Tabled. #10: Change accepted. #11: Change accepted. #13: Change accepted. #14: Change not supported. #15: Change not supported. #17: Tabled. #31: Change not supported. #37: Idea of change accepted. #40: Change not supported. #61: Fix by using _Bool. #62: Change accepted. #71: Change not supported. #73: Idea of change accepted. #84: UCN subgroup answered: 31 bytes. #86: Change accepted. #88: Tabled; to be first tomorrow. Organization for tomorrow: Subgroups first thing in the morning. -- 1998-06-24 Subgroups met. Subgroup reports: UCNs: New model presented (need doc from Plum): *SV 14/0 *SV WG14 6/0 US: minor issues presented; mostly finished FP: proposed rewording for DECIMAL_DIG Inlining, MacDonald: N824: no objections multiple occurrences of inline: *SV: Who believes we should leave it undefined? 0 Who believes it should be a constraint? 0 Who believes it should behave like one? lots Undefined Behavior, MacDonald N825: *SV No objection to striking clause 4, paragraph 4. Bool, Keaton: Modifications: 1. Explicitly allow #undef. 2. Deprecate non- use of bool, true, false. *SV: Who can live with proposal as-is plus (1) & (2)? 11 Who can live with this proposal but with typedef/enum underneath in the implementor's name space? 13 Who cannot live with either one? 1 Subgroups. -- 1998-06-25 Liaison Activities: .1 J11+ANSI (C) No new information. Circulated that ANSI moving toward electronic distribution & sale of docs. .2 WG14+ISO/SC22 (C) Plenary mtg in Aug. in Copenhagen (actually Helsingor). Circulate report when Benito returns. .3 J16/WG21 (C++) Plum believes that there is a concern that WG21 is charged with tracking C9X and SC22 should not prevent divergence of C++ and C languages. WG21 asking SC22 secretariat to not require that the languages track each other. WG14 will ask for the same thing. WG14's charter does not include tracking. C++ FDIS closed June 23rd and, so far, no negative comments. .4 WG15 (Posix) Posix has no convener presently. Trying to work with Open Group and want to have colocated mtgs. .5 WG20 (I18N) Completed 2 TRs. Completed 2 FCD ballots; one specified a C binding. I18N API is in progress and there is a C binding. Input requested from WG14. There will be a C++ binding too. .6 WG11 Language independent specifications draft ballot. Ballot ending next week. Rvalue arrays, Parks, N835 (Randy Meyers), formerly N813: Some arrays are useless, e.g. f().a[0] . When a function returns an array, that array is not converted to a pointer. This proposal allows these arrays to be accessed. Wording improvements: Change "If an attempt is made to modify the result of a function call, the behavior is undefined" to "Modifying the result of a function call results in undefined behavior." Issue: Can you take the address of it? pointer = &(f().a[0]) Issue tabled until we explore C++ compatibility. printf/scanf modifiers for inttypes abstract types, Parks, N833 (Meyers) Several integer types are present in but one cannot print them out in a portable way. Some recommendations are made: *SV (1) adding some additional modifiers 10/0 (2) in favor of only intmax types 0/lots (3) no interest (4) yes There is committee interest in adding %n capability for intmax_t, size_t, and ptrdiff_t. The proposal will be amended. *SV N833 is unanimously accepted without opposition as amended. Formal model of sequence points, N822: Committee agreed to add N822 as an informative annex. DR63 & DR56 Floating-point accuracy, N822 (Tydeman), rewrite of N808: These words also address PC-UK0065. *A Benito will update DR log. *SV Unanimously accepted by the committee as written. N823: Part 1: Change 6.3.2.1 as recommended. 1st sentence is replaced with words recommended by Gwyn, and add the sentence "When an lvalue expression is evaluated, it shall designate an object." Part 2: Committee directed the editor make editorial changes along the lines recommended. Splitting Annex G, N820 (Feather), PC-UK0069: Proposal recommends splitting Annex G into two parts, the IEEE arithmetic part and the imaginary part. Both would be normative. Committee unanimously reaffirmed that Annex G should remain informative. Issue with splitting: Once the I macro has imaginary type it is easy to create complex values with an imaginary part having infinity value. Without the imaginary type a CMPLX macro to create these values is needed. This is believed to be a technical problem. Committee unanimously agreed that Annex G should not be split into two parts. N835 revisited (formerly N813): C++ allows f().a[0] but has the concept of "rvalue" which is not modifiable. The lifetime of temporary objects in C++ lasts until the next sequence point. N813 appears to be compatible with this. *SV Committee unanimously accepted N835 as modified. VLAs & mixed code/decls, MacDonald, N821/N814/PC-UK0077: This proposal attempts to correct problems when mixing code and declarations with VLAs. It's now possible to jump past a VLA declaration and still remain within the same block. This affects storage duration, switch, goto, and longjmp. *SV No objections to adopting PC-UK0077 with corrections to example 2. Danish comments, IOHW: Country positions remained unchanged. Denmark wants IOHW in C9X and no other countries do. Other countries are interested in seeing a group of experts pursue the work for possible adoption in other standards or a future C, but not C9X. Public comment dispositions: CA: All comments have been addressed. DK: All comments have been addressed. IOHW stands as a point of disagreement. NO: All comments have been addressed. FR: __STDC_ISO_10646__ macro proposed, tabled. The long long objection is to be revisited. All other comments have been addressed. CH: CH 7, PC-UK0028, & PC-UK0084 deal with the same editorial issue & will be fixed by the editor. Two comments are being dealt with by the FP group. All other comments have been addressed. JP: Dropping atoll: Prior documented committee rationale was that it is a simpler interface that can be used when the input value is known to be valid. MacDonald objected to dropping atoll on the grounds that it can be implemented much more efficiently than strtoll. Keaton expects that if atoll is dropped, it will be widely implemented and cause large amounts of nonstandard code. Use of null considered editorial; will be implemented by editor. All other comments have been addressed. Long long: JP wants to make it optional; FR & UK want it removed. JP opposes the requirement for a 64-bit type because it is a burden on embedded systems. FR opposes the spelling of long long and wants to use a stdint.h type instead (either intleast64_t or intmax_t). Much debate ensued. Bool: Moved Keaton/Seymour: Adopt N815 plus 3 changes. 1. Explicitly allow #undef of bool, true, false. 2. Deprecate nonstd. use of bool, true, false in future lang. directions. 3. Add rationale for _Bool. *FV J11 9/1/1/6/17 *FV WG14 5/0/0/1 long long: Country positions seem incompatible at present. Disposition of public comments not finished in subgroups: UK: PC-UK0003 (previously discussed & tabled): Walls will lead a subgroup to evaluate this. PC-UK0007: Plum will lead a subgroup. PC-UK0009: Hoerth will lead a subgroup. PC-UK0017 (previously discussed & tabled): John (DEC) will lead a subgroup. PC-UK0021: Closed (addressed by editor). PC-UK0041: Closed (addressed by editor). PC-UK0044: Closed (addressed by editor). PC-UK0051: Closed (addressed by N815 as amended). PC-UK0073: Closed (addressed by editor). PC-UK0082: Accepted as editorial. PC-UK0088: Rejected due to insufficient utility. PC-UK0089: Draft is as intended. PC-UK0092: Insufficient utility. PC-UK0096: Accepted. PC-UK0108: No change necessary. These expressions will never be evaluated. PC-UK0115: Editorial. PC-UK0116: Clear enough. PC-UK0118: Equivalent to main issue 3, restrict; closed. PC-UK0121: Insufficient utility, and might invalidate some useful implementations (e.g. certain DSPs). PC-UK0122: Careful reading. PC-UK0170: Closed (addressed by subgroup). UKmain5: Closed. US1.2: Meyers N832 addresses this. N832 is unanimously adopted. PC-UK0007: Reply no. US5.1: Add to std that where isctrl(c) == 0, isprint(c) != 0. PC-UK0017: Words suggested by subgroup to implement change. US7.12: Clear enough. FR 10646 macro: Proposed accept macro with 10646 date as value. FR issues now closed out except for long long. US10.13: Accepted. US10.14: Drop tmx? Open. PC-UK0167: No. PC-UK0168: Editorial. PC-UK0171: No. PC-UK0172: Duplicate of 168. PC-UK0131: Who wants to make this change (success/failure return values)? *SV 8/0 *SV WG14 3/0/2 Items for tomorrow: PC-UK0038 long long X/Open FP compatibility N826 NaN handling from IEC 559 -- J11 TAG meeting Quorum was called. 10 members present, constituting a quorum. *FV Jaeschke/Benito: Move we withdraw CIB#1:1993. Roll call vote: Harris Yes Hoerth Yes Jaeschke Yes Jones Yes Keaton Yes MacDonald Yes Parks Yes Plum Yes Seymour Yes Walls Yes Motion passed 10/0/0/7/17. US delegation for October: Seymour, Jones, Tydeman, Walls -- 1998-06-26 Single Unix issues, Thomas, N826 item 4 Single Unix requires hypotg(inf, NaN) to return a NaN. C9X requires it to return infinity. Recommend X/Open change their specification to make this implementation defined. Single Unix requires pow(+0.0, -2) to return -HUGE_VAL and C9X requires it to return HUGE_VAL. Recommend X/Open allow this to be implementation defined. Single Unix defines gamma to be equivalent to lgamma. C9X will change the name to tgamma for "true gamma." nan function, Thomas, N817 (Tydeman) Proposal requests that the nan function change to be defined in terms of the strtod function all the time. More investigation is needed. Ongoing discussion will continue outside the meeting. The editor will remove this change from the draft. Creating Complex Numbers, Thomas, N818 (Tydeman) This paper is withdrawn since it was dependent on a standalone imaginary type. definition of NaN support in terms of IEC-559, Thomas, N819 (Tydeman) There was no support for additional restrictions to the definition of NaNs. Additional rationale will explain what is meant by an implementation supporting quiet NaNs. PC-UK0038, UCN issue involving pp-numbers: #define a(x) a##x a(2e) // --> a2e #define () russian-letter1##russian-letter2 russian-letter1(2russian-letter2) // --> russian-letter12russianletter2 Adopted unanimously. 21. Administration 21.1. Future Meetings 21.1.1. Future Meeting Schedule 1998-10 05-09, Santa Cruz, California, US (SGI & Plum Hall), cotimed with C++. 1999-02 01-05, Portland, Oregon, US (Intel). 1999-06 to be determined (possibly UK). Keaton requested avoiding conflict with SIGPLAN PLDI, June 21-26. [Since the WG14 meeting, SIGPLAN PLDI has been moved to May 1-5.] 1999-10 Hawaii, US (Plum Hall) cotimed with C++. 21.1.2. Future Agenda Items E-mail to Jaeschke. Items are limited to closing out the draft. Target for getting the FCD to ISO is 1st of August. ISO can put it out for public comment within one week. ITI has a 2-3 week lead time. Comment periods should close by early January for processing at the February meeting. 21.1.3. Future Mailings post-Copenhagen 24 July pre-Santa Cruz 7 September post-Santa Cruz 6 November 21.2. Resolutions 21.2.1. Review of Decisions Reached Some 400 issues were addressed; they will be dealt with editorially rather than have formal votes for each one. 21.2.2. Formal Vote on Resolutions Walls/Keaton: Move we ask SC22 not to require C++ to track us. *FV J11: 11/0/0/6/17 *FV WG14: 4/0/0/2 Walls/Keaton: Move we submit the FCD in August. *FV J11: 10/0/1/6/17 *FV WG14: 4/0/0/2 21.2.3. Review of Action Items Subgroup responses will be handled through the editorial process rather than including them in the minutes. 21.2.4. Thanks to Host 21.3. Other Business Rationale review group to be detailed & scheduled later by Jaeschke. Gathering of public comments: John Benito is the focal point. Public comment due date is Tuesday, 1998-07-21. Tentative editorial review meeting in Santa Cruz, 1st week of August. 21.4. Return to some previously tabled items. struct tmx: *A Kristoffersen will collect industry input regarding existing practice. *A Leca will discuss the issue with Feather. long long: Plum proposed that the minimum precision be lowered to 32 bits for a freestanding environment. Japan indicated that this would remove their objection to the type. Farance objected to different limits. He prefers that long long either exist in full or not exist at all for freestanding environments. *SV J11 Who can live with long long being dropped? 6/4/2 There was general agreement that an at-least 64-bit integer type is a sematic requirement for hosted implementations, but not for freestanding implementations. MacDonald stated that vendors will have to continue to implement long long because it is an industry standard even though it is not part of ISO C. Keaton expressed concern for the future of C if long long is removed; if the committee cannot codify existing practice, then the standard will become meaningless and vendors will each go their own way. Who can live with long being the longest integer type? *SV J11 0/11 *SV WG14 0/4/1 Plum suggests we indicate in the draft that committee sentiment is to require a 64-bit integer type for hosted implementations only. Simonsen suggests we resolve this issue between now and the August editorial review meeting. Adjourned.