Doctor Fortran in "One Door Closes"

In previous posts (here, here and here), I've written about the content of and process of creating the next revision of the Fortran standard, Fortran 2015. At the August 2015 joint WG5/J3 meeting in London, England, we finally shut the door on adding still more new features to F2015, though a few snuck in during the meeting. First I'll bring you up to date on what's planned for the new standard, including the latest additions, and then talk a bit about what comes next.

To recap, Fortran 2015's major charter is to include two large sets of features described in "Technical Specification" documents. One of these, TS29113 (Further Interoperability with C), was approved in 2012 and its features have appeared, to varying degrees of completeness, in compilers available today. Intel Fortran 16 supports all of TS29113. The second feature set is TS18508, "Additional Parallel Features in Fortran", that extends coarrays. (I wrote in more detail about both of those in The Future of Fortran so I won't repeat it now.) Unlike the "Interop TS", the "Coarray TS" has been in rapid flux and I was concerned that it would not settle down in time to allow the standard to be completed according to the current schedule. As I reported earlier, the February 2015 meeting resolved the most contentioius issue of "stalled images" and this was accepted at the WG5 meeting, so it looks as if things will progress on that point.

There are numerous smaller features being added that I have written about before, but we did add a few more:

  • An option for STOP and ERROR STOP to suppress any output to "standard error" (for example, the "FORTRAN STOP" message that Intel Fortran displays.) Also, the "stop code" may now be an expression.
  • Procedures in ISO_C_BINDING, other than C_F_POINTER, are PURE.

In addition, features accepted by J3 at the February meeting, including SELECT RANK and locality attributes in DO CONCURRENT were approved by WG5.

For a full list of the "work items" in Fortran 2015, along with references to the papers where they are described, see the J3 Work Plan. Papers whose names are of the form nn-nnn are J3 documents; those of the form Nnnnn are WG5 documents.

So, what comes next? Integration! This is the process of making sure that all of the changes to the standard work together as a whole and don't create conflicts with other parts of the standard. For the next several meetings, members will be reading the entire standard (in chunks, and rotating around the committee), looking for inconsistencies. Any wording changes needed to correct previously-agreed-to features will be made, but no technical changes will be allowed (unless it proves necessary to drop something that can't be resolved.) Then there are rounds of public comment, review and balloting. The current schedule looks like this:

February 2016 - Draft available incorporating both TS documents
June 2016 - Working draft available
July 2016 - WG5 straw ballot
February 2017- Committee draft available
March 2017 - WG5 ballot on committee draft
October 2017 - Draft International Standard available
November 2017 - Ballot on Draft International Standard
February 2018 - Final Draft International Standard available
April 2018 - Ballot on Final Draft International Standard
July 2018 - Standard published

As for what comes after this - we aren't even going to start thinking about the "next" revision until 2017.

For more complete information about compiler optimizations, see our Optimization Notice.