Differences between revisions 87 and 88
Revision 87 as of 2014-05-12 20:20:12
Size: 10045
Editor: TobiasBurnus
Comment: Change HTTP to HTTPS
Revision 88 as of 2014-07-26 17:40:05
Size: 9816
Editor: FxCoudert
Comment:
Deletions are marked like this. Additions are marked like this.
Line 130: Line 130:
 * The new intrinsic subroutines ATOMIC_DEFINE and ATOMIC_REF define and reference a variable atomically.
Line 138: Line 136:
 * A RADIX= argument has been added to the function IEEE_SELECTED_REAL_KIND in the intrinsic module IEEE_ARITHMETIC.

Chart of Fortran 2008 Features supported by GNU Fortran

When the question which Fortran 2003 features are implemented in which compiler, came up in comp.lang.fortran, the idea was born to create a chart of the features supported by the different compilers. The result was a list in Fortran Forum (see Fortran2003Status). With Fortran 2008 on the horizon, the list is being updated for Fortran 2008.

The listed items follow the sections in the following writeup:

The Fortran Forum articles:

A freely available version of the article can be found at:

Implemented 2008 feature in GNU Fortran compiler

Submodules

No, PR52846

Coarrays

Partial (since 4.6, April 2010: incomplete, for one image only)

Performance enhancements

do concurrent

Partial (since 4.7, 2011-09-08) (type-spec support (and concurrency) missing; PR44735)

Contiguous attribute

Yes (since 4.6, 2010-06-21), note: the is_contiguous intrinsic is still missing, PR45424

Simply contiguous arrays

Yes (rather a new concept/definition than a new feature thus 'yes'. gfortran uses since many versions similar checks to avoid copy-in/out; it is also used internally for constraint checking such as for CONTIGUOUS)

Data enhancements

Maximum rank

No, PR36825, cf. array descriptor update

Long integers

Yes

Allocatable components

No, PR45516

Implied-shape array

Yes (since 4.6, 2010-08-13)

Pointer initialization

Yes (since 4.6, 2011-02-08, PR45290)

Kind of a forall index

No (cf. PR44735)

Allocating a polymorphic variable

Partial (since 4.6, 2010-06-15), PR43366

Accessing data objects

Accessing real and imaginary parts

No, PR40196

Pointer functions as lvalue

Partial (since 4.6, 2010-10-21), PR40054

Input/Output

Finding a unit when opening a file

Yes (since 4.5, 2009-06-08)

g0 edit descriptor

Yes (since 4.4)

Unlimited format item

Yes (since 4.5, 2009-08-17)

Recursive input/output

Yes

Execution control

The block construct

Yes (since 4.5, 2009-09-29), but as experimental with some details missing

Exit statement

Yes (since 4.6, 2010-09-03)

Stop code

Yes (since 4.6, 2010-06)

Intrinsic procedures for bit processsing

Bit sequence comparison

Yes (since 4.6, 2010-09-08)

Combined shifting

Yes (since 4.6, 2010-09-08)

Counting bits

Yes (since 4.6, 2010-08-31; leadz/tailz since GCC 4.4)

Masking bits

Yes (since 4.6, 2010-09-08)

Shifting bits

Yes (since 4.6, 2010-09-08)

Merging bits

Yes (since 4.6, 2010-09-08)

Bit transformational functions

Yes (since 4.6, 2010-09-06)

Intrinsic procedures and modules

Storage size

Yes (since 4.6, 2010-07-08)

Selecting a real kind

Yes (since 4.6, 2010-06-25)

Hyperbolic intrinsic functions

Yes (since 4.5)

Bessel functions

Yes (since 4.6, 2010-08-21, the elemental functions since GCC 4.4)

Arc tangent function

Yes (since 4.5)

Error and gamma functions

Yes (since 4.5, 2009-05-16 including ERFC_SCALED in initialization expressions)

Euclidean vector norm

Yes (since 4.6, 2010-08-27)

Parity

Yes (since 4.6, 2010-08-27)

Execute command line

Yes (since 4.6, 2010-09-01)

Location of maximum or minimum value in an array

No (PR54613)

Find location in an array

No (PR54613)

Constants

Yes (since 4.7, 2011-06-16)

Module procedures

Yes (since 4.6, 2010-09-27)

Programs and procedures

Empty contains section

Yes

Internal procedure as an actual argument

Yes (since 4.6, 2010-09-03)

Generic resolution by pointer or allocatable attribute

Yes (since 4.8, 2012-10-06, PR45521)

Null pointer as a missing dummy argument

Yes (since 4.6, 2010-08-15)

Elemental procedures that are not pure

Yes (since 4.6, 2010-08-15)

Entry statement becomes obsolescent

Yes (since 4.6, 2010-06-25)

Unimplemented features -- based on the list in the "Introduction" of the F2008 standard

There is a large overlap with the No items in the table above.

  • Module enhancements: Submodules provide additional structuring facilities for modules.
  • Parallel execution: Coarrays
  • The DO CONCURRENT construct provides a means for the program to specify that individual loop iterations have no interdependencies.
  • The maximum rank has been increased to 15.
  • An allocatable component can be of recursive type.
  • Subscripts and nested implied-do limits inside a data-implied-do can be any constant expression instead of being limited to combinations of constants, implied-do variables, and intrinsic operations.
  • A FORALL index variable can have its type and kind explicitly declared within the construct.
  • A structure constructor can omit the value for an allocatable component.
  • SOURCE= in an ALLOCATE statement can give an array variable the bounds as well as the value of an expression.
  • The real and imaginary parts of a complex entity can be accessed independently with a component-like syntax.
  • Intrinsic assignment to an allocatable polymorphic variable is allowed.
  • A pointer function reference can denote a variable in any variable definition context.
  • Some restrictions on the use of dummy arguments in elemental subprograms have been removed.
  • The new intrinsic function FINDLOC searches an array for a value.
  • The intrinsic functions LGE, LGT, LLE, and LLT can have arguments of ASCII kind.
  • A BACK= argument has been added to the intrinsic functions MAXLOC and MINLOC.
  • ALLOCATABLE and POINTER attributes are used in generic resolution.
  • Procedureness of a dummy argument is used in generic resolution.

None: Fortran2008Status (last edited 2014-07-26 17:40:05 by FxCoudert)