Patchwork [wwwdocs] Update Fortran part of the GCC 4.8 release notes

login
register
mail settings
Submitter Tobias Burnus
Date Dec. 20, 2012, 9:55 a.m.
Message ID <50D2E0A0.7000201@net-b.de>
Download mbox | patch
Permalink /patch/207643/
State New
Headers show

Comments

Tobias Burnus - Dec. 20, 2012, 9:55 a.m.
The following patch updates the Fortran part of the GCC 4.8 release 
notes at http://gcc.gnu.org/gcc-4.8/changes.html#fortran

It adds quips for
- CLASS(*)
- The new BACKTRACE intrinsic
- A compatibility notice

I would like if someone could comment on the latter. I think it is time 
to explicitly inform about compatibility issues with gfortran. So far, 
smaller ABI changes were done all the time [affecting very special cases 
or very experimental features] and the .mod version was different in 
every release.

(The smaller ABI changes were related to code which required modules, 
hence, the .mod version change forced users to re-compile. In fact, the 
.mod version change in 4.8 has just be done to force recompilation.* 
Thus, the past ABI breakages were and this ABI breakage is very unlikely 
to lead to run-time/link-time issues.)

Comments? Suggestions?

Tobias

* The background for 4.8's ABI changes were: The module name was missing 
from module-defined procedure-pointer variables, leading to a potential 
naming clash with same-name variables in different modules. And the 
deferred-length string ABI was changed as some systems didn't like a "." 
in the assembler name of a variable.
Paul Richard Thomas - Dec. 20, 2012, 1:11 p.m.
Dear Tobias,

Could you note that class(*) is complete up to the restriction to
fixed length character values only?

Thanks

Paul

On 20 December 2012 10:55, Tobias Burnus <burnus@net-b.de> wrote:
> The following patch updates the Fortran part of the GCC 4.8 release notes at
> http://gcc.gnu.org/gcc-4.8/changes.html#fortran
>
> It adds quips for
> - CLASS(*)
> - The new BACKTRACE intrinsic
> - A compatibility notice
>
> I would like if someone could comment on the latter. I think it is time to
> explicitly inform about compatibility issues with gfortran. So far, smaller
> ABI changes were done all the time [affecting very special cases or very
> experimental features] and the .mod version was different in every release.
>
> (The smaller ABI changes were related to code which required modules, hence,
> the .mod version change forced users to re-compile. In fact, the .mod
> version change in 4.8 has just be done to force recompilation.* Thus, the
> past ABI breakages were and this ABI breakage is very unlikely to lead to
> run-time/link-time issues.)
>
> Comments? Suggestions?
>
> Tobias
>
> * The background for 4.8's ABI changes were: The module name was missing
> from module-defined procedure-pointer variables, leading to a potential
> naming clash with same-name variables in different modules. And the
> deferred-length string ABI was changed as some systems didn't like a "." in
> the assembler name of a variable.
Tobias Burnus - Dec. 20, 2012, 3:25 p.m.
Dear Paul,

Paul Richard Thomas wrote:
> Could you note that class(*) is complete up to the restriction to fixed length character values only?

Done. See http://gcc.gnu.org/gcc-4.8/changes.html#fortran and 
http://gcc.gnu.org/wiki/GFortran#GCC4.8

I admit that the BACKTRACE announcement is slightly premature, but I 
assume that Janus will commit the patch very soon.

Tobias
Janus Weil - Dec. 20, 2012, 5:17 p.m.
> I admit that the BACKTRACE announcement is slightly premature, but I assume
> that Janus will commit the patch very soon.

yes, it's only a matter of a few hours now ;)

Cheers,
Janus

Patch

Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.8/changes.html,v
retrieving revision 1.73
diff -p -u -r1.73 changes.html
--- changes.html	19 Dec 2012 21:54:50 -0000	1.73
+++ changes.html	20 Dec 2012 09:43:10 -0000
@@ -243,6 +243,35 @@  B b(42); // OK
 
 <h3 id="fortran">Fortran</h3>
   <ul>
+    <li>Compatibility notice:
+    <ul>
+      <li>Module files: The version of the module files (<code>.mod</code>)
+        has been incremented. Fortran <code>MODULE</code>s compiled by earlier
+        GCC versions have to be recompiled, when they are <code>USE</code>d by
+        files compiled with GCC 4.8, because GCC 4.8 is not able to read
+        <code>.mod</code> file of earlier GCC versions; attempting to do so
+        gives an error message. Note: The ABI of the produced assembler data
+        itself has not changed; object files and libraries are fully compatible
+        to older versions. (Except as noted below.)</li>
+      <li>ABI: Some internal names (name in the assembler/object file) have
+        changed for symbols declared in the specification part of a module.
+        If the module &ndash; or a file using such a symbol via use
+        association &ndash; is recompiled, the module and all files which
+        directly use such symbols have to be recompiled. The change only
+        affects the following kind of module symbols:
+        <ul>
+          <li>Procedure pointers. Note: C-interoperable function pointers
+            (<code>type(c_funptr)</code>) are not affected nor are
+            procedure-pointer components.</li>
+          <li>Deferred-length character strings.</li>
+        </ul></li>
+      </ul></li>
+
+    <li>The <a href="http://gcc.gnu.org/onlinedocs/gfortran/BACKTRACE.html">
+    <code>BACKTRACE</code></a> intrinsic subroutine has been added. It shows
+    a backtrace at an arbitrary place in user code; program execution
+    continues normally afterwards.</li>
+ 
     <li>The <code><a
     href="http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html">
     -Wc-binding-type</a></code> warning option has been added (disabled
@@ -301,6 +330,12 @@  B b(42); // OK
     <a href="http://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html">user
     manual</a>.</li>
 
+    <li><a href="http://gcc.gnu.org/wiki/Fortran2003Status">Fortran 2003</a>:
+      <li>Experimental support for unlimited polymorphic variables
+      (<code>CLASS(*)</code>) has been added.</li>
+    <ul>
+    </ul></li>
+
     <li><a href="http://gcc.gnu.org/wiki/TS29113Status">TS 29113</a>:
     <ul>
       <li>Assumed types (<code>TYPE(*)</code>) are now supported.</li>