Minutes of Colocated ISO/IEC JTC1/SC22/WG14 and NCITS J11 Meetings
1998-06-22 to 1998-06-26
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, Self 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.
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.
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:
126.96.36.199.1 return type of main is int.
188.8.131.52.1 limits.h comments listing powers of two.
6.4 lexical elements place-marker preprocessing tokens.
6.7.8 initialization examples.
184.108.40.206 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:
Benito/Jaeschke, US position.
Subgroup status; subgroups to supply changes for the minutes:
Ja1eschke, US comments from N834.
*A Simonsen will draft a response to US comment 5.
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
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 <stdbool.h>?
*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
The issue is tabled until tomorrow to give people time to review it.
Danish Posix comments, N821:
Accept all up to the 220.127.116.11 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.
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
FP: no issues to bring to cmte.
comment 32: no action supported
comment 40: answer is yes
Strike the unadorned sentence?
No national body objections.
Compound Literals 18.104.22.168 example 8 p. 66.
Tabled until for loop debate.
comment 58: no action supported
Divide into subgroups.
Reconvene; subgroup status:
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
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.
#10: Change accepted.
#11: Change accepted.
#13: Change accepted.
#14: Change not supported.
#15: Change not supported.
#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.
New model presented (need doc from Plum):
*SV WG14 6/0
US: minor issues presented; mostly finished
FP: proposed rewording for DECIMAL_DIG
N824: no objections
multiple occurrences of inline:
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.
1. Explicitly allow #undef.
2. Deprecate non-<stdbool.h> use of bool, true, false.
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
.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
I18N API is in progress and there is a C binding. Input requested
from WG14. There will be a C++ binding too.
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 .
When a function returns an array, that array is not converted to a
pointer. This proposal allows these arrays to be accessed.
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)
Issue tabled until we explore C++ compatibility.
printf/scanf modifiers for inttypes abstract types, Parks, N833 (Meyers)
Several integer types are present in <inttypes.h> but one cannot print
them out in a portable way. Some recommendations are made:
(1) adding some additional modifiers 10/0
(2) in favor of only intmax types 0/lots
(3) no interest
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, N829 (Tydeman), rewrite of N808:
These words also address PC-UK0065.
*A Benito will update DR log.
*SV Unanimously accepted by the committee as written.
Change 22.214.171.124 as recommended.
1st sentence is replaced with words recommended by Gwyn, and add the
sentence "When an lvalue expression is evaluated, it shall designate
Committee directed the editor make editorial changes along the lines
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
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
N835 revisited (formerly N813):
C++ allows f().a 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.
__STDC_ISO_10646__ macro proposed, tabled.
The long long objection is to be revisited.
All other comments have been addressed.
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.
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.
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.
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
3. Add rationale for _Bool.
*FV J11 9/1/1/6/17
*FV WG14 5/0/0/1
Country positions seem incompatible at present.
Disposition of public comments not finished in subgroups:
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-UK0108: No change necessary. These expressions will never be evaluated.
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).
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.14: Drop tmx? Open.
PC-UK0172: Duplicate of 168.
PC-UK0131: Who wants to make this change (success/failure return values)?
*SV WG14 3/0/2
Items for tomorrow:
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:
Motion passed 11/0/0/6/17.
US delegation for October:
Seymour, Jones, Tydeman, Walls
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
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
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##russian-letter2
russian-letter1(2russian-letter2) // --> russian-letter12russianletter2
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.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.
*A Kristoffersen will collect industry input regarding existing practice.
*A Leca will discuss the issue with Feather.
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
*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
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
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
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.