123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <!-- Copyright (C) 1999-2017 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>
|