Fortran-lint
support maps well to compiler capability, non-object-oriented, for Fortran 2003/2008.
New
changes in v7 are in bold.
Changes
in version 7.50 are in bold italic.
Language Additions
·
BLOCK construct
(F08)
·
DO CONCURRENT
(F08)
·
VALUE statement and
attribute
·
VOLATILE statement and
attribute
·
Pointer objects can now
have the INTENT attribute
·
Symbol names up to 63
characters
·
Statements up to 256
lines (16,000 character limit for Flint)
·
Square brackets [ ]
are permitted to delimit array constructors in addition to previous standard / /
·
Binary, Octal, and Hex
(BOZ) constants to intrinsic functions INT,
REAL, DBLE, and CMPLX
Intrinsics
·
ISO_C_BINDING
·
ISO_FORTRAN_ENV
·
IEEE_ARITHMETIC
·
IEEE_EXCEPTIONS
·
IEEE_FEATURES
·
BIND statement and
attribute
·
Language binding can be
specified in FUNCTION, SUBROUTINE, and ENTRY
statements
·
INTRINSIC and
NON-INTRINSIC can be specified for modules in USE statements
·
GET_COMMAND,
GET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT, and GET_ENVIRONMENT_VARIABLE intrinsics
·
F08 EXECUTE_COMMAND_LINE,
COMPILER_OPTIONS and COMPILER_VERSION intrinsics
·
Updated MAXLOC
and MINLOC to the F03 standard
·
Updated WHERE
construct to the F03 standard
·
Character
arrays may now be supplied to
-
MAXLOC, MINLOC
-
MAXVAL, MINVAL
·
KIND= argument may be
supplied to
-
ACHAR, IACHAR, ICHAR
-
LEN, LEN_TRIM
-
MAXLOC, MINLOC
I/O
·
FLUSH statement
·
WAIT statement (with
ASYNCHRONOUS/ASYNCH and DONE extensions from IBM)
·
ASYNCHRONOUS statement
and attribute
·
The following I/O
specifiers have been added or updated to the F03 standard: ACCESS, ASYNCHRONOUS
(along with ASYNCH alias, an IBM extension), BLANK, DECIMAL, DELIM, ENCODING,
ID, IOMSG, PAD, PENDING, POS, RECORDTYPE (DEC, HP, Intel extension) ROUND,
SIGN, SIZE, and STREAM
·
F08 I/O specifier
NEWUNIT
·
Any KIND is permissible
with integer specifiers (SIZE, NEXTREC, etc.)
·
Intrinsic functions
IS_IOSTAT_END, IS_IOSTAT_EOR
·
Comma after a P-edit
descriptor is optional when followed by a repeat
·
NEW_LINE intrinsic
function
·
SELECTED_CHAR_KIND
intrinsic function
·
F08 extension to
SELECTED_REAL_KIND intrinsic function
Other Additions/Improvements
·
A new
statistics option, -A (/ASSESS), provides sorted list of procedure names,
lengths, and cyclomatic complexities v(G), output in
the summary/statistics section
·
Complete MPI
interface definition using stubs for thorough interface analysis and variable tracking
(see section 9.2 for stub information)
·
Complete NetCDF interface definition (F77 format)
·
Force –O+
processing. Example: --w no longer supersedes –O+103
(warning: dead code).
·
Flint now exits
immediately if source is >72 columns but no –e was specified, which
generated a lot of spurious messages
·
Some messages
downgraded to FYIs if analysis performed in local mode (i.e., no –g): #136, 538
·
New xref legend
item, ‘C’ for “assoCiated”
·
A new command line
switch -o "message_format"
to change the format of Flint’s analysis messages, suitable for interfacing to
IDE/ editor such as Visual Studio
Under the Hood
·
New
analyses, for a total of 876
unique messages and 1563
scenarios where these messages can be applied
·
Improved
pointer handling
·
Significant
memory management updates
·
Extensive bug
fixes
·
Various
operational enhancements
User Interface Changes to Note
·
Separator for cross
reference (xref) content selection is now ‘.’ instead of ‘_’; see Section 8.4 of flintman.pdf. Prior versions of Flint retain the old
syntax.