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 features in the GNU Fortran compiler

Submodules

Yes (since 6.0, 2015-08-05)

Coarrays

Yes
since 4.6: single-image support
since 5.1: multi-image support using OpenCoarrays (including the F2015 collective subroutines)

allocatable or pointer components
of derived type coarrays

Yes (since 7.3) PR78983

Performance enhancements

do concurrent

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

Contiguous attribute

Yes (since 4.6, 2010-06-21), the is_contiguous intrinsic has been implemented on 2019-01-07

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 declaration

Maximum rank + corank <= 15

Yes (since 8.0, 2018-01-25)

Long integers (18 digits or 64 bits)

Yes

Allocatable components of recursive type

Yes (since 7.0, 2016-10-25)

Implied-shape array

Yes (since 4.6, 2010-08-13)

Pointer initialization

Yes (since 4.6, 2011-02-08)

Data statement restrictions lifted

Yes

Kind of a forall index

No, PR78219

Type statement for intrinsic types TYPE
(intrinsic type) specifier

Yes

Declaring type-bound procedures

Yes

Value attribute is permitted for any nonallocatable
nonpointer noncoarray

Partial – arrays not supported PR102369

In pure procedure intent of an argument with
VALUE attribute not needed

Yes

Allocating a polymorphic variable

Yes (partial since 4.6, full since 7.0)

Data usage

Omitting an allocatable component in a structure constructor

???

Multiple allocations with source

???

Copying the properties of an object in an allocate statement

???

Polymorphic assignment

???

Accessing real and imaginary parts

Yes (since 9.0, 2018-11-01)

Pointer function reference is a variable

Yes (partial since 4.6, full since 6.0)

Elemental dummy arguments restrictions lifted

Yes PR49802

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)

ERROR STOP

Yes

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)

Optional argument radix added to selected real kind

Yes

Extensions to trigonometric and hyperbolic intrinsic functions

Yes

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)

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)

BACK argument to MINLOC and MAXLOC

Yes (since 9.0, 2018-05-08)

Find location in an array

Yes (since 9.0, 2018-10-28)

String comparison

Yes

Constants

Yes (since 4.7, 2011-06-16)

COMPILER_VERSION

Yes

COMPILER_OPTIONS

Yes

Function for C sizeof

Yes

Added optional argument for ieee_selected_real_kind

Yes

Programs and procedures

Save attribute for module and submodule data

Yes

Empty contains section

Yes

Form of the end statement for an internal or
module procedure

Yes

Internal procedure as an actual argument

Yes (since 4.6, 2010-09-03)

Generic resolution by pointer or allocatable attribute

Yes (partial since 4.8, full since 9.0)

Null pointer or unallocated allocatable 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)

Source form

Semicolon at line start

Yes

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.

None: Fortran2008Status (last edited 2023-10-17 07:16:34 by TobiasBurnus)