The latest version of the Fortran standard is ISO/IEC 1539-1:2010, informally known as Fortran 2008. The official version is available from International Organization for Standardization (ISO) or its national member organizations. The the final draft (FDIS) can be downloaded free of charge from http://www.nag.co.uk/sc22wg5/links.html. Fortran is developed by the Working Group 5 of Sub-Committee 22 of the Joint Technical Committee 1 of the International Organization for Standardization and the International Electrotechnical Commission (IEC). This group is known as WG5.
The GNU Fortran compiler supports several of the new features of Fortran 2008; the wiki has some information about the current Fortran 2008 implementation status. In particular, the following is implemented.
OPEN
statement now supports the NEWUNIT=
option,
which returns a unique file unit, thus preventing inadvertent use of the
same unit in different parts of the program.
g0
format descriptor and unlimited format items.
ASINH
, ACOSH
, ATANH
,
ERF
, ERFC
, GAMMA
, LOG_GAMMA
, BESSEL_J0
,
BESSEL_J1
, BESSEL_JN
, BESSEL_Y0
, BESSEL_Y1
,
BESSEL_YN
, HYPOT
, NORM2
, and ERFC_SCALED
.
TAN
, SINH
, COSH
,
TANH
, ASIN
, ACOS
, and ATAN
is now possible;
ATAN
(Y,X) is now an alias for ATAN2
(Y,X).
PARITY
intrinsic functions.
LEADZ
and TRAILZ
for
counting the number of leading and trailing zero bits, POPCNT
and
POPPAR
for counting the number of one bits and returning the parity;
BGE
, BGT
, BLE
, and BLT
for bitwise comparisons;
DSHIFTL
and DSHIFTR
for combined left and right shifts,
MASKL
and MASKR
for simple left and right justified masks,
MERGE_BITS
for a bitwise merge using a mask, SHIFTA
,
SHIFTL
and SHIFTR
for shift operations, and the
transformational bit intrinsics IALL
, IANY
and IPARITY
.
EXECUTE_COMMAND_LINE
intrinsic subroutine.
STORAGE_SIZE
intrinsic inquiry function.
INT{8,16,32}
and REAL{32,64,128}
kind type
parameters and the array-valued named constants INTEGER_KINDS
,
LOGICAL_KINDS
, REAL_KINDS
and CHARACTER_KINDS
of
the intrinsic module ISO_FORTRAN_ENV
.
C_SIZEOF
of the intrinsic module
ISO_C_BINDINGS
and COMPILER_VERSION
and COMPILER_OPTIONS
of ISO_FORTRAN_ENV
.
MODULEs
do not
produce the smod file needed by the descendent SUBMODULEs
unless they
contain at least one MODULE PROCEDURE
interface. The reason for this is
that SUBMODULEs
are useless without MODULE PROCEDUREs
. See
http://j3-fortran.org/doc/meeting/207/15-209.txt for a discussion and a draft
interpretation. Adopting this interpretation has the advantage that code that
does not use submodules does not generate smod files.
DO CONCURRENT
construct is supported.
BLOCK
construct is supported.
STOP
and the new ERROR STOP
statements now
support all constant expressions. Both show the signals which were signaling
at termination.
CONTIGUOUS
attribute.
ALLOCATE
with MOLD
.
IMPURE
attribute for procedures, which
allows for ELEMENTAL
procedures without the restrictions of
PURE
.
NULL()
) and not-allocated variables
can be used as actual argument to optional non-pointer, non-allocatable
dummy arguments, denoting an absent argument.
TARGET
attribute can be used as
actual argument to POINTER
dummies with INTENT(IN)
.
NULL
.
EXIT
statement (with construct-name) can be now be
used to leave not only the DO
but also the ASSOCIATE
,
BLOCK
, IF
, SELECT CASE
and SELECT TYPE
constructs.
ENTRY
with
-std=f2008; a line may start with a semicolon; for internal
and module procedures END
can be used instead of
END SUBROUTINE
and END FUNCTION
; SELECTED_REAL_KIND
now also takes a RADIX
argument; intrinsic types are supported
for TYPE
(intrinsic-type-spec); multiple type-bound procedures
can be declared in a single PROCEDURE
statement; implied-shape
arrays are supported for named constants (PARAMETER
).