Fortran Wiki
Fortran 2008 status

Compiler Support for the Fortran 2008 Standard

Fortran 2008 features Absoft Cray g95 GNU HP IBM Intel NAG Oracle PathScale PGI
Compiler Version Number 14 8.1.1 4.7/4.8 14.1 14 5.3.1 4 14.1
Submodules N Y ? N N N N N N N N
Coarrays N Y P P (200) N N Y N N N N
Performance enhancements Absoft Cray g95 GNU HP IBM Intel NAG Oracle PathScale PGI
do concurrent N N ? P N N Y N N N N
Contiguous attribute N Y ? Y N Y Y N N N Y
Simply contiguous arrays N Y ? Y N Y Y N N N N
Data Declaration Absoft Cray g95 GNU HP IBM Intel NAG Oracle PathScale PGI
Maximum rank N Y ? N N Y Y N N N N
Long integers Y (100) Y ? Y N Y Y (100) Y Y Y Y
Allocatable components of recursive type N Y ? N N N P N N N N
Implied-shape array N Y ? Y N Y Y N N N N
Pointer initialization N Y ? P N N Y N N N N
Data statement restrictions lifted ? Y ? ? ? N N N ? N N
Kind of a forall index N Y ? N N N Y N N N N
Type statement for intrinsic types ? Y ? Y ? Y N N ? N Y
Declaring type-bound procedures ? Y ? Y ? Y Y Y ? N N
Accessing data objects Absoft Cray g95 GNU HP IBM Intel NAG Oracle PathScale PGI
Omitting an allocatable component in a structure component ? Y ? N ? N Y Y ? N ?
Copying bounds of source array in allocate ? ? ? N ? Y Y N ? N ?
Allocating a polymorphic variable N Y ? P (210) N P (213) Y Y N N ?
Accessing real and imaginary parts N Y ? N N Y N N N N Y
Pointer functions N Y ? N N N N N N N N
Elemental dummy argument restrictions lifted ? Y ? Y ? N N N ? ? Y
Input/Output Absoft Cray g95 GNU HP IBM Intel NAG Oracle PathScale PGI
Finding a unit when opening a file N Y ? Y N Y Y Y N N Y
g0 edit descriptor N Y ? Y N N Y N N N N
Unlimited format item N Y ? Y N N Y N N N N
Recursive input/output N Y ? Y N N Y Y Y Y Y
Execution control Absoft Cray g95 GNU HP IBM Intel NAG Oracle PathScale PGI
The block construct N Y ? Y N Y Y Y N N N
Exit statement N Y ? Y N Y N N N N N
Stop code N Y ? Y N Y Y Y N N N
Intrinsic procedures for bit processsing Absoft Cray g95 GNU HP IBM Intel NAG Oracle PathScale PGI
Bit sequence comparison N Y ? Y N N Y Y N N N
Combined shifting N Y ? Y N N Y Y N N N
Counting bits Y Y ? Y N Y Y Y N P (212) P (214)
Masking bits N Y ? Y N N Y Y N N N
Shifting bits N Y ? Y N N Y Y N N N
Merging bits N Y ? Y N N Y Y N N N
Bit transformational functions N Y ? Y N N Y Y N N N
Intrinsic procedures and modules Absoft Cray g95 GNU HP IBM Intel NAG Oracle PathScale PGI
Storage size N Y ? Y N N Y Y N N N
Taking radix into account when selecting a real kind N Y ? Y N Y Y Y N N N
Extensions to trigonometric hyperbolic intrinsics Y Y ? Y N Y Y Y N N Y
Bessel functions N Y ? Y N N Y N N N N
Error and gamma functions P Y ? Y N Y Y N N P N
Euclidean vector norms N Y ? Y N N Y Y N N N
Parity N Y ? Y N N Y Y Y N N
Execute command line N Y ? Y N Y Y Y N N N
Location of max. or min. value in an array N Y ? N N N N N N N N
Find location in an array ? Y ? N N N N N N N N
String comparison ? Y ? ? ? ? Y Y ? N N
Constants N Y ? P (203) N Y Y Y N N N
Module procedures N Y ? N N Y N N N N N
Programs and procedures Absoft Cray g95 GNU HP IBM Intel NAG Oracle PathScale PGI
Save attribute for module and submodule data ? Y ? Y ? Y Y Y ? N N
Empty contains section Y Y ? Y N Y Y Y N N N
Form of end statement for internal and module procedures ? Y ? Y ? Y N Y ? N Y
Internal procedure as an actual argument N Y ? Y N Y Y N N N N
Null pointer or unallocated allocatable as absent dummy arg. N Y ? Y N Y Y N N N N
Automatic targeting ? Y ? Y ? Y N N ? ? N
Generic resolution by pointer or alloc. attr. - procedure N Y ? N N N N Y N N N
Generic resolution by pointer or alloc. attr. - data obj. N Y ? N N N N Y N N N
Elemental procedures that are not pure N Y ? Y N N N Y N N Y
Entry statement becomes obsolescent N Y ? Y N Y Y Y N N N
Source form Absoft Cray g95 GNU HP IBM Intel NAG Oracle PathScale PGI
Semicolon at line start Y Y ? Y ? Y N Y ? Y Y

