<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
<html>
|
<!-- Copyright (C) 1999-2016 Free Software Foundation, Inc.
|
|
Permission is granted to copy, distribute and/or modify this document
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
any later version published by the Free Software Foundation; with the
|
Invariant Sections being "Funding Free Software", the Front-Cover
|
Texts being (a) (see below), and with the Back-Cover Texts being (b)
|
(see below). A copy of the license is included in the section entitled
|
"GNU Free Documentation License".
|
|
(a) The FSF's Front-Cover Text is:
|
|
A GNU Manual
|
|
(b) The FSF's Back-Cover Text is:
|
|
You have freedom to copy and modify this GNU Manual, like GNU
|
software. Copies published by the Free Software Foundation raise
|
funds for GNU development. -->
|
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
|
<head>
|
<title>The GNU Fortran Compiler: Fortran 2008 status</title>
|
|
<meta name="description" content="The GNU Fortran Compiler: Fortran 2008 status">
|
<meta name="keywords" content="The GNU Fortran Compiler: Fortran 2008 status">
|
<meta name="resource-type" content="document">
|
<meta name="distribution" content="global">
|
<meta name="Generator" content="makeinfo">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<link href="index.html#Top" rel="start" title="Top">
|
<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
|
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
|
<link href="Fortran-2003-and-2008-status.html#Fortran-2003-and-2008-status" rel="up" title="Fortran 2003 and 2008 status">
|
<link href="TS-29113-status.html#TS-29113-status" rel="next" title="TS 29113 status">
|
<link href="Fortran-2003-status.html#Fortran-2003-status" rel="prev" title="Fortran 2003 status">
|
<style type="text/css">
|
<!--
|
a.summary-letter {text-decoration: none}
|
blockquote.smallquotation {font-size: smaller}
|
div.display {margin-left: 3.2em}
|
div.example {margin-left: 3.2em}
|
div.indentedblock {margin-left: 3.2em}
|
div.lisp {margin-left: 3.2em}
|
div.smalldisplay {margin-left: 3.2em}
|
div.smallexample {margin-left: 3.2em}
|
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
|
div.smalllisp {margin-left: 3.2em}
|
kbd {font-style:oblique}
|
pre.display {font-family: inherit}
|
pre.format {font-family: inherit}
|
pre.menu-comment {font-family: serif}
|
pre.menu-preformatted {font-family: serif}
|
pre.smalldisplay {font-family: inherit; font-size: smaller}
|
pre.smallexample {font-size: smaller}
|
pre.smallformat {font-family: inherit; font-size: smaller}
|
pre.smalllisp {font-size: smaller}
|
span.nocodebreak {white-space:nowrap}
|
span.nolinebreak {white-space:nowrap}
|
span.roman {font-family:serif; font-weight:normal}
|
span.sansserif {font-family:sans-serif; font-weight:normal}
|
ul.no-bullet {list-style: none}
|
-->
|
</style>
|
|
|
</head>
|
|
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
|
<a name="Fortran-2008-status"></a>
|
<div class="header">
|
<p>
|
Next: <a href="TS-29113-status.html#TS-29113-status" accesskey="n" rel="next">TS 29113 status</a>, Previous: <a href="Fortran-2003-status.html#Fortran-2003-status" accesskey="p" rel="prev">Fortran 2003 status</a>, Up: <a href="Fortran-2003-and-2008-status.html#Fortran-2003-and-2008-status" accesskey="u" rel="up">Fortran 2003 and 2008 status</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
|
</div>
|
<hr>
|
<a name="Fortran-2008-status-1"></a>
|
<h3 class="section">4.2 Fortran 2008 status</h3>
|
|
<p>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
|
<a href="http://www.nag.co.uk/sc22wg5/links.html">http://www.nag.co.uk/sc22wg5/links.html</a>. 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
|
<a href="http://www.nag.co.uk/sc22wg5/">WG5</a>.
|
</p>
|
<p>The GNU Fortran compiler supports several of the new features of Fortran 2008;
|
the <a href="https://gcc.gnu.org/wiki/Fortran2008Status">wiki</a> has some information
|
about the current Fortran 2008 implementation status. In particular, the
|
following is implemented.
|
</p>
|
<ul>
|
<li> The <samp>-std=f2008</samp> option and support for the file extensions
|
<samp>.f08</samp> and <samp>.F08</samp>.
|
|
</li><li> The <code>OPEN</code> statement now supports the <code>NEWUNIT=</code> option,
|
which returns a unique file unit, thus preventing inadvertent use of the
|
same unit in different parts of the program.
|
|
</li><li> The <code>g0</code> format descriptor and unlimited format items.
|
|
</li><li> The mathematical intrinsics <code>ASINH</code>, <code>ACOSH</code>, <code>ATANH</code>,
|
<code>ERF</code>, <code>ERFC</code>, <code>GAMMA</code>, <code>LOG_GAMMA</code>, <code>BESSEL_J0</code>,
|
<code>BESSEL_J1</code>, <code>BESSEL_JN</code>, <code>BESSEL_Y0</code>, <code>BESSEL_Y1</code>,
|
<code>BESSEL_YN</code>, <code>HYPOT</code>, <code>NORM2</code>, and <code>ERFC_SCALED</code>.
|
|
</li><li> Using complex arguments with <code>TAN</code>, <code>SINH</code>, <code>COSH</code>,
|
<code>TANH</code>, <code>ASIN</code>, <code>ACOS</code>, and <code>ATAN</code> is now possible;
|
<code>ATAN</code>(<var>Y</var>,<var>X</var>) is now an alias for <code>ATAN2</code>(<var>Y</var>,<var>X</var>).
|
|
</li><li> Support of the <code>PARITY</code> intrinsic functions.
|
|
</li><li> The following bit intrinsics: <code>LEADZ</code> and <code>TRAILZ</code> for
|
counting the number of leading and trailing zero bits, <code>POPCNT</code> and
|
<code>POPPAR</code> for counting the number of one bits and returning the parity;
|
<code>BGE</code>, <code>BGT</code>, <code>BLE</code>, and <code>BLT</code> for bitwise comparisons;
|
<code>DSHIFTL</code> and <code>DSHIFTR</code> for combined left and right shifts,
|
<code>MASKL</code> and <code>MASKR</code> for simple left and right justified masks,
|
<code>MERGE_BITS</code> for a bitwise merge using a mask, <code>SHIFTA</code>,
|
<code>SHIFTL</code> and <code>SHIFTR</code> for shift operations, and the
|
transformational bit intrinsics <code>IALL</code>, <code>IANY</code> and <code>IPARITY</code>.
|
|
</li><li> Support of the <code>EXECUTE_COMMAND_LINE</code> intrinsic subroutine.
|
|
</li><li> Support for the <code>STORAGE_SIZE</code> intrinsic inquiry function.
|
|
</li><li> The <code>INT{8,16,32}</code> and <code>REAL{32,64,128}</code> kind type
|
parameters and the array-valued named constants <code>INTEGER_KINDS</code>,
|
<code>LOGICAL_KINDS</code>, <code>REAL_KINDS</code> and <code>CHARACTER_KINDS</code> of
|
the intrinsic module <code>ISO_FORTRAN_ENV</code>.
|
|
</li><li> The module procedures <code>C_SIZEOF</code> of the intrinsic module
|
<code>ISO_C_BINDINGS</code> and <code>COMPILER_VERSION</code> and <code>COMPILER_OPTIONS</code>
|
of <code>ISO_FORTRAN_ENV</code>.
|
|
</li><li> Coarray support for serial programs with <samp>-fcoarray=single</samp> flag
|
and experimental support for multiple images with the <samp>-fcoarray=lib</samp>
|
flag.
|
|
</li><li> Submodules are supported. It should noted that <code>MODULEs</code> do not
|
produce the smod file needed by the descendent <code>SUBMODULEs</code> unless they
|
contain at least one <code>MODULE PROCEDURE</code> interface. The reason for this is
|
that <code>SUBMODULEs</code> are useless without <code>MODULE PROCEDUREs</code>. 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.
|
|
</li><li> The <code>DO CONCURRENT</code> construct is supported.
|
|
</li><li> The <code>BLOCK</code> construct is supported.
|
|
</li><li> The <code>STOP</code> and the new <code>ERROR STOP</code> statements now
|
support all constant expressions. Both show the signals which were signaling
|
at termination.
|
|
</li><li> Support for the <code>CONTIGUOUS</code> attribute.
|
|
</li><li> Support for <code>ALLOCATE</code> with <code>MOLD</code>.
|
|
</li><li> Support for the <code>IMPURE</code> attribute for procedures, which
|
allows for <code>ELEMENTAL</code> procedures without the restrictions of
|
<code>PURE</code>.
|
|
</li><li> Null pointers (including <code>NULL()</code>) and not-allocated variables
|
can be used as actual argument to optional non-pointer, non-allocatable
|
dummy arguments, denoting an absent argument.
|
|
</li><li> Non-pointer variables with <code>TARGET</code> attribute can be used as
|
actual argument to <code>POINTER</code> dummies with <code>INTENT(IN)</code>.
|
|
</li><li> Pointers including procedure pointers and those in a derived
|
type (pointer components) can now be initialized by a target instead
|
of only by <code>NULL</code>.
|
|
</li><li> The <code>EXIT</code> statement (with construct-name) can be now be
|
used to leave not only the <code>DO</code> but also the <code>ASSOCIATE</code>,
|
<code>BLOCK</code>, <code>IF</code>, <code>SELECT CASE</code> and <code>SELECT TYPE</code>
|
constructs.
|
|
</li><li> Internal procedures can now be used as actual argument.
|
|
</li><li> Minor features: obsolesce diagnostics for <code>ENTRY</code> with
|
<samp>-std=f2008</samp>; a line may start with a semicolon; for internal
|
and module procedures <code>END</code> can be used instead of
|
<code>END SUBROUTINE</code> and <code>END FUNCTION</code>; <code>SELECTED_REAL_KIND</code>
|
now also takes a <code>RADIX</code> argument; intrinsic types are supported
|
for <code>TYPE</code>(<var>intrinsic-type-spec</var>); multiple type-bound procedures
|
can be declared in a single <code>PROCEDURE</code> statement; implied-shape
|
arrays are supported for named constants (<code>PARAMETER</code>).
|
</li></ul>
|
|
|
|
<hr>
|
<div class="header">
|
<p>
|
Next: <a href="TS-29113-status.html#TS-29113-status" accesskey="n" rel="next">TS 29113 status</a>, Previous: <a href="Fortran-2003-status.html#Fortran-2003-status" accesskey="p" rel="prev">Fortran 2003 status</a>, Up: <a href="Fortran-2003-and-2008-status.html#Fortran-2003-and-2008-status" accesskey="u" rel="up">Fortran 2003 and 2008 status</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
|
</div>
|
|
|
|
</body>
|
</html>
|