The ISO Fortran Standards Committee held its annual meeting in Delft, The Netherlands, in late June. I represented Intel at this meeting where the focus was on completing the set of requirements for the next revision of the Fortran standard, to be called Fortran 2015. You can read my earlier post on the standards process at The Real Doctors of Fortran, but I’ll recap a summary here.
The international committee, ISO/IEC/JTC1/SC22/WG5 (or WG5 for short) determines the overall direction of the standard and, at a high level, what the next standard will look like. The US committee, INCITS PL22.3 (but referred to by its older name of J3 from ANSI X3J3), is responsible for the nuts-and-bolts technical content and wording of the standard. J3 has three meetings a year, one of which is also the WG5 meeting.
I had never been to The Netherlands before (many people also call it Holland, but Holland is just one “state” of the country) and it was delightful. I had never before seen so many bicycles in one place!
At the 2012 WG5 meeting, in Markham, Ontario, Canada, WG5 passed a resolution stating what changes would be included in the next standard:
- The already-approved Technical Specification (TS29113) on Further Interoperability of Fortran with C (“the interop TS”)
- A still-in-flux Technical Specification (TS18508) on Additional Parallel Features in Fortran (“the coarray TS”)
- “The removal of simple deficiencies in and discrepancies between existing facilities” (“wart removal”)
The resolution also included a timetable for the next standard, with it being published in late 2016. (Traditionally, the year in the standard name refers to when technical work on the standard was completed.) Note that the feature list is rather small (though the two Technical Specifications themselves are significant.) There has been a growing realization that the standard was moving much faster than vendors or users could keep up with, so there was a strong (but not universal) desire to slow things down.
The major work item for the Delft meeting was to put the finishing touches on the coarray TS, whose direction underwent significant change in Markham. The effort here was led by Bill Long from Cray, whose calm and firm demeanor I admire tremendously. In Delft, we made some significant changes to the areas of events and teams simplifying events and making it possible for teams to communicate with sibling teams, something insisted on by those doing weather modeling. To fully explain either the coarray or interop specifications is going to take a full blog post each and I will try to get to those soon.
But there were also many proposals for new features as well as changes to existing features. We whittled these down to a small number of changed features, for example, allowing the G0.d format for any datatype, an oversight I am personally embarassed by as I wrote the words for that Fortran 2008 edit.
There were then two new feature proposals where the subcomittee working on the list had said we could do only one of them. One proposal was for conditional expressions and arguments similar to the C ? operator. The other was for the ability to specify in source the default kind for INTEGER, REAL, etc. – sort of like an IMPLICIT for kinds and what currently gets done with compiler options such as -r8. I asked if “none of the above” was an allowed choice, and we agreed it was. When the votes were taken, the decision was indeed to do neither of these. My own opinion was that while I liked the conditional expressions idea in general, I didn’t want another major new syntax feature added to the standard at this time. I did not like the “default kind” feature and felt that it would standardize bad practice and would in reality make things more difficult for developers.
In the past, I’ve discussed deprecated and deleted features, but now we were being asked to rescue a deprecated feature, the CHARACTER*n form of declaration, and make it be a “first-class” feature again. I was against this, and Bill Long wondered what other features we might bring back – alternate return anyone? In the end, we voted to “defer” discussion, taking it off the table for now.
As a nice break, we got a visit from Ampt Kees, once a Netherlands representative to the ISO Fortran committee, who gave us an entertaining presentation (big PDF) on early iterations of the Fortran standard many of us had never heard of. “Industrial Real-Time FORTRAN”?!
The end of the week rolled around, and we stayed busy through Friday afternoon. One difficult choice regarded the schedule for the next standard – because work on the coarray TS wasn’t fully done, there was a risk we would not meet the schedule. In the end we chose to keep the current schedule but have the option for changing if the coarray TS is much later (which I don’t think will happen.)
Next year’s ISO meeting will be held in Las Vegas, where the J3-only meetings are always held. The ISO meeting alternates between US/Canada and other member countries.
(Originally posted at Intel Developer Zone, copied with permission)