Legend: Y = Yes, N = No, P = Partial, U = Unconfirmed

Footnotes: (100) integer(kind=8); (200) Only for a single image; (202) Only MOLD=; (203) int and real, and coarray. (210) gfortran via allocate but not via intrinsic assignment (211) NAG has ALLOCATE(MOLD=), but not polymorphic assignment (212) Pathscale, counting bits, not trailz (213) Waiting for update from IBM (214) leads, popent, and poppar supproted. No trailz.


Changes

Changes November 2014:

  • Intel

    • Block Construct
    • Execute_Command_Line

Changes January 2013:

  • IBM

    • Updated Fortran 2008 support

    • Latest IBM status can always be found here on the Fortran Cafe.

Changes between December 2010 and April 2011:

  • Extended list of Fortran 2008 features.

  • Absoft: first issue with available data.

  • GFortran

    • Full support: Merging bits, Bit transformational functions.
  • Intel

    • Partial support: Allocatable components of recursive type.

    • Full support: Coarrays, DO CONCURRENT, CONTIGUOUS attribute, Simply contiguous arrays, Maximum rank, Implied-shape array, Pointer initialization, Kind of a forall index, Allocating a polymorphic variable, MOLD= in ALLOCATE, NEWUNIT= in OPEN, G0 and G0.d edit descriptor, Unlimited format item, CONTAINS may be empty, Additional intrinsic procedures, Additional items in ISO_FORTRAN_ENV.

  • PGI: first issue with available data.

Changes between August 2010 and December 2010:

  • GFortran

    • Partial support: pointer initialization.

    • Full support: CONTIGUOUS attribute, simply CONTIGUOUS arrays, implied-shape arrays, EXIT statement, bit sequence comparison, combined shifting, counting bits, masking bits, shifting bits, Bessel functions Euclidean vector norms, parity, execute command line, NULL pointer as a missing dummy argument, ELEMENTAL procedures that are not PURE, ENTRY statement becomes obsolescent.

Changes between April 2010 and August 2010:

  • Cray

    • Partial support: error and gamma functions.

    • Full support: coarrays, CONTIGUOUS attribute, simply contiguous arrays, allocating a polymorphic variable, g0 edit descriptor, unlimited format item, BLOCK construct, stop code, bit sequence comparison, masking bits, selecting a real kind, arc tangent function, location of max or min value in an array, find location in an array, constants, and entry statement becomes obsolescent.

    • Errata: “null pointer as a missing dummy argument” changed from Y to N.

  • GFortran

    • Partial support: coarrays, allocating polymorphic variables, and constants.

    • Full support: BLOCK construct, stop code, hyperbolic intrinsic functions, and arc tangent function.

  • HP: first issue with available data.

  • IBM: first issue with available data on Fortran 2008 features.

Changes between August 2009 and April 2010:

  • GFortran added full support for unlimited format items and the error and gamma functions and partial support for the block construct.

  • Sun added full support for parity.

Source

The information in the above table is from “Compiler Support for the Fortran 2003 and 2008 Standards,” a recurring article in the Fortran Forum by Ian D. Chivers and Jane Sleightholme.


See Also