(This page lists the most Wanted Features.)
Here's a list of items Toon Moene and I have collected from people who responded to our recent queries about most-wanted features. (I've removed the information on number of requests per feature, because it's hard to track at this point.)
Full Fortran 90 support. (This is a huge project.)
Cray POINTER
support.
ALLOCATE
/DEALLOCATE
.
(This is a small part of Fortran 90.)
REAL*16
.
Really painful without the 0.6 rewrite. Probably requires work on the gcc back end, as well as one or more libraries.
REAL*10
.
Like REAL*16
, requires rewrite.
Also, this is appropriate for only those systems
that offer an 80-bit native type,
like Intel's IA32 architecture.
Run-time array bounds checking. (Completed for gcc 2.95!)
Use of intrinsic functions in PARAMETER
statements.
Requires rewrite.
Improved performance of code that
heavily uses the COMPLEX
type.
(Substantially completed for gcc 2.95!)
Improved debugging.
This involves at least providing the ability to access members of
COMMON
and EQUIVALENCE
areas,
but there are other issues to look into as well,
such as ensuring that PARAMETER
names (named constants)
are available while debugging.
Anyone willing to help out by doing some research into this, please do so, and let us know what you find!
Full compatibility with regard to f2c.
Now that run-time bounds checking is complete,
we believe this means supporting AUTOMATIC
and providing an equivalent to -r8
.
Support for OpenMP parallelization.
g77 already supports OpenMP parallelization directives, actually. That's because, apparently, they're encoded as comments, which g77 happily ignores. So this item means actually implementing the directives, not just accepting and then ignoring them.
SELECT CASE
for CHARACTER
variables.
Generation of thread-safe code.
Not sure how hard this is. Not sure how useful it is, unless libf2c is made thread-safe.
Concatenation of CHARACTER*(*)
.
RECURSIVE
procedures.
Array-element references in array bounds expressions,
as in INTEGER M(N(2))
.
FORMAT(I<J>)
, where J
is a variable.
Mostly a run-time-library issue. Pretty much requires a whole new library design, aka libg77.
READONLY
in OPEN
statements,
Really a run-time-library issue.
Once that's dealt with, it's easy to teach g77
to support READONLY
.
Explicit generation of assembly code
a la gcc's __asm__
construct.
This is far harder than it seems, due to the long-term maintenance and integration costs. Review the EGCS mail archives for discussions of the importance of precisely nailing down the meanings of these constructs to get an idea about the scope of the problem.
In short, getting g77 to recognize some kind of assembly-code construct and pass the information along to the GCC back end is probably 1% of the problem. Handling all the complaints that it doesn't work precisely as desired is the other 99%. (Okay, this might be an overstatement, as it is unlikely Linux will be rewritten into Fortran anytime soon.)
STRUCTURE
, UNION
,
RECORD
, MAP
.
Requires improvements to run-time library as well as the g77 compiler. Probably requires libg77.
ENCODE
and DECODE
.
(Does anybody still need these fossils?)
Better -pedantic
support.
Expected to be substantially addressed by the rewrite.
Widest-need evaluation (as an option).
This would enable handling of
DOUBLE PRECISON D; D = 3.1415926535
as if it had read
DOUBLE PRECISON D; D = 3.1415926535D0
,
for example.
Probably painful without the 0.6 rewrite.
Diagnosis of in-line FORMAT
specifiers,
such as PRINT 'HI THERE!'
,
which g77 does not currently recognize as invalid,
leaving it to be diagnosed at run time.
Better warnings, such as an uninitialized-variable warning
on PRINT *, A
, if that's appropriate.
C ----------------------------------------------------------------------- C ----- GNU Fortran (g77) ----- C ----------------------------------------------------------------------- C PROGRAM G77 C COMMON/QUICKY/QNEWS,QWHAT,QWHO,QHOW,QWHERE,QRLEAS,QSTAT,QWANT, 1 QY2K,QALIGN,QFUND,QF2C,QMAIL C REAL BOF C WHAT() = 2. * 3.14 * QWHAT C READ *,STATUS,NEXT CALL GIMME(FUNDS,*999) PRINT *,'Goodies For Contributors!!' GO TO (999),NEXT CONTINUE INQUIRE (UNIT=99,NAME=WANTED) CALL WHO(CRUNCH) 999 STOP 3HWHY END C C ----------------------------------------------------------------------- C C Copyright (C) 1999 James Craig Burley C C Last modified 1999-07-08 C C -----------------------------------------------------------------------