GNU Fortran supports several Fortran 2003 features; an incomplete list can be found below. See also the wiki page about Fortran 2003.
PASS attribute.
PASS, PROCEDURE and GENERIC, and
operators bound to a type.
CLASS”) for derived types – including
SAME_TYPE_AS, EXTENDS_TYPE_OF and SELECT TYPE for
scalars and arrays, including unlimited polymorphism.
ASSOCIATE construct.
ALLOCATE statement, allowing for a
type-specification with type parameter and for allocation and initialization
from a SOURCE= expression; ALLOCATE and DEALLOCATE
optionally return an error message string via ERRMSG=.
MOVE_ALLOC.
PRIVATE and PUBLIC attributes may be given individually
to derived-type components.
INTENT may be specified which affect the
association status not the value of the pointer target.
command_argument_count, get_command,
get_command_argument, and get_environment_variable.
SELECTED_CHAR_KIND and NEW_LINE intrinsic functions.
INT, REAL, CMPLX and DBLE.
[...] rather
than (/.../). Type-specification for array constructors like
(/ some-type :: ... /).
FLUSH statement.
IOMSG= specifier for I/O statements.
ENUM and ENUMERATOR statements. Interoperability with
gcc is guaranteed also for the case where the
-fshort-enums command line option is given.
OPEN statement supports the ACCESS='STREAM' specifier,
allowing I/O without any record structure.
PROTECTED statement and attribute.
VALUE statement and attribute.
VOLATILE statement and attribute.
IMPORT statement, allowing to import
host-associated derived types.
ISO_FORTRAN_ENVIRONMENT is supported,
which contains parameters of the I/O units, storage sizes. Additionally,
procedures for C interoperability are available in the ISO_C_BINDING
module.
USE statement with INTRINSIC and NON_INTRINSIC
attribute; supported intrinsic modules: ISO_FORTRAN_ENV,
ISO_C_BINDING, OMP_LIB and OMP_LIB_KINDS.
USE statement.