Go to the first, previous, next, last section, table of contents.

# User-visible Changes

This section describes changes to `g77` that are visible to the programmers who actually write and maintain Fortran code they compile with `g77`. Information on changes to installation procedures, changes to the documentation, and bug fixes is not provided here, unless it is likely to affect how users use `g77`. See section News About GNU Fortran, for information on such changes to `g77`.

To find out about existing bugs and ongoing plans for GNU Fortran, retrieve @url{ftp://alpha.gnu.ai.mit.edu/g77.plan} or, if you cannot do that, email @email{fortran@gnu.ai.mit.edu} asking for a recent copy of the GNU Fortran ``.plan'` file.

## In 0.5.20:

- The ``-fno-typeless-boz'` option is now the default. This option specifies that non-decimal-radix constants using the prefixed-radix form (such as ``Z'1234''`) are to be interpreted as `INTEGER(KIND=1)` constants. Specify ``-ftypeless-boz'` to cause such constants to be interpreted as typeless. (Version 0.5.19 introduced ``-fno-typeless-boz'` and its inverse.) See section Options Controlling Fortran Dialect, for information on the ``-ftypeless-boz'` option.
- Options ``-ff90-intrinsics-enable'` and ``-fvxt-intrinsics-enable'` now are the defaults. Some programs might use names that clash with intrinsic names defined (and now enabled) by these options or by the new `libU77` intrinsics. Users of such programs might need to compile them differently (using, for example, ``-ff90-intrinsics-disable'`) or, better yet, insert appropriate `EXTERNAL` statements specifying that these names are not intended to be names of intrinsics.
- The ``ALWAYS_FLUSH'` macro is no longer defined when building `libf2c`, which should result in improved I/O performance, especially over NFS. Note: If you have code that depends on the behavior of `libf2c` when built with ``ALWAYS_FLUSH'` defined, you will have to modify `libf2c` accordingly before building it from this and future versions of `g77`. See section Output Assumed To Flush, for more information.
- Dave Love's implementation of `libU77` has been added to the version of `libf2c` distributed with and built by `g77`. `g77` now knows about the routines in this library as intrinsics.
- New option ``-fvxt'` specifies that the source file is written in VXT Fortran, instead of GNU Fortran. See section VXT Fortran, for more information on the constructs recognized when the ``-fvxt'` option is specified.
- The ``-fvxt-not-f90'` option has been deleted, along with its inverse, ``-ff90-not-vxt'`. If you used one of these deleted options, you should re-read the pertinent documentation to determine which options, if any, are appropriate for compiling your code with this version of `g77`. See section Other Dialects, for more information.
- The ``-fugly'` option now issues a warning, as it likely will be removed in a future version. (Enabling all the ``-fugly-*'` options is unlikely to be feasible, or sensible, in the future, so users should learn to specify only those ``-fugly-*'` options they really need for a particular source file.)
- The ``-fugly-assumed'` option, introduced in version 0.5.19, has been changed to better accommodate old and new code. See section Ugly Assumed-Size Arrays, for more information.
- Related to supporting Alpha (AXP) machines, the `LOC()` intrinsic and `%LOC()` construct now return values of `INTEGER(KIND=0)` type, as defined by the GNU Fortran language. This type is wide enough (holds the same number of bits) as the character-pointer type on the machine. On most systems, this won't make a noticable difference, whereas on Alphas and other systems with 64-bit pointers, the `INTEGER(KIND=0)` type is equivalent to `INTEGER(KIND=2)` (often referred to as `INTEGER*8`) instead of the more common `INTEGER(KIND=1)` (often referred to as `INTEGER*4`).
- Emulate `COMPLEX` arithmetic in the `g77` front end, to avoid bugs in `complex` support in the `gcc` back end. New option ``-fno-emulate-complex'` causes `g77` to revert the 0.5.19 behavior.
- Dummy arguments are no longer assumed to potentially alias (overlap) other dummy arguments or `COMMON` areas when any of these are defined (assigned to) by Fortran code. This can result in faster and/or smaller programs when compiling with optimization enabled, though on some systems this effect is observed only when ``-fforce-addr'` also is specified. New options ``-falias-check'`, ``-fargument-alias'`, ``-fargument-noalias'`, and ``-fno-argument-noalias-global'` control the way `g77` handles potential aliasing. See section Aliasing Assumed To Work, for detailed information on why the new defaults might result in some programs no longer working the way they did when compiled by previous versions of `g77`.
- New option ``-fugly-assign'` specifies that the same memory locations are to be used to hold the values assigned by both statements ``I = 3'` and ``ASSIGN 10 TO I'`, for example. (Normally, `g77` uses a separate memory location to hold assigned statement labels.) See section Ugly Assigned Labels, for more information.
- `FORMAT` and `ENTRY` statements now are allowed to precede `IMPLICIT NONE` statements.
- Enable full support of `INTEGER(KIND=2)` (often referred to as `INTEGER*8`) available in `libf2c` and ``f2c.h'` so that `f2c` users may make full use of its features via the `g77` version of ``f2c.h'` and the `INTEGER(KIND=2)` support routines in the `g77` version of `libf2c`.
- Improve `g77` driver and `libf2c` so that ``g77 -v'` yields version information on the library.
- The `SNGL` and `FLOAT` intrinsics now are specific intrinsics, instead of synonyms for the generic intrinsic `REAL`.
- New intrinsics have been added. These are `REALPART`, `IMAGPART`, `COMPLEX`, `LONG`, and `SHORT`.
- A new group of intrinsics, ``gnu'`, has been added to contain the new `REALPART`, `IMAGPART`, and `COMPLEX` intrinsics. An old group, ``dcp'`, has been removed.

## In 0.5.19:

- A temporary kludge option provides bare-bones information on `COMMON` and `EQUIVALENCE` members at debug time. See section Options for Code Generation Conventions, for information on the ``-fdebug-kludge'` option.
- New ``-fonetrip'` option specifies FORTRAN-66-style one-trip `DO` loops.
- New ``-fno-silent'` option causes names of program units to be printed as they are compiled, in a fashion similar to UNIX `f77` and `f2c`.
- New ``-fugly-assumed'` option specifies that arrays dimensioned via ``DIMENSION X(1)'`, for example, are to be treated as assumed-size.
- New ``-fno-typeless-boz'` option specifies that non-decimal-radix constants using the prefixed-radix form (such as ``Z'1234''`) are to be interpreted as `INTEGER(KIND=1)` constants.
- New ``-ff66'` option is a "shorthand" option that specifies behaviors considered appropriate for FORTRAN 66 programs.
- New ``-ff77'` option is a "shorthand" option that specifies behaviors considered appropriate for UNIX `f77` programs.
- New ``-fugly-comma'` and ``-fugly-logint'` options provided to perform some of what ``-fugly'` used to do. ``-fugly'` and ``-fno-ugly'` are now "shorthand" options, in that they do nothing more than enable (or disable) other ``-fugly-*'` options.
- Change code generation for list-directed I/O so it allows for new versions of `libf2c` that might return non-zero status codes for some operations previously assumed to always return zero. This change not only affects how `IOSTAT=` variables are set by list-directed I/O, it also affects whether `END=` and `ERR=` labels are reached by these operations.
- Add intrinsic support for new `FTELL` and `FSEEK` procedures in `libf2c`.
- Add options ``--help'` and ``--version'` to the `g77` command, to conform to GNU coding guidelines. Also add printing of `g77` version number when the ``--verbose'` (``-v'`) option is used.

## In 0.5.18:

- The `BYTE` and `WORD` statements now are supported, to a limited extent.
- `INTEGER*1`, `INTEGER*2`, `INTEGER*8`, and their `LOGICAL` equivalents, now are supported to a limited extent. Among the missing elements are complete intrinsic and constant support.
- Support automatic arrays in procedures. For example, ``REAL A(N)'`, where ``A'` is not a dummy argument, specifies that ``A'` is an automatic array. The size of ``A'` is calculated from the value of ``N'` each time the procedure is called, that amount of space is allocated, and that space is freed when the procedure returns to its caller.
- Add ``-fno-zeros'` option, enabled by default, to reduce compile-time CPU and memory usage for code that provides initial zero values for variables and arrays.
- Introduce three new options that apply to all compilations by `g77`-aware GNU compilers---``-fmove-all-movables'`, ``-freduce-all-givs'`, and ``-frerun-loop-opt'`---which can improve the run-time performance of some programs.
- Replace much of the existing documentation with a single Info document.
- New option ``-fno-second-underscore'`.

## In 0.5.17:

- The `ERF()` and `ERFC()` intrinsics now are generic intrinsics, mapping to `ERF`/`DERF` and `ERFC`/`DERFC`, respectively. Note: Use ``INTRINSIC ERF,ERFC'` in any code that might reference these as generic intrinsics, to improve the likelihood of diagnostics (instead of subtle run-time bugs) when using compilers that don't support these as intrinsics.
- New option ``-Wsurprising'`.
- DO loops with non-`INTEGER` variables now diagnosed only when ``-Wsurprising'` specified. Previously, this was diagnosed unless ``-fpedantic'` or ``-fugly'` was specified.

## In 0.5.16:

- `libf2c` changed to output a leading zero (0) digit for floating-point values output via list-directed and formatted output (to bring `g77` more into line with many existing Fortran implementations--the ANSI FORTRAN 77 standard leaves this choice to the implementation).
- `libf2c` no longer built with debugging information intact, making it much smaller.
- Automatic installation of the `g77` command now works.
- Diagnostic messages now more informative, a la `gcc`, including messages like ``In function `foo':'` and ``In file included from...:'`.
- New group of intrinsics called ``unix'`, including `ABORT`, `DERF`, `DERFC`, `ERF`, `ERFC`, `EXIT`, `FLUSH`, `GETARG`, `GETENV`, `SIGNAL`, and `SYSTEM`.
- ``-funix-intrinsics-{delete,hide,disable,enable}'` options added.
- ``-fno-underscoring'` option added.
- ``--driver'` option added to the `g77` command.
- Support for the `gcc` options ``-fident'` and ``-fno-ident'` added.
- ``g77 -v'` returns much more version info, making the submission of better bug reports easily.
- Many improvements to the `g77` command to better fulfill its role as a front-end to the `gcc` driver. For example, `g77` now recognizes ``--verbose'` as a verbose way of specifying ``-v'`.
- Compiling preprocessed (``*.F'` and ``*.fpp'`) files now results in better diagnostics and debugging information, as the source-location info now is passed all the way through the compilation process instead of being lost.

Go to the first, previous, next, last section, table of contents.