Document Number: AUSTIN/43 Title: c99 Alignment Report Revision Date: 2000-04-18 Source: Andrew Josey, Chair Action: for ReviewDate: Tue Apr 18 20:47:43 BST 2000
The report comprises of this introductory page, and two additional files:
Summary
C99 adds a lot of new interfaces. In addition it defines about a dozen functions not previously defined in the C Standard but included in the Single UNIX Specification. The XSI marking for these needs to be removed.
In the main, C99 defines new functionality not previously defined in any of the standards. There are also a number of [minor] clarifications to existing function definitions. These seem harmless enough, but they will need to be checked carefully to ensure they do not invalidate existing implementations.
Detailed comments are included in the aardvark as editorial notes. The following general points should also be noted:
As well as extending the math functions in <math.h>, C99 adds new math functions/macros in <complex.h>, <fenv.h> and <tgmath.h>.
This is the major source of concern with regards to SUS alignment.
The Single UNIX Specification has always tried to be more explicit about error handling; for example, by defining how input values containing NaN or Inf are handled. A further set of proposed additional XSI error returns may be submitted shortly to address this.
The XSH function prototypes have been made consistent with those defined in C99, including the use of the "restrict" type-qualifer. However, this keyword has not been applied to other, non-C99 interfaces. The working group will need to decide whether or not this needs to be done.
Rationales from C99 have been added to the RATIONALE section of appropriate man pages. These may not be appropriate for release, but it seemed prudent to include them at least for a first review.
These have been added to brand new entrys, but not to changed pages.
Major changes in margin marks have been indicated (esp. use of XSI and CX), but many of these are subtle and there has been no chance to check through Draft 3 as a whole. Hopefully, changes should be apparent from the contents of the change requests, but someone should check through these carefully in the next draft.
A number of C99 headers (e.g., <complex.h> and <fenv.h> describe pragmas as an aid to application portability. We have included a description of these in the appropriate APPLICATION USAGE sections, but the working group may want to consider adding SUS-like feature test macros as well. Also, the working group need to decide if this text would be better positioned in a normative section (e.g., the DESCRIPTION).
It is recommended that c89 be made obsolete and a new c99 utility be introduced. An additional aardvark will be submitted shortly to address these changes in detail.