NAG Fortran Compiler Release 7.2 - Release Note - Overview

For full details see the PDF or HTML versions of this release note.

0. Licensing

Customers upgrading from a previous release will need a new licence key.

See KLICENCE.txt for more information about Kusari Licence Management.

1. Compatibility with Earlier Releases

NAG Fortran Release 7.2 is fully compatible with Release 7.1.

NAG Fortran Release 7.2 is compatible with Release 7.0 except for procedures
with procedure pointer arguments that were compiled with the -C=calls option.

NAG Fortran Release 7.2 is compatible with Release 6.2 except for coarrays,
and the -C=calls option when a subroutine has an alternate return.
Any program that uses these features will need to be recompiled.

NAG Fortran Release 7.2 is compatible with Release 6.1 except:
 - use of HPF features (HPF_LIBRARY et al) is not supported;
 - the (previously deprecated) -abi=64 option on Linux x86-64 is unavailable.

Release 7.2 is also compatible with Release 6.0 except for the above
exceptions, and also, files which use allocatable arrays of a parameterised
derived type will need recompilation.

With the exception of HPF support and the deprecated option removal, it is
compatible with Release 5.3.1, 5.3 and 5.2, except that on Windows, modules
or procedures whose names begin with a dollar sign ($) need to be recompiled.

2. Summary of New Features

. Additional Fortran 2018 support
. Draft Fortran 2023 support
. Additional OpenMP support
. Additional error checking
. Other enhancements

3. Additional Fortran 2018 support

. The GENERIC statement concisely declares generic interfaces.
. Minimal exponent width formatting (E0 exponent width specifier).
. Minimal width formatting with E, D, ES and EN edit descriptors.
. The G0.d edit descriptor is permitted for Integer, Logical, and Character.
. New EXw.d and EXw.dEe edit descriptors for hexadecimal significand output.
. On input, floating-point numbers may be provided in hexadecimal form.
. The VALUES argument of DATE_AND_TIME can be any kind of integer except int8.
. The CMDSTAT/EXITSTAT arguments of EXECUTE_COMMAND_LINE can be int16/int64.
. The WAIT argument of EXECUTE_COMMAND_LINE can be any kind of logical.
. ERRMSG arg for GET_COMMAND, GET_COMMAND_ARGUMENT and GET_ENVIRONMENT_VARIABLE.
. The IMAGE_INDEX intrinsic can have a TEAM or TEAM_NUMBER argument.
. The random-number generator is now per-image, not shared.
. The new intrinsic RANDOM_INIT initialises the random number generator.
. The new OUT_OF_RANGE intrinsic can be used to check for conversion errors.
. Additional procedures in IEEE_ARITHMETIC: IEEE_FMA, IEEE_GET_MODES, IEEE_INT,
  IEEE_MAX_NUM, IEEE_MAX_NUM_MAG, IEEE_MIN_NUM, IEEE_MIN_NUM_MAG, IEEE_REAL,
  IEEE_SET_MODES, IEEE_SIGNBIT, IEEE_{QUIET,SIGNALING}_{EQ,NE,LT,LE,GT,GE}.
. Optional ROUND argument for IEEE_RINT.
. Optional RADIX argument for IEEE_GET_ROUNDING_MODE, IEEE_SET_ROUNDING_MODE.
. New (unsupported by hardware) rounding mode IEEE_AWAY.
. New type IEEE_MODES_TYPE.
. Named constant C_PTRDIFF_T in ISO_C_BINDING to interoperate with c_ptrdiff_t.
. In ISO_C_BINDING, C_LOC and C_FUNLOC are pure, and C_F_POINTER is impure.
. The default accessibility for a USEd module can be controlled.
. The IMPLICIT NONE statement can have TYPE and EXTERNAL specifiers.
. The IMPORT statement can appear in BLOCK constructs and nested subprograms.
. Control of host association with IMPORT,NONE; IMPORT,ALL; and IMPORT,ONLY.
. An Integer type-spec is allowed in array constructor and DATA implied DO.
. DO CONCURRENT can have locality specifiers LOCAL, LOCAL_INIT, and SHARED.
. The arithmetic IF statement is reported as a Deleted feature.
. The DO with label is Obsolescent, and non-block DO is a Deleted feature.
. The FORALL construct and statement are reported as Obsolescent features.
. Extension messages are produced for use of non-standard intrinsic modules.

4. Fortran 2023 support

. A line can be up to 10000 characters long.
. The SELECTED_LOGICAL_KIND intrinsic gives the kind for a size of Logical.
. ISO_FORTRAN_ENV has constants LOGICAL8, LOGICAL16, LOGICAL32 and LOGICAL64.
. The AT edit descriptor outputs character data omitting trailing blanks.

5. Additional OpenMP support

. Partial support for OpenMP 4.0/4.5, including SIMD and TARGET constructs.

6. Additional error checking

. A diagnostic is issued if the field width in a format might be too small.
. Use of REC= or POS= with UNIT=* is detected at compile time.
. Call to elemental procedure via an implicit interface is detected.
. The most obvious cases of modifying an active team variable in CHANGE TEAM.

7. Other enhancements

. The default Fortran language level is now Fortran 2018.
. The random-number generator has more entropy in double and quad precision.
. The -gline option can be used with -coarray or -openmp.
. Overlong comments are reported separately from overlong statement text.
. The -xldarg option passes a linker-phase argument in a specific position.
. The -fpplonglines option directs fpp not to break long lines.
. The -w=longlines option suppresses warnings about long source lines.
. The -u=all option specifies all -u= suboptions.
. The -u=external option specifies IMPLICIT NONE (EXTERNAL) everywhere.
. The -u=locality option specifies DEFAULT (NONE) in all DO CONCURRENT.
. The -Warn=double_real_literal option reports default double precision literals.
. The -Warn=unkind_real_literal option reports default real literals.
. The -Error= option specifies treating certain warning messages as errors.
. The -strict95 option has been replaced by the -nonstrict option.
. Additional -target options for Windows and Linux on x86-64.
. The polish option -elcase= controls the case of exponent letters.
. The polish option -canonicalise_floating_literals formats literal constants.
. Polish now indents the body of OpenMP DO constructs.
. Enhanced polish can add parentheses to argumentless subroutines and calls.
. The dependency analyser option -odir specifies where the object files will be.

See RELNOTES.html or RELNOTES.pdf for full details.
