Shifting toward C99

From Mpich
Revision as of 16:55, 26 October 2018 by Zhouh (talk | contribs) (MPICH specific C99 features)

Jump to: navigation, search

Motivating reasons

  • Third party components are shifting to C99.
  • C99 requirement simplifies portability burden.
  • C99 allows declaration of local variables close to where it is being used. It can make the code much more readable.

Potential impact

The main concern of shifting to C99 is that certain platforms with absent or less-complete C99 compiler support will not be able to build MPICH.

Reference compiler quirks page for the status of compiler support.

MPICH specific C99 features

Even as we shifting to C99 requirement, we are not opening the flood gate to allow all C99 features into the codebase. The full support of C99 features may put unnecessary restrictions on compilers. By limiting allowed C99 features, we intend to support as many compilers as we can. In addition, even when certain feature may not be supported by a particular compiler, the limited feature allowance may still provide feasible path for back porting.

The following are a list of feature we are considering to adopt:

We are holding off the adoption of the features that are not listed above. Some of them are listed below: