WG14/N872 J11/99-007 Approved minutes of Co-located ISO/JTC1/SC22/WG14 and NCITS/J11 meetings held October 5-9, 1998, in Santa Cruz, California 95060 USA. ------------------------------------------------------------ Monday October 5th 1. Opening activities 1.1 Opening Comments 1.2 Introduction of Participants Benito, John Perennial WG14, Convener Charney, Reginald B. Charney & Day Observer Farance, Frank Farance, Inc. J11 Fitzpatrick, Liam UK WG14, UK Fukutoui, Hiroshi ADaC WG14, Japan Glassborow, Francis UK WG14, UK Gwyn, Douglas US Army J11 Hoerth, Mark Hewlett-Packard J11 Jaeschke, Rex Self J11, Chair Jones, Derek BSI WG14, UK HOD Jones, Larry SDRC J11, Project Editor Keaton, David Self J11 Keishiro, Tanaka Fujitsu WG14, Japan HOD Kristoffersen, Jan Ramtex WG14, Denmark Kwan, John HP Observer MacDonald, Tom SGI J11 McKale, Alex HP Observer Meyers, Randy Silverhills Systems J11 Nelson, Clark Intel J11 O'Riordan, Martin J. NSAI WG14, Ireland HOD Peterson, Rich Compaq/Digital J11 Plum, Tom Plum Hall J11 Robinson, Tom Perennial J11, alternate Seebach, Peter Self J11 Seymour, Bill Self J11, Rationale Editor Simonsen, Keld Danish Standards WG14, Denmark HOD Smigiel, Trevor HP Observer Thomas, Jim HP J11, alternate Tydeman, Fred Tydeman Consulting J11, Meeting secretary Walls, Douglas Sun J11, USA HOD 1.3 Selection of Meeting Chair Rex Jaeschke was unanimously selected as chair. 1.4 Host Facilities/local information 1.5 Procedures for this Meeting 1.6 Approval of Previous Minutes [N840] Changes: 1.2 List of participants: Change company of A. Leca to Self. Work: n822 -> n829 DR 63 j11 tag: Benito did vote -> yes 11 *AI: Rex Jaeschke: procedures for update of minutes (final minutes) to be made official. *AI: Randy Meyers: will update previous minutes for those that he took. 1.7 Review of Action Items and Resolutions OPEN: Gwyn/Benito: To notify WG15 about changes to assert. Dropped: Gwyn/Seebach: printf/scanf do right thing. Done: Benito: Investigate availability of standards in electronic form. Done: Jaeschke: Respond to Tribble. OPEN: Harris: __func rationale from Mooney. Done: Feather: Provide struct hack rationale. Done: Feather: Provide rationale for mixed declarations and code. OPEN: Meyers: Produce rationale for macro replacement and pragmas. Done: Thomas: Rationale for tgmath. Done: Feather: Provide rationale for vacopy. Done: Gwyn: Rationale to discuss horrible random number generator. Done: Seymour: Update Rationale. Done: Walls: Draft _exit rationale. OPEN: Seebach: Provide strsep() rationale. OPEN: Feather - Rationale for struct tmx. [No longer needed]. OPEN: Jones - Provide strftime() rationale. OPEN: Meyers - %m rationale. Dropped: 2.0: Jaeschke: Coordinate a review process for the rationale. Done: 5.0: Simonsen: Draft response to US comment 5. Done: DR63: Benito: Update DR log. Dropped: 21.4: Kristoffersen will collect industry input regarding struct tmx. Done: 21.4: Leca will discuss the struct tmx issue with Feather. No resolutions from previous meeting. 1.8 Approval of Agenda [N845] 1.9 Distribution of New Documents N836 - Peterson - No Extended Characters in External Identifiers. N840 - Keaton - Draft minutes of Copenhagen meeting. N850 - Seymour - Rationale Editor's report. N851 - Feather - Changes to inttypes.h + stdint.h N852 - Jones - Project Editor's report. N853 - Feather - Conformance issues. N854 - ACE - Digital Signal Processing (DSP) C. N855 - Walls - February 1999 meeting information. N856 - Simonsen - Liaison report on WG15 (POSIX) activities. N857 - Simonsen - Liaison statement from WG14 to WG20. N858 - Walls - Status of approved proposals for C9X, CD1 (Post-Santa Cruz). N859 - Tydeman - Preliminary Minutes for October 1998, Santa Cruz. N860 - Simonsen - Liaison statement to WG15 (POSIX) from WG14. WG20/N536 - Internationalization APIs. 1.10 Information on Next Meeting Beaverton (Portland area), Oregon, USA - Intel hosting. Hotel in walking distance about $65. February 1-5, 1999. 1.11 Identification of National Bodies/J11 voting members j11 - 12 voting members; Intel cannot vote this meeting. Should get 3 more during week. May lose Unisys as voting on 3rd day. Have 17 voting on Monday. Had 17 at end of meeting. International: USA, UK, Denmark, Japan, Ireland 2. Project Editor's Report [N852] (Jones) FCD - PDF and text versions - SC22 N2794 (but no PostScript) N843 - FCD w/ change bars - CD2 Committee draft August 3 3. Rationale Editor's Report [N850] (Seymour) *AI: Benito: Send Rationale to Keld for ftp site *AI: Jan Kristoffersen+Randy Meyers words why no I/O hardware in C9X (pro and con sides). Post to reflector before include into rationale. *AI: Clive Feather - rationale for sequence points. [No longer needed]. 4. CD1/FCD Status/Plenary Report (Benito) January 8, 1999, SC22 ballot closes. February meeting will be like Copenhagen meeting to review all comments. j11 comments will be voted on and forwarded to SC22 better this time. 5. CD1/FCD Status in the U.S. [N849] (Jaeschke) CD1 is closed - no formal objections from those who submitted comments. September 11 - November 10 = j11 public comment period. December 23 is deadline for j11 submission to SC22 by IR. j11 will respond to comments at February meeting. US vote can be (if concerns): no (until addressed), yes (assuming convener will address). N848 - issues from j11 members on CD1 resolutions. 6. Liaison Activities 6.1 J11 + ANSI (C) New members can vote after first meeting (was at start of 2nd meeting). Matters for email votes. 6.2 WG14 + ISO/SC22 (C) C++ need not take on C9X issues. C can evolve on its own. BUT, they should be aware of each other's work. WG21 will now look into Hardware I/O. 6.3 J16/WG21 (C++) No C++ meeting since last C meeting. Is now official standard. Can buy from ANSI for $18 for electronic or $175 for paper copy. *AI: Keld - look into putting C++ on C private ftp site for members use. Still maintain email cross posting between C and C++. 6.4 WG15 (POSIX) N856 - Liaison report on WG15 POSIX from Keld. They want to include C90 verbatium (not by reference). Note: C++ refers to C90 library. *AI: We need to draft letter to request POSIX NOT include it. Done: Is part of WG14 N860. 6.5 WG20 (I18N) Registry of locales. The "C" locale is NOT registered. They are working on API (based greatly upon C's work). Sorting standard being worked on. Extended identifiers being worked on based upon C and C++. Concerns from unicode people. C++ has frozen list, C has opened ended list; SC22 meeting agreed that C meets the needs. 6.6 Other Liaison Activities *AI: Tydeman - post where to get LIA-2. 7. Identify work items for this meeting (Jaeschke/Benito) 8a. long long e.g. 64-bit support. Should it be optional for freestanding? Japan wants optional. UK was against, now viewpoint is accept long long and how help with migration. Vendors can have many different printfs that support, or not, if floating-point and/or long long to get small or large code size. Japan will withdraw NO vote if rationale contains words on how to reduce code size. *AI: Meyers: Write rationale on 64-bit with ideas on how to reduce code size if not used. [The discussions on paper N852 took place over several sessions and days. They are all gathered here in the order they are in N852.] 8b. Translation limits [N852] Two logical scopes for FOR: variables in () and in statement {}. Even if choose wrong now, we might change in the future if someone's ox is gored. FOR counts as one. 8c. Scope of identifiers [N852] Should duplicate labels be a constraint? Agree to make it a constraint. 8d. Real floating types [N852] cast of floats to same type. Footnote 43 appears to cover it: it must be done. But, we are missing how convert from type A to type A. Jones will add words to conversions. 8e. Simple assignment [N852] People use pointers in Boolean context. Make them assignment compatible (much like C++). 8f. Function declarators (including prototypes) [N852] Lookahead in parameter lists when prototypes used and parameter name is same as typedef name. May need lots of lookahead. Suggest: drop back to C90 words and leave undefined. Revert back to C90 words on typedef names are parameter names. [8i.] Use of library functions [N852] Current putc() is bad in most implementations in that either void * fails or int is allowed. Math generic macros take any of several floating-point types. Page 154: remove _Bool from parameter list in synopsis is one possible solution. Need group to look at problem. [Also 18c.] Assign (=), cast, and floating-point classification macros are only times narrowing must happen. Library macros - type checking and/or promotions. Most believe that functions masked by macros must still act like a function w.r.t. type checking and/or promotions. Editor will make public comment. [8j.] ispunct macro [N852] Categories are vague. Suggest revert back to C90. [8k.] localeconv [N852] POSIX has it wrong (table and words do not match). Keld has convinced Larry that new int_* members are needed. *AI: Keld Simonsen will coordinate with POSIX, WG20, Single Unix on localeconv. [8l.] General utilities [N852] EXIT_FAILURE, EXIT_SUCCESS: make constant. OK to change MB_CUR_MAX to size_t. [8m.] strtod, strtof, strtold [N852] Hex float constants to strtod. No one remembers why need '.' or binary-exponent-part must appear. [Also 18f.] Currently, 0x12 is an invalid hex floating-point string to strtod. No objections to allowing this as valid. [8n.] Searching and sorting [N852] Can qsort be passed zero members to sort? Group agrees to allow zero. Say nothing about NULL pointer. This is same as mem* functions. 8g. restrict (Derek Jones) UK wants to distinguish R/O from R/W accesses; so can allow two R/O pointers to point to same thing. Shows up on LINPACK. Tom MacDonald: technical problem: pointer to pointer. Might work with restricted pointers to const data. *AI: UK (Jones) will work on getting words along with SGI (MacDonald+Homer). 8h. struct tmx [This item was discussed several times over several days. They are all gathered here.] Copenhagen meeting: almost ready to rip out back to C90. France voted NO on issue with current C9X. Jones to lead group on how to back out. May want to keep normalization on broken down times. France and US do not want current C9X. struct tmx: When remove, what should be done about normalization of broken down time? There are bugs in the code that has been proposed. So propose backing out both struct tmx and normalization. 8i. More on N852: Use of library functions 8j. More on N852: ispunct macro 8k. More on N852: localeconv 8l. More on N852: General utilities 8m. More on N852: strtod, strtof, strtold 8n. More on N852: Searching and sorting 8o. Forward pointer in standard to Rationale. Web addresses change. Add to forward in C9X. Agree to do. 8p. N848: Three issues with responses. No way to change responses after USA accepted them. Tuesday October 6th Review group for Annex D Sequence points: Thomas, Tydeman, Seymour, and Plum will meet Thursday evening. 9a. enum declarations in FOR (D.Jones) [This topic was discussed several times over several days. All those gathered here.] WHILE is not really equivalent to FOR. enum {a,b}; for(;;i+=sizeof(enum{b,a})) j+=b; not equal to while(){j+=b; i+=sizeof(enum{b,a});} Which b is added to j? Need new words in place of equivalence. [9b] Scope of local compound literal matters in WHILE. If add "extra" braces in WHILE, then compound literal will change from function scope to local block scope. One solution is to add "extra" braces around loop structures to match C++. [12b] C++ has cases where local declarations in IF cannot be same id: if( int i = f() ) int i = g(); General case for both languages is {if(){...}else{...}} Choices: Move FOR rewrite to example + prose; Redo rewrite using IF and GOTO; execution. *SV: IF-GOTO = 2; Execution = 0; words = 13. [16b] Proposal: 5.2.4.1 (page 17) Translation limits: 127 nesting levels of blocks 6.2.1 (page 25) scopes of identifiers: ... the identifier has "block scope," which terminates at the end of the associated block. 6.8 (page 119) statements: A "block" allows a set ... (move 6.8.2 semantics here) 6.8.2 Compound statement: Semantics: Move current to 6.8 and replace it with: A "compound statement" is a block. 6.8.4 Selection statements: (add to semantics) A selection statement and all associated substatements are blocks. 6.8.5 iteration statement: An iteration statement is a block and its loop body is a block. Redo example on page 68. Check Forward references. 6.8.5.3 The FOR statement The following statement FOR ( c1; e2; e3 ) statement behaves as follows: The expression e2 is the controlling expression. If c1 is an expression it is evaluated as a void expression before the first evaluation of e2 controlling expression. The evaluation of the controlling expression takes place before each execution of the loop body. The evaluation of e3 takes place after each execution of the loop body as a void expression. Both c1 and e3 can be omitted. An omitted e2 is replaced by a nonzero constant. Also, strike the current text rewrite of FOR into WHILE. [17e] Has very quiet change involving structs defined with members in different order at outer and inner scopes. Words will be added to rationale. Current C9X words say scope ends at same "point". [19d] For two identifiers with block scope, they have the same scope if and only if they are associated with the same block. For two identifiers that do not have block scope they have the same scope if and only if their scopes terminate at the same point. Note: these words were rejected because they do not clearly state for all cases when a block is nested inside another block. [20g] 6.8.4 selection statement: A selection statement is a block whose scope is a strict subset of its enclosing block. All associated substatements are block whose scopes are strict subsets of the associated selection statement block. Note: These words *do* state when a block is nested inside another block. [22a] Change meaning of block nesting to: 6.8.4 Select statement A selection statement is a block whose scope is a strict subset of its enclosing block. All associated substatements are blocks whose scopes are strict subsets of the associated selection statement block. 6.8.5 Iteration statements An iteration statement is a block whose scope is a strict subset of its enclosing block. The associated loop body is a block whose scope is a strict subset of the associated iteration statement block. *AI: Tom MacDonald: Rationale for this change to FOR (and related). 9b. scoping issues in FOR (MacDonald) 9c. inttypes.h/stdint.h [N851] (Feather) Clive provided words to generalize to non-powers-of-two ints. OK for header to include other header. No objection. Adopted with minor editor changes. 9d. conformance discussion [N853] Have not accepted new items for some time. This is not an issue raised at ballot. Really applies to all languages, so should take place at SC22. Current conformance is OK for implementors, but not for users (strict is too tight, and conforming is too loose). *AI: Seebach craft words for rationale why we did not adopt. *AI: Keld will host email-list about conformance to start with C, C++, Java. 10. [N847] (Feather) subgroup deliberations Break into groups to discuss N847 (Feather 43 issues with CD2). 11. [N847] (Feather) subgroup presentations [These were presented out of order over several days. They have been gathered here in order.] #1 Conformance - pragmas will become implementation defined. #2 No change: footnote was left out on purpose. #3 \s character: withdrawn by Clive - no such single character. #4 Basic versus extended char sets. Have "basic" mean 96 required chars. (appears to align with C++). Final words still in progress. #5 UCHAR_MAX <= INT_MAX: Has been like this for at least 10 years, no need to change. Already known problem with too much existing practice. #6 #else binding: Clive's change would require #extended-directive to be flagged (even if #if'ed out). Grammar is already ambiguous (pp tokens versus directives). Felt no need to fix this. #7 UCNs in #if: More than just phase 5 (for example, turn pp-numbers into numbers) Do not add phase 5. Strike: Phase 5 of translation: "and universal character name" since it is formally an escape sequence. #8 #include: Need new words. #9 VA_COUNT: No new features. #10: __cplusplus: Agree - shall not be defined. So tell C from C++. #11: STDC_HOSTED: Good idea, but compiler cannot always tell if hosted or not. Better for command line. #12: Footnotes 25/29: Disagree: Footnotes 25 and 29 are similar but not interchangeable. Different contexts. #13 union members: Need paragraph that Clive wants to drop to cover: union { short s; int i; double d; } x; x.i = 1; x.s => ???? This would become valid if drop paragraph. Implementations need to document undefined behavior with respect to unions. or perhaps indeterminate. .... still open .... #14: object lifetime: realloc returning "same" object makes lifetime hard to define (is not the same object). Nothing broken. Many people are against this fundamental definition this late. So, no change. #15: Forbidden UCNs: Current wording is OK. No need to change. #16: char string literals: Already clear elsewhere. #17: multiple assignment: Committee intent: Only need to worry between sequence points. Do NOT read after write in serial_port = 66; On the other hand, x = timer = 42; -- does not matter which way implementations make this work because the user can force either behavior by writing the code differently. volatile has so many things that are so system dependent that the committee made it implementation defined. x; does not require access (read) of x. x = x; does require access (read). C90 intent was never read after write. Two viewpoints: Special case assignment expression-statement (serial_port = 66;) and leave other case as currently specified (write, then read) or never read-back. After debate, decided to add these words to rationale: The committee intends that the value of an assignment expression be available without necessarily reading it back out of the left operand. Such an extra read could cause problems for volatile objects (e.g. device registers). The reason for saying that "an assignment expression has the value of the left operand after the assignment" is to make it clear that the value is determined after any changes, such as bit-field narrowing or floating-point conversions, and not to indicate that the left operand must be read after the assignment. #18: Number of arguments: No change needed. *AI: Keaton+Larry to come up with words for why. #19: adjustments to argument types: May need words to allow more qualifiers (but not take away qualifiers). This applies to both no prototypes and varargs. Add these words: Each of the types is either a pointer to void or to a pointer to character type, and the type pointed to by the parameter has all the qualifiers of the type pointed to by the /type/. #20: sizeof bit-fields: Adapted his intent. Change words to ... or to an expression that designates a bit-field member. #21: Pointer compares: Pick up normative text. Strike change to footnote. #22: Bit-fields of unsupported types: No support to do this item. #23: Restrict and string literals ... still open ... #24: inline: Footnote could be misleading, so do not add. #25: inline: Current words are clear enough. #26: VLA side effects: Side effects in VLA are not liked (bad idea), but they are not outlawed; hence is unspecified was the compromise to reach consensus. Difficult to implement in some cases. Not needed in other cases: pointer to VLA[side effects]. sizeof(vla[n++]) is not well liked. *AI: Tom MacDonald: add this to rationale. #27: Ranges of Bit-fields: That is the range that a portable program can depend upon. So, no change. #28 Initialize unsigned char arrays: insufficient utility. Until translation phase 7, string literals have no type (maybe). Want same behavior at runtime during assignment as during compile time initialization. No support for a change. #29: _exit: Most vendors feel that POSIX does not want C to define _exit. Objection is name. *SV: Who wants this with new name: 6; Against: 6 Committee split on adding under any name. Hence, not adopt. #30: maximum malloc alignment: Two choices: numeric constant that is maximum of alignment of all types, e.g. 8, OR a typedef of the most strict alignment type (could be a struct). *SV: Who wants work done: 0; Too late: many. Good idea, but no new features. #31: offsetof macro: a: For unions: No. New feature request, limited utility. b: member-designator: clear enough. footnote suggestion unclear. #32: mbstate_t with stream: Intent is correctly expressed in the draft. New functionality, implementation issues, change current behavior (substantive change) => no. #33: tmpfile(): Accept in principle. Strike: ", including any opened by a previous successful call ..." #34: fread/fwrite: Clear enough as specified. #35: compare fpos_t: No new features. No large need for it. #36: assert macro: setjmp and assert have different requirements on arguments, so appears there is no global fix. Replace _Bool with scalar (similar to isnan()). Adopt Clive's words. #37: stdlib.h macros: EXIT_SUCCESS to constant. Already done via editor's report. MB_CUR_MAX type changed to size_t. Already done via editor's report. Most likely use in expression as argument to malloc, so size_t is best type. #38: type-generic macros. Committee has discussed it in past meetings and decided not to try to add it for C9X. #39: time.h 1. N/A - struct tmx gone. 2. Under consideration by editor. 3. Intent is for that code to go away. 4. N/A - parent text going away. 5. Intent was to be 2 digits, so year 567 would be 05. Came from POSIX, so we should not extend POSIX. Our text is taken from POSIX text, not inclined to change ours. Take up your issue with POSIX. 6. Other ways to do this (save/restore current locale), so no need to make substantive change. Also, this is not open ended. 7. POSIX may have the original error (%Ou versus %OW) that we copied. Current spec is parallel to POSIX. Making it clearer changes semantics. %OW is correct, %Ou is wrong (after looking at POSIX). #40: ispunct(): Add to C9X wording: "In the "C" locale, << words from C90 == the ispunct functions test for any printing char that is neither space(' ') nor a character for which isalnum is true >>" #41, #42 subsumed by the removal of Annex D. #43: Define "access". Suggest move definition of "access" from 6.7.3.1 (the restrict section) to 3.x. Change modify to write. Change fetch to read. Access means either read or write. 12a. [N847] (Feather) subgroup presentations 12b. scoping issues in FOR (MacDonald) 12b. Back to N847. Evening meeting: Extended floating-point types. Wednesday October 7th 13a. c[t]gamma name choice (Thomas) ctgamma versus cgamma: want ctgamma for consistency as a reserved name. 13b. [N847] (Feather) subgroup presentations 13c. strtod rounding issue (Thomas) -0.1 is done as convert(0.1) then negate. strtod matches this. But, this causes directed rounding to be wrong. Round +/-infinity become round away from zero. Best if leave it implementation defined if rounding is done before/after negation. 13d. [N847] (Feather) subgroup deliberations 14a. [N847] (Feather) subgroup deliberations 14b. [N847] (Feather) subgroup presentations 14c. WG15 (POSIX) Liaison [N856] They are asking WG14 questions. See paper. Issue we have with them: Should they copy C Standard into their standard or reference it? We prefer that POSIX just reference. Working on locale description methodology. Problem: Unicode versus 646 char sets for description. C cannot require that wchar_t be 16-bits. POSIX C locale registry: C committee should submit "C" locale to registry (or perhaps jointly with POSIX for "POSIX" locale). 14d. WG20 (I18N APIs) [WG20/N536] Trying to do bindings for C, C++, Ada, Cobol. We believe that it is OK for them to come up with binding to C. May be problems with reenterant (static buffers versus dynamic strings), C's str* namespace, string versus wchar * and const. *AI: Rex Jaeschke will work on issues raised by C committee on I18N API. 15a. What should C++ do with C defect reports they get? For now, informal ad hoc cooperation. They plan on putting DRs on a web site and C/C++ compatibility email list will be notified. 15b. More on struct tmx. 15c. [N847] (Feather) subgroup presentations 16a. Extended characters in extern names [N836] (Peterson) Now footnote 50. Java may use "@" (at-sign) as a means to escape to UCN. Latin-1 meets most of Europe. JIS meets most of Japan. UTF-8 may not be used for some time. We as programmers can live our native char set + @xxxx. What we will get is good enough. 16b. More FOR loop issues (MacDonald) Evening: Addison-Wesley reception with C++ members Thursday October 8th 17a. Floating-point future directions (MacDonald) Bigger than long double? There are two dimensions: Exponent range and precision. No one against the idea. 17b. strtod conversions (Thomas) Remove sentence: "If the subject sequence begins with a minus sign, ..." At the beginning of [4] add "If the subject sequence begins with a minus sign, the subsequent sequence is interpreted as negated. Footnote: 234". Append to footnote 234: It is unspecified whether the implementation converts a minus-signed sequence directly or by negating the converted unsigned sequence (see F.5) The two approaches may yield different results if rounding is toward positive infinity or toward negative infinity. Add to F.5: Append the paragraph: Functions such as strtod that convert character sequences to floating types must honor the rounding direction. Hence if the rounding direction might be upward or downward, the implementation cannot convert a minus-signed sequence by negating the converted unsigned sequence. 17c. atexit issue (MacDonald) [This was discussed several times over several days. They are all gathered here.] For both C++ and C: int fl(){} int f2(){ atexit(f1); } int main(){ atexit(f2); exit(0); } Most believe that this is undefined behavior. *AI: Everyone: See what your implementations do for this code. Matters more to C++ (due to destructors and static data). [20e] C told C++ committee: We believe it is undefined. C++ will let C answer it. [23.3] Revisit exit handlers: should we allow them to register new handlers: No. 17d. [N847] (Feather) subgroup deliberations 17e. FOR loop issues (MacDonald) 18a. WG15 & WG20 Liaison statements (Simonsen) 18aa. N857: Liaison statement from WG14 (C) to WG20 (Internationalization). Words approved, will be in post meeting mailing. Add character attributes be locale dependent. For example a Greek letter (such as pi) might be a letter in the Greek locale, but a special math character in other locales. 18ab. N860: Liaison statement from WG14 (C) to WG15 (POSIX). 18b. VLA/compound literals (MacDonald) Currently allow VLA in compound literal. Believe this was not wanted. Add "but not a VLA" to first constraint in 6.5.2.5 Compound literals. 18c. More on N852: Use of library functions 18d. Japan's preliminary FCD comments 1. Add reference to 'wcscoll' to Annex K.4. 2. Modify description for the conversion specifier (e, f, g): (finite) -> some new term. Already have floating-point meaning just finite (no infinity nor NaN). Remove "(finite)" in printf. 3. Replace zero code with null character in 7.20.8.1 mbstowcs. 4. Modify at 6.4p3: Add UCN to list. 18f. More on N852: strtod, strtof, and strtold 18f. Aliasing. What is effective type of member of struct? Just type of member, just type of struct, or both? If both, then breaks: pf.i++ + pf.j++; Will come back as a public comment. 19a. [N847] (Feather) subgroup deliberations 19b. Floating-point future directions (MacDonald) Future standardization may include additional floating-point types, including those with greater range, precision, or both, than long double. Add to Common Extensions: Additional floating types may be provided. An extension floating type may have more range or precision than long double, may be used for evaluating expressions of other floating types, and may be used to define float_t or double_t. Also, add footnote to section that defines 3 float types to point to these extensions. 19c. realloc rewrite (Meyers) The *realloc* function deallocates the old object pointed to by *ptr* and returns a pointer to a new object that has the size specified by *size*. The contents of the new object shall be the same as the old object before deallocation up to the lesser of the size of the old object and *size*. Any bytes in the new object beyond the size of the old object have indeterminate values. If *ptr* is a null pointer, the *realloc* function behaves like the *malloc* function for the specified size. Otherwise, if *ptr* does not match a pointer earlier returned by the *calloc*, *malloc*, or *realloc* function, or if the space has been deallocated by a call to the *free* or *realloc* function, the behavior is undefined. If memory for the new object cannot be allocated, the old object is not deallocated and its value is unchanged. Returns The *realloc* function returns a pointer to the new object, which may have the same value as *ptr*, or a null pointer if the new object could not be allocated. References: Page 32 6.2.6.1 Representations of Types -- General Page 296 7.20.3.4 The realloc function 7.20.3.4 Wording changed to indeterminate (from unspecified) to match malloc and current realloc. 19d. More on FOR loop. 20a. Infinity/NaN issues (Thomas) math.h: 7.12 p4+5: infinity + NAN macros. Implementation defined was there for when the type was not defined. Now, they are specified as float, so, no need for implementation defined. No objection to remove. 20b. Aliasing issues (Peterson) No new material since emails on reflector. 20c. strtok issues (Seebach) strtok("a","b"); dumps core on at least implementation because it writes a null over the null in the R/O string. Principle: If prototype has no const, implementation is allowed to write to argument. Words will be added to rationale. 20d. More on Clive's 547 issues 20e. More on atexit. 20f. 3.18: undefined behavior: Should one be allowed to access indeterminately valued objects thru unsigned char types? 6.2.6.1p2+3 (which is new with C9X): seems to say that we can. Intent of committee was can access. Come back as public comment. 20g. More on FOR statement 21. Separate WG14 administration and J11/U.S. TAG meetings Karen Higgenbottom chair of NCITS joined meeting and explained some of NCITS. Electronic distribution of C++ is going well. *AI: Rex J. provide email address of NCITS Liaison (Tom Frost) to J11. Public comments section of their web page has documents for public comments. One HTML file of all comments as of the current time. Delegation: 3+1: Walls(HOD)+Jones+Seymour and then Meyers (Portland), MacDonald (London). November 10 public comments (US) ends. November 11 - 25 for J11 letter ballot on our position of FCD (which public comments should go to WG14). December 1 - 15 ballot on comments. December 23 J11 position due to ITI. January 8 ITI votes. February 1-5 ballot resolution meeting (Portland). If time at Portland meeting, J11 resolve issues. *AI: Rex Jaeschke talk to Tom Frost about ballot choices. J11 members must also use official channels (Deborah Donovan, 202-626-5746, ddonovan@itic.nw.dc.us or ddonovan@itic.org). FCD National Body vote will be used as FDIS vote (by default) unless we tell ITI otherwise. Also vote if ISO standard should be used as ANSI standard. Evening meeting: Annex D review. Friday October 9th 22a. More on FOR loop issues (MacDonald) 22b. nextafterx name change (Thomas) Change nextafterx to nexttoward to avoid name conflict if extended floating-point type suffix of x. 22c. Annex D review report (Keaton) Agreed that idea of formal model of sequence points is good. BUT, model has flaws (floating-point flags, volatile), has not been reviewed, examples have many bugs. Suggest: Remove Annex D now. Have group work on rewrite on idea. Once that group comes up with well baked paper (technical report) and get it added later to C2K or to C9X as amendment or to Rationale at any time. Not enough time for through review now for C9X. 11 people for 2 hours subgroup meeting. *AI: Perennial+Keaton: Provide words to Clive on Annex D removal. *AI: MacDonald: Feather #23 response. 22d. Rationale status and schedule Has received some comments (from Tydeman, Thomas). Gwyn will submit some soon. Others plan to submit. Do not know if will have time at February (Portland) to review. Plan on working on Rationale in London. Want to ship it by end of 1999. 23. Administration 23.1 Future Meetings Greater Portland, Oregon. February 1-5, 1999. About $60/night at hotel. Might have another resolution meeting after February if too many comments for February. Meeting after next: 1999: June 21-25 in London, UK. BSI. Same place as summer of 1997. Sometime in October 18-22: Kona, Hawaii. Try to meet along with C++. Not sure meeting is needed (June meeting will tell). Also, consider to have meeting span a weekend, so can get better airfares. *AI: Plum to coordinate with C++. Backup might be St. Louis, Missouri hosted by Seymour. 23.1.1 Future Meeting Schedule 23.1.2 Future Agenda Items Deal with National body comments. Deal with Rationale. 23.1.3 Future Mailings (sponsor for WG14 mailings) Perennial has sponsored International Mailing for over a year. They would like someone else to pay for International Mailing. Postage: $150-200 per mailing. Duplication: $150-200. Keaton will do next two mailings. November 6 Post Santa Cruz deadline for mailing. December 18 Pre Portland deadline for mailing. 23.2 Resolutions None. 23.2.1 Review of Decisions Reached No decisions. 23.2.2 Formal Vote on Resolutions N/A. 23.2.3 Review of Action Items [Look for *AI in this file] 23.2.4 Thanks to Host Thanks to: SGI + Plum/Hall + Perennial Thanks to: Keld Simonsen for local area network and net access. 23.3 Other Business 23.3.a: Revisit VLA and side-effects. 23.3.b: More on atexit. 23.3.c: Digital Signal Processing (DSP) C by W. Wakker, ACE Associated Compiler Experts. Too late for C9X. N854 will be posted. Not like Hardware I/O. 24. Adjournment Meeting adjourned at 10:00 AM. -----------------------------------------------------------