The back end and libraries are now up for general testing on a variety of boxes and operating systems. The tarball is usually updated as the web page is. To download and install g95 on unix systems, run the following command (originally from Joost Vandevondele):

wget -O - http://ftp.g95.org/g95-x86-
linux.tgz | tar xvfz -

This will create a directory named 'g95-install' in the current directory. Run (or better yet make an appropriate symbolic link to) ./g95-
install/bin/i686-pc-linux-gnu-
g95 in order to run g95.

2005 Archive

December 31

Another crazy year!

Well, the nice thing about a blog is that it's possible to see where at least a large chunk of the year went. G95 has become quite stable, and bug reports are at the lowest level in years. The most common complaint these days has to do with downloads terminating unexpectedly, and I will be buying some commercial ftp space when I get back from the vacation.

Lots of people have said nice things but Keith Refson wrote: "G95 is now not only a production-quality compiler but a benchmark in correctness for all other fortran compilers. Well done!".

I have some other goodies that will be unveiled soon, and am heading home to Arizona.

December 30

Michael Richmond found a problem with the -fqkind= switch that has been fixed.

Doug Cox has built some new windows builds.

December 29

Dale Ranta pointed out a fencepost error in the MVBITS intrinsic subroutine that has been fixed.

John Harper found a problem in F0-style output where a leading zero digit was being printed when it should not have been.

Vivek Rao pointed out that g95 has been listed in the Polyhedron Benchmarks. My philosophy of program development is to get the program working first, and make it fast later. Given the paucity of bugs lately, it looks like I'll finally have some time to work on some of the sloth.

Julian Kateley sent in a crash on the TRANSFER intrinsic that has been fixed.

Vittorio Zecca pointed out that the SPREAD intrinsic wasn't giving a nonconformant array assignment message under certain conditions. Fixed.

December 21

Doug Cox has built some windows builds.

 

I'm off for Christmas Vacation. As usual, access will be sporadic and irregular. I've currently got about four and a half pending bugs, not quite ZKB, but darn close. It's been another amazing year for g95.

December 20

Doug Cox has built some new windows builds.

Sean Kennedy pointed out a typo in a warning message that has been fixed.

Édouard Canot sent in a regression with module equivalences that has been fixed.

John Reid pointed out a spurious used-but-not-set warning for derived types with default component values that has been fixed.

Vittorio Zecca sent in a couple of problems, a crash on alternate returns and when misusing subroutines and procedures.

Keith Refson reported that I didn't quite fix the problem with uninitialized memory yesterday. Got it fixed for real now. Keith also sent in a valgrind-found problem in the ADJUSTL() intrinsic. Fixed that and the analogous problem in ADJUSTR().

Brian Gregor pointed out some sloth in writing large files of unformatted direct files. I've think I've sped things up by about a factor of two in our tiny test program.

James Beard sent in a mystery crash on FORALL that has vanished.

December 19

James Beard sent in a crash on PAUSE when recursive I/O was happening. Got that fixed now.

Frank Campbell sent in a regression on ENTRY statements that has been fixed.

Joe Krahn sent in a crash on some invalid I/O statements that has been fixed.

December 18

Keith Refson sent in a using-unused-memory problem in the ASSOCIATED() intrinsic.

December 17

Jeff Whitaker has updated the fink package to the current version, eliminating a G95_COMMA bug that crept in under the wire last time.

Harald Anlauf pointed out a module-related deficiency in the BIND(C) stuff that has been fixed.

Doug Cox has build some new windows builds and gotten DLL's to work under mingw.

December 16

Rheinhold Bader pointed out some shortcomings of the BIND(C) stuff that has been remedied.

Doug Cox has built some more windows builds and continues to enhance the DLL FAQ.

December 15

Doug Cox has built some new windows builds, and made some corrections to the DLL FAQ. Doug has also included some new DLL tools in the cygwin package.

Dominique d'Humières sent in a bug having to do with structure constructors that has been fixed.

I've added some more F restrictions, making all function implicitly PURE.

I've added some initial support for F2003's BIND(C) construct, allowing much easier C interoperability. Try it out!

December 14

Bruce O'Neel sent in a small glitch in the PRINT statement that has been fixed.

Doug Cox has built some new windows builds.

Andreas Pautz sent in a problem involving severe compiler sloth when compiling module equivalences, particularly a complex program involving hdf5 at the base level. Got this fixed now.

Vivek Rao sent in a problem with unset pointer variables that has been fixed. Vivek also suggested -Wunused-target, which warns about local variables that have the TARGET attribute, but are never pointed to.

I've added some more F restrictions against specific intrinsics.

December 13

Martien Hulsen sent in a problem with positioning opening files that has been fixed.

Doug Cox has sent some updates to the DLL faq, and has built some new windows builds.

Jean Vezina sent in a scalarization problem with allocatable arrays that has been fixed.

December 12

Doug Cox has built some new windows builds.

Harald Anlauf and Doug Cox tried linking getuid() under MinGW and found that it does not support those calls. We've #ifdef-ed things so that these will return zero under MinGW.

Doug also sent in a new FAQ on building .DLL's under windows.

December 11

Doug Cox pointed out a problem with the MinGW build that has been fixed.

Terry Frankcombe sent in a problem with the IMPLICIT statement that has been fixed.

Greg McGarragh and Vivek Rao sent in a problem with unused module procedures that has been fixed.

I've added more F restrictions for IMPLICIT NONE statements, OPEN statements and type declaration statements.

December 10

James Beard sent me a Four Peaks gift card, so more free beers and cheese bread for a while. Thanks James!

James sent in a misleading error that has been made more leading.

Harald Anlauf pointed out that the getuid() and getgid() calls return something nonzero under cygwin, so I've changed the fortran wrapper to actually use those functions. It isn't clear what happens under mingw yet.

Nick Yasko wrote a page for fortran OpenGL bindings. I've added the link to the docs page as well.

John Harper pointed out the chapter and verse where the standard requires printing a minus sign in formatted output if the internal value is negative [f95: 10.5.1(3), f2003: 10.6.1(3)]. Traditionally, fortran libraries suppress the minus sign in formatted output if the output consists of all zero digits. It turns out this just isn't standard.

I originally implemented floating point output this way, and got occasional complaints about differing output and without guidance from the standard was persuaded to make things compatible. However, the standard trumps tradition. Setting the G95_MINUS_ZERO environment variable to true will cause the traditional output to be produced.

The borderline case, minus zero, is considered to be "negative" even though -0.0 == +0.0.

Ian Gay sent in a crash regarding statement labels that has been fixed.

Samson Assefa, Michael Richmond, Doug Cox and I have tracked down a bug in modules handling that turned out to be a bug in the new mingw. We've worked around the bug for now.

Doug Cox also did some new windows builds.

December 7

Vivek Rao pointed out a misspelling in the documentation that has been fixed.

Harald Anlauf pointed out that getgid() was missing on windows. It now returns zero, just like getuid().

Doug Cox has updated the G95 Manual, as well as building some more windows builds.

I've added some more F restrictions dealing with labels.

December 6

John Harper sent in a problem with minus zero on the branch cuts of complex functions discussed recently on comp.lang.fortran. I've got sqrt() fixed for -0 on the negative real axis. Harald Anlauf pointed out that the GETENV() extension was only an external procedure. I've added it as an intrinsic extension as well.

Bob Taylor sent in another problem with absolute pathnames under windows that I'm hoping is fixed now.

Bálint Aradi sent in a problem with continuation lines that has been fixed.

Walt Brainerd cleared up a problem with an F restriction on constant format strings. I've also added restriction on END statements and DO statements.

December 5

Doug Cox has built more windows builds.

December 3

Added more F restriction involving format strings, format descriptors, function types, Gavin Salam sent in a memory leak associated with allocatable arrays that has been fixed.

Angelo Graziosi pointed out that the default for G95_CR (carriage returns as a record marker) should be off for cygwin, but on under mingw. Got this fixed now.

December 2

Jens Bischoff and I have been exchanging some mails regarding the default action for opening files under windows. Windows has read-only attribute that now causes the default action to become READ instead of READWRITE.

Albert Reiner sent in a crash on misusing host-association that has been fixed.

Dominique d'Humières pointed out a regression in logical expression that is a result of making -fshort-circuit the default. Got this fixed now.

Continuing on with the F restrictions, I've added restrictions on subroutine formal arguments, PROGRAM statements, construct names on SELECT, ELSE WHERE and ELSE IF, type names on END TYPE statments, Doug Cox has built some new windows builds.

Kris Kuhlman pointed out an unimplemented constraint on FORALL statements that has been added.

December 1

Joost Vandevondele, Keith Refson, Michael Richmond, Juha Ruokolainen, Charles Rendleman and Joe Koski reported a crash from a really dumb mistake I made last night. Did a morning build to fix this.

Doug Cox built some new windows builds, then rebuilt them to avoid the above bug.

Continuing on Walt's F restrictions, I've added restrictions for BOZ constants, real and complex constants, double precision statements, external statements, and IF-statements. Several existing constraints have been improved.

Harald Anlauf pointed out that the unix getgid() intrinsic extension hadn't been implemented. I've added it now.

Arthur Gilmour sent in a subtle problem with ENTRY statements that has been fixed.

Thomas Ericsson found a nasty bug that I tracked deep into the gcc back end. I ultimately lost its scent, so we've forwarded a bug to the gcc people.

November 30

Jeff Whitaker has updated the fink build to the current version.

Walt Brainerd sent in a slew of unimplemented F restrictions. I've added restrictions against the PAUSE, CONTINUE, ASSIGN and GOTO statements, logical SELECT statements, alternate returns and arithmetic IFs in F mode. Many more to come.

Bill McLean found a problem where an out-of-bounds array section wasn't being reported. Got this fixed now.

Joost Vandevondele pointed out that default of not short-circuiting the logical operators was causing a serious slowdown. I've made short-circuiting the default.

Michael Richmond found a problem with the common block alignment fix from last week-- arrays that were more than eight bytes long were being incorrectly aligned. Got this fixed now.

November 29

Doug Cox has built some new windows builds.

Michael Sabielny sent in a problem with endfile records that has been fixed.

Gethin Williams found a problem with commas in namelists associated with implicitly opened files that (I think) has been fixed. John Watts may have reported the same problem, we're not totally sure.

Dominique d'Humières found a regression involving namelists and the F2003 decimal-point=comma enhancement.

Norm Clerman reported success with his optical design program. The code was very dense f95 and is a serious milestone for g95.

Peter Thomas sent in a crash on WHERE statements that has been fixed.

Bob Taylor found a problem with include files under windows that has been fixed.

November 28

I'm currently reworking my internet connection. The firstinter.net address will continue to function for another month or so, but I have a new cablemodem/wireless access point router that I'm still learning how to use. I can't send things from the old email, but I'll have a new public address soon-- hopefully something at g95.org.

November 24

Joe Krahn pointed out that the signal() intrinsic extension couldn't take the SIG_DFL and SIG_IGN values for the handler value. Fixed.

Dominique d'Humières found a problem with arrays of derived types containing arrays in namelists that has been fixed.

Joost Vandevondele sent in a bug with BOZ constants that has been fixed.

James Beard pointed out that (noncharacter) 64 bit variables were not being aligned to 8-byte boundaries in COMMON blocks. Got this fixed now.

Keith Refson sent in a problem with scalarization that has been fixed.

November 20

Leonard Bradfield pointed out some places where debugging information wasn't quite correctly with respect to line numbers. Fixed these.

November 19

Harald Anlauf found a lingering problem with array constructors that has been fixed.

Keith Refson sent in a regression with the SUM intrinsic on complex sums with a DIM= parameter that has been fixed.

Julian Kateley sent in an invalid program involving pointer usage. I've added a warning for this that should diagnose this situation much more readily.

Bill McLean found a crash in DATA statements that has been fixed.

Jacques Lefrère requested implementing the F2003 decimal='comma' tag in opens, reads and writes. This causes real numbers to follow the European convention. I've also added a new environment variable, G95_COMMA. If true, decimal='comma' is the default behaviour instead of decimal='point'. This is contrary to the standard, but if you live in Europe, it will make things look nicer.

Doug Cox and I exchanged some mail regarding the failure of posix-style path translation under cygwin. We've got a solution patched together now. The problem was originally reported by Bo Berggren and Hans-Georg Gustavsson.

November 13

Andy Nelson did some research on the default record lengths of other implementations. Based on that, I've bumped g95's default record length up to 1G.

Jan van Oosterwijk sent in a problem with kind parameters that has been fixed.

Doug Cox and I have been exchanging mails regarding a break in the build system under cygwin that has now been fixed.

November 10

Dylan Jayatilaka sent in a problem with assumed length character pointers that has been fixed.

Francesco Teodori sent a crash on frame tracing that has been fixed.

Joe Krahn sent in a problem with array constructors that has been fixed.

Norm Clerman sent in a problem with WHERE masks having nondefault kinds that has been fixed.

Andy Nelson and I exchanged a bunch of mails today regarding 64-bit object files on AMD64. Andy has some huge (2G+) arrays that were causing linker problems until an appropriate recompile of the library. I can unfortunately the necessity of four versions of the runtime library in the not so distant future.

November 9

Brian Swift pointed out that /dev/null couldn't be opened more than once. The standard prohibits this, but I've already made an exception for terminal devices, so I've extended the exception to include block special devices in general (under unix).

Joost Vandevondele and Dominique d'Humières found a problem with nonstandard data statements that was causing the polyhedron benchmarks to fail. Fixed now.

November 7

Helge Avlesen, V. V. Zakharov, Dominique d'Humières and Michael Richmond pointed out that 0.0 wasn't being read correctly with the new floating point reader. The problem was actually translating the representation of 0.0 from the one used by the reader into the proper hardware representation, which is why the problem never showed up until the last minute. Got this fixed, and a special early build done.

November 6

Doug Cox and Dominique d'Humières found a problem with the patch for the F-mode that has been fixed.

Joe Krahn found another problem with allocatable array components that has been fixed. Joe also found a problem with I/O units that has been fixed.

I've added the new floating point reader. The new code guarantees correctly rounded input, as well as correct handling of infinities for all kinds of real numbers. The problems in this area were noted by Édouard Canot and John Harper.

November 5

Walt Brainerd sent in some patches for F that have been applied. You can configure g95 as an F compiler by using the --enable-F=yes during the configuration process.

Adrian Z sent in a problem with array returns that has been fixed.

Joe Krahn found a problem with allocatable array components that has been fixed.

November 3

Doug Cox has built new windows builds.

Joe Krahn sent in a small patch that fixes a problem with the DTIME() intrinsic extension under windows. Joe also pointed out a pair of namespace problems, with win_ftruncate() and sub_big() that should not be public symbols. These are now private.

Giovanni Bussi sent in a problem with stream I/O that has been fixed.

Alan Greynolds and Norm Clerman found a problem with expanding parameter arrays in array constructors that has been fixed.

Peter Blossey sent in a problem with vector subscripts that has been fixed.

Lorenzo Pesce found a problem with ACHAR() that has been fixed.

Joe Krahn pointed out a pair of highly misleading error messages that have been fixed, and a problem with Makefile generation that has also been fixed.

November 2

Francesco Teodori sent in a crash on FORALL that has been fixed.

November 1

Leonard Bradfield pointed out that gdb line numbers still weren't quite right, this time for IF statements. I moved the previous fix to a higher level and things word much better now.

Christoph Jacob pointed out an inconsistency in X descriptor handling that has been fixed.

October 31

Mattias Ellert was linking a g95 program and a C program, and found an entry point to the runtime library that didn't cause an auto-initialization of the library. Got that fixed now.

Christoph Jacob found a problem with statement functions that has been fixed.

October 30

Spent most of the day working on a replacement for the floating point input subroutines. Got it finished now, but haven't finished testing it enough. Reading floating point numbers is trickier than printing them because there is a vastly larger array possible inputs than outputs. The other little issue is that more numbers are printed than read, so testing is important.

Doug Cox has built some new windows builds.

October 29

Gavin Salam pointed out a constraint on allocatable array components that hadn't been implemented.

Ivo Houtzager sent in a HOWTO for running g95 with matlab under windows that has been added to the documentation.

Brian Dushaw pointed out a bad link in the documentation on how to create unix matlab-MEX files. Got this fixed now.

Greg McGarragh pointed out that the -Wunused-module-procs was being issued for specific procedures in an interface, even if the generic was being used. Got this fixed now. He also also suggested an option -Werror that transforms warnings into errors. Got this added now as well.

Clive Page sent a nasty problem with F2003 stream access and reversion that has been fixed.

Leonard Bradfield sent in a problem regarding do-loops and gdb that has been fixed.

October 26

Adrian Z. sent in a regression in dummy functions that has been fixed.

Doug Cox has built some new windows builds.

October 25

David Kneis sent in a problem with the stat() extension under windows that has hopefully been fixed.

Martin Divis sent in a problem with -fsloppy-char and assigned format labels that has been fixed.

Joe Krahn found a problem with modules that has been fixed.

Norbert Schorghofer sent in a brain teaser involving G formatting. The ultimate answer ended up being that the output was processor dependent, so anything goes...

October 20

Dale Ranta found a problem with G formatting and a scale factor that has been fixed.

David Mozzoni pointed out that the link() extension remained unimplemented. Got this done now.

Nick Yas'ko send a cool opengl sphere program compiled with g95.

October 19

Alexey Diligent sent in a problem with array constructors that has been fixed.

Dominique Dhumieres sent in a problem with statement functions that has been fixed.

Dominique also suggested implementing IEEE-style rounding within the compiler as a user option. I've implemented this with the -fround= option. The possible values are 'nearest' (the default), 'plus' which rounds to plus infinity, 'minus' which rounds to minus infinity and 'zero' which rounds towards zero.

Paul Van Delst found a problem with large derived types that has been fixed.

John Turner sent in a problem with zero-sized arrays that has been fixed.

Vivek Rao and Andrew Howarth sent in a regressions with the used-but-not-set warning that has been fixed.

Doug Cox has built some new windows builds.

October 18

Joost Vandevondele and Dominique Dhumieres pointed out an off-by-one error during floating point division that has been fixed.

Pablo Rios pointed out that changing the comment header of modules slightly would make things easier for build tools that prevent module cascades. Got this made now.

Larry Solheim sent in a problem with IFIX() that has been fixed, and a problem with reading big-endian files on little-endian machines that has been fixed.

October 17

Dominique Dhumieres pointed out an off-by-one error in real G formatting that has been fixed.

Dominique also sent in a problem with the PRODUCT intrinsic that has been fixed.

Helge Avlesen sent in a regression in the F formatting, where the F0.x wasn't being correctly handled. Fixed this as well.

Michael Richmond sent in a regression involving printing runtime errors that has been fixed.

Douglas Cox has built some new windows builds.

Vivek Rao suggested a -Wunused-module-procs, which warns about unused module procedures similar to -Wunused-module-vars. These options are useful for crafting ONLY clauses. Added this now.

John Harper reported that the new "good to the last bit" printing seems to work fine. Shockingly few regressions in this area.

October 16

The rewrite of floating-point formatting is done. Whew. This fixes problems noted by Dominique Dhumieres, John Harper, James van Buskirk and others about how output was rounded in the trailing digits in almost all of the floating point descriptors. Moral of the story-- double rounding is bad. The major change is in how list formatting is affected. The old version printed 7 or 15 digits depending on the kind. The new version prints the minimum number of digits necessary to express the binary number in decimal form. So printing "1.0" gives "1.", "0.1" gives "0.1" and so on. Much nicer. The original code is from a paper by Bob Burger and R. Kent Dybvig.

Dominique Dhumieres sent in a problem with statement functions that has been fixed.

Michael Richmond sent in a problem with printing runtime errors that has been fixed.

Shirrell Buhler sent in a problem with EQUIVALENCE statements that has been fixed. I've also added a requested isatty() extension.

Garry Willgoose sent in a problem with array pointers that has been fixed.

Garrett Mandeville sent in a crash related to bad common blocks that has been fixed.

Walt Brainerd sent in a problem with structure constructors that has been fixed.

October 12

Karl-Albert Breith sent in a problem with the SELECT statement that has been fixed.

October 11

Still working on FP formatting. Many bugs have been squashed. Things should be ready tomorrow.

October 10

Continued working on FP formatting. List formatting, E, EN, ES, F and G are all done, but aren't quite debugged yet.

October 9

I've been working on reworking the floating point printing, where several people have reported bugs. This has the potential to destabilize the current version of g95 for a few days. If you like running the bleeding-edge version, save a backup copy now.

October 8

Doug Cox, Gerald Cecil and Dominique Dhumieres reported a nasty bug regarding subroutines that involved a quick rebuild this morning.

Dominique Dhumieres sent in a problem with rounding that has been fixed.

Doug Cox has built some new windows builds.

October 7

Dominique Dhumieres sent in another problem with NEAREST() that has been fixed.

Bil Kleb sent in a problem with intrinsic overloading that has been fixed.

Andrew Howarth sent in a problem with the unused variable warning that has been fixed.

October 5

Dominique Dhumieres sent in a regression of NEAREST() on big-endian machines that has been fixed.

Harald Anlauf sent in a bug regarding some truly disgusting f77 code that has been fixed.

October 4

Doug Cox has built new windows builds.

Denis Brion reported that g95 "compiles and passes the checks successfully as the Fortran compiler for R (a statistical package, containing many F77 subroutines)".

Dominique Dhumieres sent in a hopefully final regression with NEAREST that has been fixed.

October 3

Joe Koski reported success with Kevin McGrattan's Fire Dynamics Simulator. Cool. Or, rather, Hot. Joe has compiled this code over the last couple of months, and has seen a steady improvement in speed.

Doug Cox has built some new windows builds.

Jeff Whitaker has built a new fink package, based on gcc 4.0.2.

Dominique Dhumieres pointed out the error of my ways with regard to the NINT() family. The philosophy statement at the head of the standard says that it doesn't specify rounding, but it turns out that the F2003 version of the standard does specify rounding. In particular, the tie-breaking is round-to-infinity. Fixed now.

Dominique also sent in a regression with double precision SPACING() that has been fixed.

Joost Vandevondele sent in a regression involving MAXVAL(), but really the part where it called HUGE() to get the maximum possible return value. Got this fixed now.

For such a total rewrite, the regressions have been mercifully few.

October 2

The new floating point subroutines are in place.

Dominique Dhumieres sent in a problem with the evaluation of ANINT() in the front end that has been fixed.

I've decided to abandon the standard's definition of ANINT() and do a true round to nearest integer, instead of adding 1/2 and truncating the number towards zero. The definition leads to some extremely bizzare behavior, since adding 0.5 to NEAREST(0.5, -1.0) can give 1.0 after rounding, causing ANINT(NEAREST(0.5, -1.0)) -> 1.0! This one was originally reported by Joost Vandevondele some time back. Similarly, 8388608.0 + 0.5 can give 8388609.0 after rounding. Ties are broken by the usual round-to-even rule, so ANINT(0.5) = 0.0 and ANINT(1.5)=2.0. Other implementations ignore the craziness as well.

Alan Greynolds and Doug Cox sent in a problem with statement functions that has been fixed.

October 1

Jeff Whitaker has update the fink build.

Paul Thomas sent a patch that prevents a crash for recursively defined derived types. Applied.

Doug Cox has built some new windows builds.

I've rewritten a lot of the low level floating point handling from scratch. The current code is complicated and slow, and it's been replace with something much simpler and faster. The new code also anticipates extended real kinds.

No build today.

September 28

Michael Richmond pointed out that the -w option (suppress warnings) didn't work. Got this fixed now.

Udo Grabowski found a problem in the PACK intrinsic that has been fixed. He also reports that the KOPRA radiative transfer code, "the almost uncompilable monster" compiles with g95 and runs fine on x86/linux, ia64/linux and sparc/solaris. This code chokes other compilers.

September 29

Dominique Dhumieres sent in a problem with array I/O that has been fixed.

Michael Richmond reported a problem with argument consistency checking that has been fixed.

Michael and Doug Cox both tried g95 with the new gcc 4.0.2 on windows and both reported success. Doug has built more windows builds, based on 4.0.2.

September 28

Michael Richmond and Dominique Dhumieres sent in a problem with the new argument-checking code that has been fixed.

John Harper sent in a spurious warning that has been removed.

September 26

Doug Cox has built some new windows builds.

Paul Thomas sent in a problem with procedure references that has been fixed.

John Harper sent in a regression with ENTRY statements that has been fixed.

Mark Hesselink and Shingo Adachi sent in a different problem with ENTRY that has been fixed.

September 25

Doug Cox has built new windows builds.

Jean Vezina sent in a problem with assumed length character variables that has been fixed.

Dominique Dhumieres sent in a regression involving intrinsic actual arguments that has been fixed.

September 24

Chris Odell pointed out that the STAT() extension wasn't available on windows. I've added it.

Dominique Dhumieres sent in a problem with ISHFTC() on OSX that has been fixed.

Clive Page sent in a problem with BLOCK DATA originally from the gg95 group that has been fixed.

September 22

Doug Cox has built some new windows builds. Some changes to the memory manager has removed the need for the -Wl,--heap= option that has previously been necessary for people using lots of memory under windows.

Dominique Dhumiere and Francois Bissey sent in a regression on OSX that has been fixed.

Eric Kostelich sent in a problem with array constructors that has been fixed.

September 21

David Kneis sent in a TR15581 issue that has been fixed.

September 19

Sebastian Hegler sent in a cash on a FORALL that has been fixed, along with a problem with FORALL masks on OSX that has been fixed as well.

Harald Anlauf sent in a problem on AIX that has been worked around. The root problem appears to be a subtle problem with the C compiler.

September 17

Jean Vezina sent in a problem with array specifications that has been fixed.

Miroslav Dressler reports that the MODFLOW 2000 code works with g95.

Leos Mervart sent in a problem with character pointer arrays in common blocks that has been fixed.

Dominique Dhumieres sent in a problem with ISHFT() that has been fixed.

September 15

Doug Cox has built new windows builds.

September 14

Dominique Dhumieres sent in a problems with CSHIFT, EOSHIFT, and ADJUSTL that have been fixed.

Yunkai Zhou pointed out a problem with compile-time bounds checking that has been fixed.

Norm Clerman pointed out that I hadn't correctly fixed the problem with PURE procedures quite correctly. Fixed now.

September 13

Dominique Dhumieres sent in some problems with Bessel functions that have been fixed, as well as a problem with array formats that has also been fixed.

Joost Vandevondele sent in a pair of regressions that have been fixed, one with the TRANSPOSE function, the other with DATA statements.

September 12

Vivek Rao sent a Four Peaks gift card (US $50.00) that I will enjoy. Vivek also suggested some small changes to the installation instructions that have been implemented.

Michael Richmond sent in some regressions with the MIN and MAX family that have been fixed.

Doug Cox has built some new windows builds.

Charles Rendleman sent in another crash about array pointers in common blocks that has been fixed.

Norm Clerman sent in a regression caused by yesterday's attempted fix to Van Snyder's problem with pure procedures. I think I've fixed the problem correctly now.

September 10

Michael Richmond sent in a crash on the RAND intrinsic extension that has been fixed.

Charles Rendleman found a crash when array pointers were present in common blocks and block data blocks that has been fixed.

Jean Vezina sent a regression with LBOUNDS/UBOUNDS that has been fixed.

Van Snyder sent in a subtle problem with PURE procedures. I fixed a problem, which may or may not be his problem.

Dominique Dhumieres sent in more problems with calling specific intrinsics as actual arguments that have been fixed.

September 8

Pierre St-Laurent sent in a problem with function declarations that has been fixed.

Doug Cox has uploaded new window builds.

Dominique Dhumieres sent in a crash on using intrinsics as actual arguments that has been fixed.

Michael Richmond sent in a problem with not flushing units on program termination that has been fixed.

September 7

Bart Vandewoestyne and Paul Fons sent in a crash associated with the new -ftrace option that has been fixed.

Peter Draper sent in the analogous optimization problem for arrays as yesterday's problem with scalars. Fixed as well.

Michael Richmond sent in a problems with tracebacks that has been fixed. Walt Brainerd sent in a problem with tracebacks that may have been fixed. Not sure yet.

Gavin Salam sent in a tricky TR15581 issue that has been fixed.

Tyler Collins found a problem with ALOG10() that has been fixed.

September 6

Norm Clerman sent in a regression associated with the fix to Greg McGarragh's issue yesterday. All working now.

Michael Richmond sent in a problem with the --help display that has been fixed, and a problem with the tracebacks and ENTRYs that has been fixed.

Dominique Dhumieres sent in some problems with NEAREST() that have been fixed.

Peter Draper sent in a problem with equivalence blocks and optimization that has been fixed.

September 5

Jeff Whitaker has updated the OSX fink package.

Doug Cox has updated the windows builds.

Mimo sent in a problem with the -fshort-circuit option and bounds checking on character substrings, analogous to the array bounds checking of a few days ago. Fixed.

Dominique Dhumieres pointed out that the 2d x 2d MATMUL() wasn't using the best algorithm for traversing the matrices. The best one on current machines involves traversing the destination and one of the source matrices in stricly ascending memory order, while an element is plucked from the second, but remains constant in the inner loop. Got this one implemented now. It's much faster.

Dominique also sent in a fencepost problem with TINY() that has been fixed, as well as a problem with exponentiation that has been fixed.

Michael Richmond sent in a bug that hasn't been fixed. It involves equivalencing default integers and default reals on platforms with a 64 bit default integer. The standard says that both of these entities have to occupy the same amount of storage space. The bug hasn't been fixed because I haven't been able to think of a good solution to this dilemma. The hack-solution would end up still breaking code that depends on this sort of equivalencing, so there isn't much of an impetus to do something.

Walt Brainerd (and others) have asked for a traceback capability in g95-compiled programs in abnormal termination conditions. I've added this now. You can compile with -ftrace=frame to get a call frame trace back, or -ftrace=full to get the line number of an exceptions. These options will slow down your code, full tracing more so than frame tracing.

Greg McGarragh sent in a regression with PARAMETER simplification that has been fixed.

James Van Buskirk posted a problem to comp.lang.fortran involving invalid kind parameters that has been fixed.

We are still at ZBK...

September 4

Dominique Dhumieres sent in another problem with nested forall-where statements that has been fixed. Dominique also sent in a quality of implementation issue with real and complex exponentiation has been fixed.

G95 has reached a major milestone: Zero Known Bugs. I'm sure that bugs do remain and that someone will smash this idyll soon, but the queue has been drained for the first time in years. Bugs aren't coming in at anywhere near the rate that they have in the past, so hopefully this situation will become the norm.

September 3

Bill McEachen sent in a problem with the WHERE statement that has been fixed.

Joost Vandevondele sent some issues with ENTRY that have been fixed.

Norm Clerman sent in a regression associated with defined assignment that has been fixed.

Dominique Dhumieres reported a problem with scalarization, a problem with FORALL and a problem with SET_EXPONENT() and SCALE() that have been fixed.

September 2

Stuart Midgley had a mystery bug that has vanished.

Jean-Baptiste Faure found a nasty interaction between the fortran include statement and C preprocessing that has been fixed.

Michael Richmond sent in a problem with the DATE_AND_TIME intrinsic that has been fixed.

Mimo sent in a problem with array bounds checking that has been fixed.

Dominique Dhumieres sent in a problem with EXPONENT, FRACTION and SET_EXPONENT operating on denormalized numbers that has been fixed.

Joost Vandevondele and Dominique also sent in a problem with nested WHERE statements that has been fixed.

Kay Dewhurst has reported much success with the EXCITING density functional code.

September 1

Jacques Lefrere, Alan Greynolds, Javier Platas and Francois Bissey sent in a problems with WHERE caused by a total rewrite of WHERE handling yesterday. Got things fixed now.

August 31

Joost Vandevondele sent in a crash involving a regression with recursive I/O that has been fixed, and a problem with -fstatic that has been fixed as well.

Joachim Geiger sent in a regression involving vector subscripts on the left side of an assignment expression. The fix involved deleting about a hundred lines of code.

Tim Harries reported that the TORUS radiative-transfer code, 60k lines of "hardcore" f95 compiles and runs under both linux and osx.

August 29

Jos de Kloe sent in a spurious warning that has been fixed.

Martien Hulsen found a problem with scalarization that has been fixed.

Doug Cox built some new windows builds that are now up.

Gyepes R. pointed out a regression with the MODULE PROCEDURE statement that has been fixed.

Joost Vandevondele sent in a problem with masks in FORALL statements that has been fixed.

August 28

Joost Vandevondele, Dominique Dhumieres and Michael Richmond pointed out that the WHERE statement stopped working. I disabled it doing some debugging and forgot to re-enable it.

Dominique also sent in a problem with MVBITS that has been fixed.

Martien Hulsen, Dominique and Joost all sent in an evil forall that has been smitten or smited, whichever.

Nick Yas'ko reported a problem with CPU_TIME() under windows ME. After looking at the docs, it looks like the underlying GetProcessTimes() call is not available under windows ME. I've made an attempt at returning a negative value in this case as the standard requires.

August 27

Clive Page pointed out a problem with the documentation page on one of the runing environment variables where the default endian was switched from 'big' to 'native'. Docs are updated now.

Nick Yas'ko sent in a problem with sloth in MATMUL() that has been sped up.

Jean Vezina sent in an issue with vector subscripts in DATA statements that has been fixed.

August 26

Jeff Gove reported successful compile and execution of the MATRAN matrix operations package.

Joost Vandevondele, Dominique Dhumieres sent in a couple of problems with FORALL that have been fixed, at long last.

Brian Taylor sent in a problem that I totally misinterpreted regarding kind specifications. I ended up fixing a totally different issue that no one has found to date (and never will, now).

Doug Cox has built some new windows binaries that are now up.

August 24

Joost Vandevondele, Martien Hulsen, Dominique Dhumieres and Charles Rendleman sent in a regression associated with scalarization. This turned out to be the bug I was worried about last night, but it looks like it was only a single bug. Michael Richmond may have found the same problem but I am not sure and we are investigating further.

Martien Hulsen also sent in a regression involving character function specifications that has been fixed.

Alexander Poddey found a problem with character lengths not being correctly saved to modules that has been fixed.

Yunkai Zhou reported a problem with the RANDOM_SEED intrinsic on amd64 with a 64-bit default integer. The size of the state vector wasn't getting handled properly. Got this fixed now. The state vector is 128 bits, so ends up being four words on a 32-bit default integer and two words on 64-bit default integer.

Daniel Price sent in what is hopefully the last problem with nonadvancing I/O, hopefully all fixed now.

August 23

Andrew Beddall sent in half a dozen more typos in messages that have been fixed.

Joost Vandevondele pointed out some sloth in sectioning arrays that has been fixed. Our test code now runs in half the time, other codes that do lots of array sectioning should be faster as well. I'm not sure how dramatic the speedup will be.

Mark Hesselink sent in a regression that I though was fixed. Got it fixed for real now.

Doug Cox has built new windows builds that are now up. He's also updated the manual to the current version.

Juha Ruokolainen and Martien Hulsen sent in a problem with vector subscripts that has been fixed. The changes involved in this fix ought to that ought to speed things up, in programs that use vector subscripts, but I've probably introduced some regressions with this one.

These changes will also facilitate some additional speedups that are planned in the near future. Upgrade with care...

August 22

Andrew Beddall sent in a typo in an error message that has been fixed.

Giovanni Bussi and Norm Clerman sent in a regression with the USE statement that has been fixed.

Michael Richmond sent in a problem with the GOTO statment that has been fixed.

Wentao Sun sent in a regression with EQUIVALENCE that has been fixed.

Dominique Dhumieres sent in a problem with array returns in ENTRY procedures that has been fixed.

August 21

Doug Cox has built new windows versions that are now up. Doug has also added some notes on compiling windows DLL that has been added to the documentation.

Dominique Dhumieres sent in problems with DOT_PRODUCT and EQUIVALENCE that have been fixed.

Mark Hesselink sent in a problem with structure constructors that has been fixed.

Vivek Rao sent in a request for character constructors that has been implemented.

August 20

Michael Richmond sent in a couple of problems, I/O tags, intrinsic procedure arguments, the NEAREST intrinsic, a bad problem with PARAMETERs. All fixed.

Joost Vandevondele sent in a tricky problem with equivalencing derived types with default initializations that has been fixed.

Tim Jenness sent in a small patch for the SECNDS intrinsic to report fractions of a seconds. I ended up putting it in after some tweaking.

August 19

Doug Cox has build a new batch of windows builds.

Michael Richmond pointed out that the mingw build didn't properly return the exit code to the system. Doug did some legwork and this is fixed now.

Doug and I exchanged some mails involving a problem that Javier Platas was having. Javier is having a weird failure when compiling a very large program, so we are seeing if specifying more heap at link time will fix the problem.

August 18

Jan van Oosterwijk reports that the UTC offset under windows is now done correctly, even when the date is set such that DST is not under effect.

Doug Cox and I finally found the problem that Jan reported a few days ago. It turns out mingw has a problem with jobs that return exit codes greater than one.

Dominique Dhumieres reported a regression with DOT_PRODUCT() that has been fixed.

Sander Niemeijer and Dominique Dhumieres reported the analogous problem that Sander and I found in ANY/ALL yesterday. Sander with SUM and Dominique with MAXVAL. All fixed now.

Joost Vandevondele sent in a regression with ANY() that has been fixed.

Nuno Bandeira sent in a mystery crash that has now vanished.

Wentao Sun also sent in a mystery crash that I think is probably the ANY/ALL issue fixed earlier today.

August 17

Joost Vandevondele reported a simple case where DOT_PRODUCT was not unrolling the loop. A bugfix yesterday was a bit too broad, and I think the problem is fixed now. Joost also sent in some encouraging benchmarks of the polyhedron suite that show some speedups.

Kay Dewhurst pointed out some shoddy error checking in the MINLOC() and MAXLOC() intrinsics that has been fixed.

Norm Clerman sent in a regression involving the kinds of statement constructs in array constructors that has been fixed.

Sander Niemeijer sent an elusive crash on the ALL() intrinsic that we are working on. It only seems to crash on his machine. After he built g95 himself and ran the debugger on it, I was able to find and fix some memory corruption. I hope that this will fix his problem.

Doug Cox has compiled a new set of windows builds that are now up. Doug and I are also working on an issue sent in by Jan van Oosterwijk that kind of vanished and has now returned.

Angelo Graziosi sent in pair of problems with DATA statements yesterday, only one of which I got done at that time. Got the other one now.

Joe Koski sent in a crash that has been fixed.

Vivek Rao requested F2003-style structure constructors. Added.

An anonymous donor from the UK sent a small donation. Thanks so much whoever you are!

August 16

Vivek Rao reports that the rules for the gg95 newsgroup have been changed due to spam, most of which appears to be chinese. I am not making this up. Anyone can still read the messages, but you have to be a member to post.

Bart Vandewoestyne sent in a regression involving the never used and never set warnings. Variables that are used in an array constructor iterator or data statement aren't really variables that are used or set, but the resulting warning is more confusing than helpful.

Angelo Graziosi reported the analogous problem with DATA statements. Also fixed.

Tim Jenness pointed out that string comparison was broken for strings containing a null. Got that fixed now.

Martien Hulsen sent in a regression involving the recent loop unrolling that has been fixed. Martien reported a huge (4x!) speedup in his code. He uses DOT_PRODUCT() in inner loops.

Michael Richmond sent in a tricky problem with TRANSFER() that has been fixed.

August 15

Doug Cox has build some new windows builds that are now up.

Harald Anlauf and Stuart Midgley reported a regression with unrolling the SUM() of a complex expression. Fixed this and the analogous problem with PRODUCT().

Jan van Oosterwijk pointed out that the UTC offset of the DATE_AND_TIME() function was still incorrect under windows. I reread the docs, and realized that were pretty ambiguous. After googling around some more, I did find some clarification. It turns out that if you want to figure out the UTC offset under windows, you call the GetTimeZoneInformation() function, which tells you if you're currently under DST or not, and a structure that gives bias, and a number to add to the bias under DST, and a bias to add if not. Instead of just telling you what the UTC offset is. The sarcasm-laden comment on the page that explained this was "Yet another example of the striking elegance of the Win32 API". I hope this is fixed.

Tim Jenness pointed out that the libg2c SECNDS() extension was missing. Added this now.

Tim also pointed out that g95 was not like a lot of other implementation in regard to "typeless" constants. These are constants that convert like bit-pattern equivalence statements on assignments and since it isn't standard g95 has sort of wallowed back and forth. The 'X' constants are now always typeless and the -ftypeless-boz option makes BOZ constants typeless.

August 13

Tim Jenness and Refael Yaari sent in a regression with DATA statements that has been fixed.

Tim also pointed out that it is semi-standard practice to name the blank common block _BLNK__ instead of _g95_blank_common. Renamed.

Doug Cox send in a regression with reading complex numbers that has been fixed. Doug has also built some new windows binaries.

Joost Vandevondele sent in a code that was probably from James Van Buskirk that was a sort of semi-circular specification expression. It looks circular at first glance but is not. Got this fixed now.

I've made some speed improvements to the SUM(), PRODUCT(), ANY(), ALL(), MINVAL(), MAXVAL() and DOT_PRODUCT() intrinsics. Where possible, these are now implemented as loops rather than function calls, preventing time consuming creation of temporary variables that are used and discarded. If you like to use these in the inner loop of codes, they will be much faster now. Martien Hulsen was the first to report this, and many others have mentioned it since.

August 12

Jan van Oosterwijk reported a sign error in the timezone calculation for DATE_AND_TIME() under windows. Fixed now.

Joost Vandevondele sent in a problem with statement constructs that has been fixed.

Clive Page sent in a different regression associated with statement constructs that has been fixed.

Tim Jenness pointed out that the __GNUC__ macro was not being defined. I've added this to the list of predefined macros defined by the C preprocessor.

August 11

Michael Richmond sent in a regression involving simplification that has been fixed.

Brian Swift pointed out that the -frelative option appeared broken. I agreed and got rid of it. I've replaced the include search algorithm with something closer to what other implementations do.

Renato Elias pointed out a problem with exponentiation on IA64 (and possibly other architectures) that has been fixed.

August 10

Hans-Wilhelm Bolloni sent in a problem with some too-strict checking for a derived type that has been fixed.

James Van Buskirk sent in a program with a nasty, nasty specification expression that now compiles and executes correctly. James also sent in a problem with elemental dummy arguments that has been fixed, as well as a tricky circular specification that has been fixed.

Georg von Hippel sent in a bug with RESHAPE() that has been fixed, and pointed out that other implementations allow only the real part of a complex number to be supplied on list input. I've added support for this.

August 9

Vivek Rao pointed out a bad link in the blog that has been fixed.

Tim Jenness was wondering what LOC() returned on a 64-bit platform. It turned out to be a default integer, which is not a good idea. I've fixed things so that it returns a kind=8 integer on platforms with 64 bit pointers. Tim is also working on ways to enable creating a shared version of the runtime library.

Hadi Tjandrasa sent in a problem with hexadecimal constants that I think I've fixed.

Jeff Whitaker has updated the fink build to the current source.

Jens Bischoff reported a library problem in HP-UX that has been worked around.

Jimmy James reported a problem with direct-access I/O on Windows ME that Doug did some debugger work on. I think we have this fixed, and I have my fingers crossed.

August 8

Pablo Rios reported that CASINO, the Cambridge Quantum Monte Carlo code, now works with g95.

Doug Cox has compiled new windows binaries that appears to fix the problem with creating multigigabyte files reported by multiple people.

Vivek Rao sent in a typo on the blog that has been fixed.

Joost Vandevondele sent in a problem with blank commons in modules that has been fixed.

I've added a BYTE type, to be compatible with the common vax extension. Several people have requested this one. In a strict mode, you'll get a warning.

Tim Jenness has been fiddling with compiling g95 as a 64-bit program in the sense of object file format. He's pointed out a small buglet in the build system that has been fixed.

August 7

Joost Vandevondele pointed out (new!) problem with nonadvancing I/O that has ben fixed.

Joost also sent in a problem, originally from the gg95 list, that had to do with an exception for variables initialized with -freal=nan. On x86, the FP unit was doing the initialization, and it dutifully reported an exception when loading the not-a-number to initialize the variable. I've fixed the problem by using integer load-stores to initialize these now.

Antonio D. sent in a problem with writing large files under windows. After Doug did some debugger work, I think we have the problem.

August 6

Alan Soper pointed out that the uninstall program was missing in the windows builds. Doug has added it back.

Doug did some tracing of an I/O related crash on windows 98 boxes and I think we've found the cause of the crash there. Originally reported by Jimmy James.

Walt Brainerd sent in some F restrictions on PUBLIC statements that have been implemented.

Tim Jenness pointed out that libgcc_s wasn't being shipped with the binary builds. I've added these to the distribution.

August 5

Volker Typke sent in a pair of problems with allocatable arrays that have been fixed. The problemd dealt with printing and passing unallocated arrays.

Joost Vandevondele sent in a re-re-regression in nonadvancing I/O that has hopefully been fixed for good now.

August 4

Doug Cox has done another windows build.

Eric Kostelich sent in a problem with the RANDOM_SEED intrinsic that has been fixed.

Joost Vandevondele sent in a regression dealing with nonadvancing I/O that has been fixed.

August 3

Ray Hixon sent in a problem with LBOUND that has been fixed.

Joost Vandevondele sent in a problem with conformance checking through elemental functions that has been fixed.

Harald Anlauf sent in another regression with the F descriptor that has been fixed.

Michael Richmond sent in a regression with the DATA statement that has been fixed.

There are still a couple of I/O regressions that I haven't been able to get rid of tonight.

July 31

Samuel Key sent in a problem with array sections that has been fixed.

Douglas Cox built new windows versions.

July 30

Stefan Birner sent a nice note about the successful compile and execution of the nextnano3 package, a Schroedinger-Poisson solver for three-dimensional nano semiconductor devices, developed by the Walter Schottky Institute (TU Munich).

Joost Vandevondele sent in a bug that we ended up throwing out into c.l.f. for opinions. It had to do with carriage control at the end of nonadvancing writes. The library originally segfaulted, but we've got it doing something reasonable without a fault now.

Joost also pointed out that jump to the end of an IF construct, which is prohibited by the standard, is in fact harmless. These constructs now warn in strict mode and are accepted otherwise.

Roland Schilling and Walt Brainerd sent in a regression having to do with parameter array sizes that has been fixed.

Walt was using g95 to teach a class a Los Alamos National Lab. He said that it went great. It looks like one of his students found a bug having to do with the SIZE= tag in a nonadvancing read. Fixed now.

July 29

Dale Ranta sent in a problem with IARGC() under -i8 that has been fixed.

July 28

Ron McTaggart-Cowan pointed out a warning about clobbering the EBX register in the linux/x86 corefile resume. Although EBX is indeed clobbered, it doesn't matter in that part of the code. I've removed the warning by pushing and popping EBX.

Peter Draper sent in a problem with assigning hex constants to real values that has been fixed.

July 27

John Reid sent in a problem with the ALLOCATE and DEALLOCATE stat variables that have been fixed.

Doug Cox has completed the remaining windows builds with the fixed I/O code. People have reported success with the new version on windows 98. Doug also sent in a regression with INQUIRE that has been fixed.

Dale Ranta and Michael Richmond sent more regressions associated with fixing the printing of X descriptors. Jack Howarth sent in the original problem. I think everything is fixed for everybody now.

Joost Vandevondele sent in a regression with elemental conformance checking that has been fixed.

Ian Gay sent in a problem where g95 was spewing a bunch of floating point numbers. It turns out that Ian had program named 'as' in the current directory that was causing the confusion. Ian also sent in a problem with stream I/O that has been fixed.

July 26

Charles Rendleman sent in a regression associated with the new generic Bessel functions that has been fixed.

Peter Draper requested the FNUM() intrinsic extension. This takes a unit number and returns the operating system descriptor.

Jimmy James and Don pointed out that the SetFilePointerEx() function isn't present on windows ME or 98. After some poking around on MSDN, I found out how to detect if it is present at runtime or not. Doug Cox did a bunch of legwork on this one. The MinGW build is up now and Doug is planning on the others tomorrow.

Jos de Kloe sent in a pair of issues with the INQUIRE statement that have been fixed.

Michael Richmond sent in a regression with a warning about using subroutines as a function that went away. Got it back now.

Sourceforge appears to be having some difficulties with file transfers, so no builds tonight. Hopefully tomorrow morning.

July 25

Nuno Bandeira reported that the new windows I/O code is indeed capable of generating files well beyond two gigabytes, with no problems up to 10G so far. Hooray!

Michael Richmond reported a nasty regression in format processing that was introduced yesterday.

Roland Schilling found a problem with intrinsic simplification that has been fixed.

Doug Cox has sent in an update to the status page that is now online.

Dale Ranta sent in a problem with INQUIRE, -d8 and a mac that has been fixed.

July 24

Jack Howarth found a subtle bug in format processing that has been fixed.

Rafi Yaari sent in a problem with dummy procedure arguments of statement functions that has been fixed. Rafi also pointed out that the Bessel functions were all specific extensions. I've generalized these to generics so that any real kind can be passed.

Mathhew Halfant sent in a regression with defined assignment that has been fixed.

Joost Vandevondele sent in some constraints on ENTRY statements which have been added.

July 23

Douglas Cox, Matthew Halfant and Kai-Uwe Eckhardt sent in a problem with opening file in REPLACE mode that has been fixed.

Doug has compiled new windows binaries that fixed the REPLACE problem.

Angelo Graziosi reported a problem with the Cygwin tarball that Doug fixed.

Doug has also updated the G95 Manual.

Jack Howarth reports total success with the xplor-nih code. The main problem was setting all-unbuffered I/O since it is a hybrid fortran/C that outputs on both sides at the same time.

Mark Hesselink sent in a regression with interface blocks that has been fixed.

Norm Clerman sent in a problem with FORALL under optimization that has been fixed as well as a regression associated with elemental conformance that has been fixed

Joost Vandevondele sent in a pair of contraints on ENTRYs that have been added, a crash on generic procedures with alternate returns that has been fixed, an internal error on invalid ELSEWHERE statements that has been fixed. Joost also pointed out a spurious error dealing with assumed size arrays that has been fixed, a lousy error message in IMPLICIT statements that has been fixed, a constraint dealing with specifcation expressions,

Mathhew Halfant reported a regression with defined assignments in a WHERE statement. The weird thing here was that this wasn't supported at all, and I suspect that a recent fix to WHEREs last week uncovered this particular problem. I've got this fixed now.

July 22

Doug Cox and I have finally resolved the windows difficulties. New builds are up, and the new I/O layer should have no problem creating files larger than 2G that the old layer had.

July 21

Joost Vandevondele forwarded a problem pointed out by Dick Hendrickson on c.l.f. involving defined assignment that has been fixed. Joost also sent a problem with a crash on a bizarre character function declaration that has been fixed.

Doug Cox and I exchanged many mails through the day, trying to iron out the last bugs in the windows I/O code. We're real close but haven't quite gotten it yet.

July 20

Dale Ranta pointed out that the recently added error for block data variables not in a common block was a little severe. I've toned it down to a warning.

Teodoro Laino found a problem with CEILING(X) and FLOOR(X) where 0<|X|<1 that has been fixed. This was in the compile-time evaluation, not runtime.

Joost Vandevondele and Michael Richmond sent in a regression involving the re-resolution of use-associated procedures that has been fixed. Joost also sent in a problem with DATA statements that has been fixed.

Douglas Cox, Michael Richmond and I exchanged a bunch of mails regarding the windows builds. We may have things fixed.

July 19

Joost Vandevondele and Paul Thomas sent in a constraint on specification expressions in PROGRAM units that has been added.

Igor Chernyavskiy sent in a problem with CSIN() and CSQRT() under -r8 that has been fixed.

Jack Howarth, among many others (Harald), pointed out that minus zeroes were not being printed correctly. My take was that if the number is negative, it needs a minus sign. The standard says no. I've decided to relent and print zero in a messed up fashion.

Dale Ranta and Stéphane Guilloteau reported a regression related to the fixes in DATA statements the other day when the -i4 or -i8 flag was given. Fixed now.

Hakan Lane sent some additional instructions for configuring MPICH that have been added to the howto page.

Douglas Cox and I are working the window I/O code again. It looks like a parameter mismatch at the low level. We're continuing to investigate.

July 18

Jeff Whitaker has updated the OSX fink build to the current version.

Harald Anlauf, Mimo, Michael Richmond found a regression involving passing arrays to intrinsics that has been fixed.

Joost Vandevondele sent in a problem with user defined assignment that has been fixed.

Stéphane Guilloteau found a problem with the -i4 option on AMD-64 that has been fixed.

Joaquim Ballabrera sent in a regression involving array constructor arguments that has been fixed.

Harald Anlauf pointed out that I didn't quite fix the printing of minus infinity. I hope it's fixed now.

July 16

Hugh McCutchen pointed out a regression in the scanner where g95 was no longer able to compile a file from standard input. This has been fixed.

Joost Vandevondele sent in constraints on FORALL strides, elemental procedure arguments, MIN/MAX intrinsics, variable-length character functions, EQUIVALENCE statements, NAMELIST (fixed a bug there as well), DATA statements (two here), dummy procedures and the WHERE statement.

Joost also found a problem that affected the ANY(), ALL(), COUNT(), CSHIFT(), DOT_PRODUCT(), EOSHIFT(), MATMUL(), MINLOC(), MAXLOC(), MINVAL(), MAXVAL(), PACK(), PRODUCT(), SPREAD(), SUM(), TRANSPOSE() and UNPACK() intrinsics.

July 15

Joost Vandevondele sent in a constraint on private module procedures returning derived types, a constraint on the PRESENT intrinsic, and a constraint on public interfaces that has been added.

July 14

Jos de Kloe sent in a problem with the INQUIRE statement that has been fixed.

Michael Richmond sent in a regression for COMMON blocks that has been fixed.

Bart Vandewoestyne found a problem with character parameters that has been fixed. Bart also pointed out a place where I loosened format checking a little too much.

Michael Richmond sent in a used-set warning regression that has been fixed.

Jack Howarth is working on porting the xplor-nih program, and has had some initial successes.

Joost Vandevondele sent in a pair of additional constraints on assumed-length character functions, a constraint on DATA statements, a constaint on derived types, a constraint on parameter arrays, a constraint on ASSIGN variables, and a constraint on subroutine names that all have been added.

Joost also sent in a regression involving subroutines that has been fixed.

Harald Anlauf sent in a problem with F formatting of infinity that has been fixed.

July 13

Jeff Whitaker has updated the fink package to use the gcc 4.0.1 backend.

Dawna Greening reported success with the solaris-opteron version of g95, running correctly as well as building. We are talking about a binary.

Jack Howarth sent in a problem with the LOC() intrinsic that has been fixed.

Pavel Sakov sent in a problem with the GETARG() intrinsic extension that has been fixed.

Joost Vandevondele sent in a constraint on character statement functions that has been added. Joost also sent in a crash on zero division in an array section stride that has been fixed, a crash on invalid vector subscripts, a problem with alternate returns, a pair of problems with structure constructors, a contraint on internal character functions, a constraint on alternate return specifiers, a problem with global symbols and a problem with block data units that has been fixed.

July 10

Joost Vandevondele pointed out that the libiconv problem in AIX has reappeared with all the new builds. This is fixed now. Joost also pointed out that the build instructions weren't completely updated, also fixed.

Jack Howarth requested an external version of GETCWD() that has been added.

Dominique Dhumieres reported an LAPACK speedup with the new backend.

July 9

Clive Page pointed out a problem with yesterday's stream writes. The file is only truncated for formatted writes. Got this fixed now.

Jeff Whitaker has updated the OSX fink build.

Haralf Anlauf requested an external version of ABORT(). Added this.

Mark Hesselink requested a subroutine version of the UNLINK() extension on unix. Added this too.

Gavin Salam sent in a problem with the implicit type of module procedures that has been fixed.

Doug Cox and I have continued to exchange mail about the windows I/O code. We've managed to isolate what I hope is the last bug.

GCC 4.0.1 was released a few days ago, and I've upgraded g95 to use it. This should fix a couple outstanding problems, in particular complex division, reported by Dominique Dhumieres, Pavel Sokov and Harald Anlauf.

I've also added an OpenBSD port to the lineup.

July 8

Clive Page pointed out that stream writes should truncate the file at the end of the written record, just like sequential writes. Got this fixed now.

Joost Vandevondele sent in a crash on the -fpointer=invalid that has been fixed. Joost also sent in a problem with operator overloading that has been fixed.

Douglas Cox and I worked on a SCRATCH file problem, also reported by Michael Richmond. Not quite resolved yet.

July 7

Douglas Cox and Michael Richmond sent in a problem with IOSTAT under windows that has been fixed. Doug did some debugger work that flushed out the problem.

Harald Anlauf requested implementing the F2003 IMPORT statement. Got this added now, it is not available in strict F or f95 modes.

Joost Vandevondele sent in a crash on the -freal= option that has been fixed. He also suggested adding an -fpointer= option, which can be none, null or invalid. Added now.

July 6

Jos De Kloe pointed out a similar issue with FLUSH() that I've remedied with an external version.

July 5

Joost Vandevondele and Michael Richmond sent in some regressions with TRANSFER caused by yesterday's fix that has been fixed. The real difficulty here is the various conventions about which bit is "bit 0".

Jos de Kloe sent in another spurious used-but-not-set warning that has been fixed. Jos also noticed the transition of GETARG() and IARGC() to intrinsics. These seem kind of special, so I've added external versions.

Matthew Halfant and Clive Page sent in a problem with stream I/O that has been fixed. Data was getting written more than once and that was messing thing up. Fixed now. Matthew's test code was actually a ray-tracing program, so it was really easy to tell that things worked just fine.

Ben Robinson sent in a problem so bizzare that I don't even want to talk about it lest you, the gentle reader, try it. You can do it now, but my lips are sealed.

July 4

Henk Krus turned out to be the mystery donor. When I get the gift card, there is normally a place where a 'from' name is filled in. The omission appears to be a clerical error at Four Peaks. I did enjoy an nice Hefeweizen last night courtesy of Henk.

Joost Vandevondele sent in a problem with ABORT() on AIX that has been fixed. Joost reports that his CP2K program, which is all in all a very dense code, appears to work on AIX.

Joost also sent in a endianness problem with TRANSFER() an AIX that has been fixed. The problem would have also affected OSX, Sparc solaris and alpha platforms.

Joost's last problem was an issue with mutually recursive module procedures returning arrays that has been fixed.

Nicholas Girard sent in a mystery bug that seems to have been fixed recently.

John Dormand sent in a regression with the WHERE statement that has been fixed.

Jos de Kloe sent in a bug with the INQUIRE statement that has been fixed.

Matthew Halfant found in a problem with MATMUL() that has been fixed.

Bruce O'Neel (and others in the past) requested a way to initialize otherwise uninitialized variables for debugging purposes. After some though, I settled on a set of switches:

-finteger=n Initialize uninitialized scalar integer variables to n
-flogical= Initialize uninitialized scalar logical variables. Legal values are none, true and false.
-freal= Initialize uninitialized scalar real and complex variables. Legal values are none, zero, nan, inf, +inf and -inf.
-fzero Initialize numeric types to zero, logical values to false. The other initialization options override this one.
July 3

Andrew Beddall sent in a problem with a spurious never used never set warning that has been fixed.

Sebastian Hegler sent in a problem with GETARG() and -i8 under OSX that has been fixed. The bug didn't bite under little-endian x86.

Joost Vandevondele and Haralf Anlauf pointed out continuing problems with the AIX build. The problem is the totally bizzare behaviour of libiconv, which is not present on AIX, yet is necessary. The gnu libiconv doesn't build a static object by default, yet creates a .a file with a .so inside of it. The link works, but if the target system doesn't have the .so, things don't work. Rebuilding with libiconv --enable-static produces a .a with .o files inside of it, but still has that .so file inside of it. Deleting the .so from the archive seems to work.

Preliminary reports indicate success.

Geert Jan van Olde sent in a mystery crash that seems to have mysteriously vanished.

Some additional progress has been made on the windows-specific I/O calls. Hopefully we're only a few more iterations from a windows build that will work.

I spent some more time on the build system. Moving the source to the build machines still wasn't reliable. I think it's working now. I've basically re-invented xmodem. Several considerations prevent using traditional file transfer protocols, port firewalling for example.

John Harper sent in a problem with the MERGE intrinsic that has been dafixed.

Norm Clerman sent in a problem with nondefault logical variables and optimization that has been fixed.

A donor who prefers to remain anonymous sent a US $100 gift certificate for Four Peaks. Thanks so much whoever you are!

July 1

Michael Richmond sent in a problem with unit 0 (stderr) on windows that has been fixed.

Joost Vandevondele sent in a regression for the fix to defined assignment the other day. It turns out that you cannot redefine assignment for most intrinsic types, but it is OK for intrinsic derived type assignment.

June 28

Jeff Whitaker has updated the OSX fink package.

Matthew Halfant suggested adding the commonplace ACCESS='transparent' to be equivalent to ACCESS='stream'. I've added this, since it is commonplace already.

Andreas Pautz sent a bug in the SIZE() intrinsic that has been fixed.

Joost Vandevondele and Helge Avlesen pointed out that the AIX binary had libiconv linked statically but was not available on the ultimate systems that it was being run on. I've tried to link libiconv statically but that failed because the library was ultimately shared on the build system. We're seeing about getting a static library.

Joost sent in a problem user-defined assignments within WHERE blocks that has been fixed. Joost also sent in a problem with operator overloading that has been fixed.

Michael Richmond sent in a problem with attaching the DIMENSION attribute to scalar parameters. I didn't quite understand what the problem was, but Richard Maine explained it quite succinctly. His lucid explanation also explained the correct failure of another program that Michael sent in a while back that no longer has to be 'fixed'.

Douglas Cox and David Miles sent all kinds of mail, in an effort to track down problems with the new windows I/O layer. Several bugs have been squashed and we hope to get some more tomorrow.

June 27

Did a bunch of overdue maintenance on the build system. The old version had a python program on every system that was run by the main build script that handled a lot of the details associated with building and upload g95. The problem with this setup is when the build agent had to be updated. Each system now has a 30-line program on it that basically downloads the python agent, compiles and runs it.

This makes changing the agent program a snap, since now it only exists in one place. The loader programs is so simple that it will hopefully never have to be changed again. Part of what prompted this upgrade was a flow control problem on AIX that has been fixed with a little rudimentary windowing.

June 26

Douglas Cox, David Miles and I finally got the new windows I/O code to compile, now we're moving onto fixing the bugs. It looks like there aren't that many.

AIX port completed. Charlier Zender and Dan Stromberg were instrumental in getting this done. Thanks guys!

June 25

Joost Vandevondele sent in a bug with variable length character returns that has been fixed. A second was a problem with the ASSOCIATED() intrinsic that has been fixed. Third was a problem with LBOUNDS and UBOUNDS of array sections.

Michael Leonard sent in a problem with variable-length strings that has also been fixed.

After many requests, I've added support for F2003 stream access. This allows a fortran program to read and write binary files without worrying about record structures. For example:

character(len=5) :: a
open(7, file='output', status='old', access='stream')
read(7, pos=5) a
close(7)

print *, a
end

Reads five bytes directly from position 5 of the 'output' file. I/O can be formatted or unformatted. The INQUIRE statement has also been enhanced to add a POS= tag which returns the current position of the stream file, for a future READ or WRITE. This enhancement has been done many ways, but this is all standard F2003.

June 24

Vivek Rao ... sent in a problem with elemental assumed length character functions that has been fixed.

June 23

Karl Breith was having a problem with a permission denied problem on a scratch file. This looks like it was a problem with setting one of the environment variables G95_TMPDIR, TEMP or TMP to a null string. I've added a check to disregard null strings.

Doug Cox and I are in a cycling through building the new windows code.

June 22

Alexander Hadjiivanov sent in a pair of problems with user-defined operators that have been fixed. Constraints were not being enforced.

Mark Hesselink sent in a problem with character components of structure constructors that has been fixed.

Jaroslav Hajek found a problem with vector subscripts that has been fixed.

June 2

Harald Anlauf sent in another problem with the module variables with default components that has been fixed.

Dawna Greening reports that she has successfully compiled g95 for Solaris running on an AMD64. Testing is now proceeding.

June 20

Charles Rendleman sent in a problem with the -fintrinsic-extensions= argument where the getarg() subroutine was included in the list of extensions to include. Fixed now.

Roberto Herrero sent in a problem with the module variable with default initialized components constraint. It was too broad. Got it trimmed with a little help from Joost.

Joost Vandevondele sent in a constraint for FORALL that has been added.

Doug Cox and I have started iterating on getting the large file support on windows going.

June 19

Matthew Halfant reported a stale link for the FMLIB library that has been updated.

Joost Vandevondele sent in a missing constraint-- functions in FORALL mask statements have to be PURE. Joost also sent in a problem with passing assumed size arrays that has been fixed as well as checking both arguments to DOT_PRODUCT to make sure they are the same size.

Nuno Bandeira pointed out that the windows version only supports 2G files. I've added large file support, but it isn't built yet.

I've written some initial scaffolding for extended precision real types.

June 18

More work on the browser core.

June 17

Joost Vandevondele sent in an infinite recursion problem that was uncovered by a fix to derived type handling a couple days ago. Fixed now.

Norman Clerman pointed out that the constraint requiring module variables that are derived types with default initialization to have the SAVE attribute also holds for variables with default initializations, which implicitly are SAVEd.

Édouard Canot found a problem with the conversion of denormal numbers that I'm afraid has been fixed at least three times. I've taken some steps to try and ensure that this is the last.

June 16

Joost Vandevondele sent in a constraint on EQUIVALENCEs that has been added.

Joost, Dominique Dhumieres, Michael Richmond, Alan Greynolds, Charles Rendleman and John Harper sent in a crash on a regression associated with yesterday's ELEMENTAL contraint that has been fixed. Édouard Canot pointed out that NEAREST(+inf, 1) should be +inf, and I've fixed this and the other analogous case.

Charles Rendleman pointed out that using the -lSystemStubs switch on OSX systems to link object files compiled by programs other than g95.

Roger Greatrex pointed out that the crt0.o file in the cygwin package ended up in the wrong directory. Douglas Cox has created a new cygwin binary and we're hoping this fixes a problem reported by John Dormand.

June 15

Paul Suckling sent in a crash on the NULLIFY statement that has been fixed. Paul also sent in another spurious warning about never used/never set that has been fixed.

Michael Richmond and James Reid sent in a regression involving statement functions introduced yesterday that has been fixed.

Joost Vandevondele pointed out the that actual sizes of arrays passed by procedures weren't being compared. G95 now generates an error if the array being passed is smaller than the actual array.

Joost also sent in a constraint on module variables with default initialization that has been implemented as well as a conflict between the SAVE and RESULT attributes that has been added and a longstanding constraint on ELEMENTAL specification expressions.

Édouard Canot and Joost also did a survey of how various implementations handle numeric overflow while reading a floating point number at runtime. Almost all the implementations generate an infinity. G95 actually cheats at the moment. It always reads doubles, then converts the doubles to floats if necessary. The result is that you get infinities on single precision overflows but an error on double precision overflows. I've read Clinger's paper forwards and backwards and have plans to fix this soon, when I start on support for extended and quad precision.

Édouard also sent in a suggestion for the NEAREST() intrinsic that has been fixed. NEAREST() now works with exceptional IEEE values like infinities and not-a-numbers like you might expect.

Charles Rendleman had an excellent suggestion regarding the problem with excluding intrinsics. Although -fintrinsic-extensions includes all of the intrinsics in a -std= mode, this still might be more baggage than some people want. His suggestion was the option '-fintrinsic-extensions=' followed by a comma-separated list of intrinsic extensions to include. So

-fintrinsic-extensions=iargc,getarg  

includes the iargc() and getarg() intrinsics.

June 14

Alan Greynolds sent in a regression with ENTRY statements that has been fixed.

Joost Vandevondele sent in a pair of regressions involving statement labels and statement functions that have been fixed.

Joost also sent in a problem matching data transfer statements, having to do with the optional tags being present or not. I ended up doing a large rewrite of how these things work and then spent two hours fixing all the regressions. I think it's probably back to normal now.

Keith Refson pointed out that the signal() extension didn't have a third argument that is accepted by most other implementations. The third integer argument is a flag that lets the user ignore a signal, set the default behaviour or install their own signal handler. Fixed now.

Douglas Cox has built new binaries for windows.

John Harper sent in a problem with internal character files that has been fixed.

June 13

Joost Vandevondele sent in a constraint against having dummy procedures in ELEMENTAL procedures that has been added.

June 12

I've written about 1200 lines of code this weekend for what will become the core of the long-planned source browser. Writing a lot of new code was a nice change of pace.

June 11

Jeff Whitaker has updated the fink OSX package.

Michael Richmond, Alan Greynolds, Keith Refson sent in a problem with one of yesterday's fixes that went too far in direct I/O.

Joost Vandevondele sent in a crash with pointer assignments in PURE procedures that has been fixed.

June 10

Added some MinGW compilation instructions that apparently got lost.

Joost Vandevondele sent in a problem with the EOR tag, a problem with the SIZE keyword, a problem with NAMELIST I/O statements, a problem with the REC keyword, a problem with IOSTAT tags, a problem with namelists. All fixed now.

John ZuHone reported that FLASH, a numerical hydrodynamics/N-body astrophysics code, works with g95. John also pointed out some difficulties with the IARGC() and GETARG() extensions, which were implemented as external extensions. This caused problems when the underscoring conventions is changed, so I've moved them into intrinsic extensions.

June 9

After talking with Paul Suckling, I've changed the default tick on the SYSTEM_CLOCK() to 100 microseconds from 10. As near as I can recall, I miscalculated the time required to overflow the clock. It was only six hours, and this change move the time to overflow up to 60 hours. Resolution of 10 microseconds is also probably not possible on most systems, so no big deal there.

Paul also found an error with derived types and access specifications that has been fixed.

Bart Vandewoestyne pointed out another problem with F and actual procedure arguments that has been fixed.

Our spy at the Apple Developer Conference reports that g95 runs out of the box on x86-osx platforms.

IRIX port

June 8

Paul Suckling pointed out that the SYSTEM_CLOCK() intrinsic wasn't rolling over correctly. Got this fixed for unix and windows.

Joost Vandevondele, Wilfred van Rooijen, Bart Vandewoestyne, Michael Richmond, Ross Lippert, Charles Rendleman and Kris Kuhlman sent in a problem with array indices that has been fixed. This was a trip down what looked like a blind alley for a while, but it looks like things are back together now.

Bart Vandewoestyne pointed out that F procedures don't require INTENT for a pointer argument. Fixed.

June 7

Rachid Benshila reported the successful compile and execution of the NEMO Ocean model on x86 linux and OSX.

Aaron Schmidt contributed a HOWTO article for linking g95 programs with MATLAB.

Ross Lippert sent in a problem with the CMPLX() intrinsic that has been fixed.

Dominique Dhumiere sent in a variation on the twelve-days program that caused a crash. Fixed now.

Jaroslav Hajek sent in a regression involving vector subscripts that has been fixed.

Joost Vandevondele pointed out that F2003 MIN() and MAX() have been extended to character as well as numeric types. Added this.

It's been an interesting night tonight-- I'm listening to a Bryan Adams/Def Leppard concert for free. They're performing live right across from where I live, and I can hear them perfectly by simply cracking my patio door...

June 6

Bart Vandewoestyne suggested the analog of -fintrinsic-extensions for the TR15581 extensions for allocatable arrays, not normally available in -std=f95 or -std=F modes. I've added an option -ftr15581 that enables allocatable arrays even in these modes.

June 5

Joost Vandevondele sent in a regression involving generic procedure resolution, involving the now-infamous interp 101. I think we have things working correctly now, with fingers crossed.

Giovanni Bussi sent in a problem with C-preprocessing that has been fixed. #line directives were being treated as new files, not line changes.

Dominique Dhumieres sent in a pair of crashes on entry statements that have been fixed.

James Van Buskirk sent in a some problems with scalarization that has been fixed. A extra copy-out was being done that was not only unnecessary but messed up the results to boot.

Mark Hesselink found some sloth in array constructor assignments that has been sped up quite a lot.

June 4

David Sagan found a problem with the NULLIFY() statement in fixed-form source mode that has been fixed.

Tom Crane and Paul Suckling found (separate) spurious never-set-never-used warning that have been fixed.

Alberto Garcia pointed out a problem in F mode where the OPTIONAL statement was not being matched. Normally, F does not allow these attribute declarations, but there isn't any other way for a subroutine procedure argument to become optional. I've fixed this in anticipation of a change in F.

Bart Vandewoestyne pointed out that intrinsic extensions like SYSTEM() aren't available in the -std= modes, which are intended to be 'strict' modes. An option -fintrinsic-extensions has been added to make the extensions available even in these modes.

Giovanni Bussi sent in a problem with long error messages that has been fixed.

Daniel Price pointed out that the -Wunset-vars option had accidentally become a no-op. Got this re-enabled now.

Aurelio Bay sent in a nasty problem with host-associated derived types being printed that has been fixed.

Volkmar Klatt sent in a problem with concatenation and old-style character declarations that has been fixed.

The machine used for building the alpha version has been taken out of service. Fortunately, I have another one available to me.

June 3

Joost Vandevondele sent in some more NULL() regressions. Hopefully this is the last of them.

Bart Vandewoestyne and Walt Brainerd pointed out a discussion on comp.lang.fortran the thesis of which was that zero-sized array constructors aren't legal. I've fixed this now.

Paul Suckling pointed out a regression in the corefile resume introduced two days ago. Got this fixed now.

June 2

Joost Vandevondele, Édouard Canot, Charles Rendleman, Dave Offiler sent in a problem with the NULL() pointer that was made worse a few days ago.

Paul Suckling pointed out that SIGQUIT was being blocked for long-running jobs. I've fixed this problem for a few obscure cases, and am not sure if this is resolved or not.

Michael Richmond sent in a problem with the LOC() intrinsic extension that has been fixed.

Many people have brought up the fact that g95 computes the operand of .and. and .or. even if the value of the expression can be determined by only evaluating the first argument. The standard allows implementations to do this any way it wants, and I've set it to evaluate both operands because this is the "worst case"-- relying on short-circuiting can cause trouble. I've added an -fshort-circuit option that changes to the short-circuit behaviour.

Jeff Whitaker has updated the OSX fink package.

Daniel Price suggested warning for ONLY-variables that are never used or set. I've added that-- it's a great idea for keeping an ONLY-clause up to date.

June 1

Douglas Cox has built new windows binaries. Al Greynolds and Angelo Graziosi reported separate problems with the builds that have been fixed.

Daniel Price found a problem with the F2003 intrinsic COMMAND_ARGUMENT_COUNT() when -std=f2003 was specified. I've fixed this and the analogous problem in GET_COMMAND_ARGUMENT().

Bill McLean sent in a spurious problem with the VALUE attribute that has been fixed.

May 29

Joost Vandevondele sent in a regression on pointer assignments of NULL() that has been fixed.

Eric Kostelich sent in a pair of spurioues used-but-not-set warnings that have been fixed.

May 28

Michael Richmond requested the LOC() intrinsic extension. This won't work on platforms where the default integer has a different size than the pointer size. Michael also sent in a problem with the SIZEOF() extension which has been fixed.

Joost Vandevondele sent a regression on functions returning pointer character arrays that has been fixed.

May 25

Tom Crane pointed out that old VMS and g77 libraries handle endfile records slightly different than the standard, allowing reading beyond endfiles. This is particularly helpful for reading multiple data sets from a terminal device where you can read end-of-file more than once. I've extended the existing G95_IGNORE_ENDFILE variable to cause re-reads from files that have read the end of file.

Guilhem Bonnefille pointed out a bug in C preprocessing the #line directive that has been fixed.

Guglielmo Pasa sent in several HOWTOs for compiling various packages with g95. The packages included LAPACK, ARPACK, MPICH2-1.0.1, BLACS, SCALAPACK, SUPERLU-3.0, UMFPACK, MUMPS-4.3.2, and AZTEC-2.1. Michael Richmond sent in a note concerning pass-by-value. I believe that I have the F2003 VALUE attribute correctly implemented now. Michael also sent in a regression with the PAUSE statement that has been fixed.

May 24

Joost Vandevondele, Michael Richmond and Alan Greynolds reported a problem with statement function introduced in last night's fix. Got everything working here now.

Joost also sent in a problem with EQUIVALENCE statements that has been fixed.

Stephane Guilloteau suggested an -i4 option on 64-bit platforms to force a default integers to be 32 bits. I've added this.

John Harper pointed out a constraint for MODULE PROCEDURE statements that wasn't implemented and also pointed out problems with yesterday's fixes to the LOG() family on solaris which have been fixed.

May 23

John Harper reported some additional domain problems on solaris with log() and log10() that have been fixed. John sent in a crash on incorrect statement functions that has been fixed.

Frank Muldoon sent in a problen with NAMELISTs that has been fixed.

May 21

Christopher Miller sent in a regression with the READ statement that has been fixed.

Charles Rendleman sent in a subtle problem with the ALLOCATE statement that has been fixed.

Joost Vandevondele sent in a regression having to do with host-association that has been fixed.

May 19

Édouard Canot reports the successful compile and testing of the HDF5 Hierarchical Data Format package.

John Harper pointed out that ASIN on solaris still wasn't fixed. I've paid extra special attention to making sure it is complete now.

Sheo Prasad sent in a problem with derived types in namelists that has been fixed.

Joost Vandevondele sent in problems with host association and pointer assignment that have been fixed.

Édouard Canot pointed out a problem with the pointer assignment fix that has been fixed.

Dominique Dhumieres sent in a problem with EOSHIFT() with 64-bit default integers that has been fixed. The analogous problem has also been fixed in CSHIFT().

Dominique, among many others, have pointed out that using X'123' is a fairly standard extension. I don't like extensions where there is a standard way of doing things, but this one is pretty popular. I've added this in non-strict mode.

Michael Richmond and Joost Vandevondele reported regressions with ENTRY that have been fixed.

May 17

Harald Anlauf reported a problem with recursive I/O when at least two of the units were internal units. Fixed.

Paul Suckling pointed out a spurious used-but-not-set warning that has been fixed.

John Harper pointed out that the fix to ASIN and ACOS on solaris the other days didn't work. It turned out to be a typo which is now fixed.

Norman Clerman sent in a regression involving the shapes of parameter arrays that has been fixed.

May 16

Helge Avlesen had a addition for the .emacs file that allows emacs to find the next g95 error message in compile mode. The code is:

;; add g95 to compilation mode
(eval-after-load "compile"
'(setq compilation-error-regexp-alist
(cons '("^In file \\(.+\\):\\([0-9]+\\)" 1 2)
compilation-error-regexp-alist)))

This has been added to the HOWTO page.

The restriction on recursive I/O calls has been removed. The F2003 standard allows an internal I/O statement during another I/O statement. I've gone ahead and allowed it in general. Many people have requested this.

Bart Vandewoestyne sent in a problem with F-restrictions. Turns out I was too stringent in a pair of places.

Norman Clerman sent in a problem with vector specification expressions that has been fixed.

May 14

Joost Vandevondele and John Harper sent in a nasty problem with host association of statement functions that has been fixed. John also sent in an additional constraint on statement functions that has been implemented.

Joost sent in constraints on namelists and generic names that have been added. Joost also sent in an optimization error having to do with array sections that has been fixed.

May 11

Paul Suckling reports the successful compile and execution of his codes.

Paolo Giannozzi sent in a tricky problem the OPEN statement that has been fixed.

Al Greynolds pointed out some glitches with the GAMMA() extension that has been fixed.

I've fixed a regression in the AMD64 build that has bit for the last couple of days.

May 10

Alan Greynolds pointed out that yesterday's fix to LOG10() on OSX didn't actually work. I didn't propagate the fix back for the main build. Fixed now.

Jeff Whitaker has updated the OSX fink package.

Doug Cox has updated the windows builds.

Dominique Dhumieres sent in a crash on OSX that I was unable to reproduce. His code didn't seem to have a log10 in it. We are continuing to investigate.

David Miles pointed out that the semicolon is the directory separator of choice under windows. I've added this for the G95_INCLUDE_PATH added yesterday.

John Harper reported problems with ASIN and ACOS intrinsics that have been fixed.

May 9

Bill Heagy sent in a problem with the NINT() intrinsic that has been fixed.

Bruce O'Neel sent in a problem with the LOG10 intrinsic under OSX that has been fixed.

Joost Vandevondele pointed out a pair of array related optimizations, one of which was easy enough to implement quickly.

Dave Wilks suggested an environment variable for specifying paths to search for include files. This is a pretty standard thing, and I've added it. The variable is G95_INCLUDE_PATH and is a colon-separated list of directories.

May 6

Eric Kostelich sent in a crash reading a module that has been fixed.

Bart Vandewoestyne sent in an embarrassing crash in F mode that has been fixed.

Dominique Dhumieres sent in a problem with scalarization that has been fixed.

Fabrice Boyrie reports that Gaussian 2003 compiles and runs correctly, with some small patches.

May 5

Charles Rendleman sent in a quick survey of how several other implementations handle include files. The ones he reported on search relative to the directory g95 is run in, not the directory of the source file.

The compilers that search relative to the source files appear to be fortran 77 compilers, including g77. I've restored the original behaviour of g95. It's possible to search relative to the source file directory by using a the new -frelative option.

Munzir Basri sent in a crash on ENTRY statements that has been fixed.

Dominique Dhumieres sent in a problem with namelist input that has been fixed.

Bart Vandewoestyne pointed out that several f95 intrinsics aren't valid under F. Walt confirmed this, and I've disabled the ones that aren't legal.

Al Greynolds requested implementing the gamma (GAMMA) function and its logarithm (ALGAMA). Done.

May 4

Many people have reported sloth in the MOD() function over the last couple of weeks. The problem with implementing MOD() being equal to A-INT(A/P)*P is that INT() returns an integer that can potentially overflow if A and P are right. The correct way is A-AINT(A/P)*P. I've sped up the AINT() by using some judicious assembler on x86 and x86_64. My quick and dirty benchmark indicates that the speed has tripled.

Bart Vandewoestyne and Tim Campbell reported a regression with the WRITE statement related to the F-work being done lately.

Antonio C. pointed out that the crtfastmath.o file wasn't being included in the alpha build. This was required for the -ffast-math option. Got this fixed now.

Aaron Schmidt sent in a mystery crash that went away.

Mark Hesselink sent in a crash on -fbounds-check that has been fixed.

May 3

Anders Silfvergrip pointed out that the '.f03' suffix has been proposed for F2003 files. I've added this and '.F03' to the list of suffixes accepted by g95.

Karl-Albert Breith, Édouard Canot and Charles Rendleman pointed out the new search scheme was messing up the placement of object files. The new scheme actually changed to the pathname of the source file. This meant that the object files were left in that directory. This is bad. So the pathname of the source file is now just treated as a prefix that is prepended to the initial open as well as future search requests for included and module files.

Bart Vandewoestyne sent in a regression with the PRINT statement in F-mode that has been fixed.

Michael Richmond and Fabrice Boyrie sent in a crash associated with alternate returns and the F2003 VALUE attribute which was added yesterday. Fixed.

Dominique Dhumiere and Walt Brainerd sent in a problem with vector subscripts that has been fixed.

Michael Richmond sent in a truly bizarre problem with host association that has been fixed.

Bill McLean pointed out that a F-constraint wasn't quite right. Turns out I got PUBLIC and PRIVATE switched around.

Boyd Blackwell requested repeat-count notation in namelist output. Added.

May 2

Bill McLean requested support for the F2003 VALUE attribute. Added this now.

Sander Niemeijer pointed out that path searching was not quite the same as in other compilers. Got this fixed now.

Benjamin Turner sent in a number of F-related constraints that have been added.

Bill McLean, Bart Vandewoestyne and Walt Brainerd also sent in some restrictions that have been cleared up regarding modules. Some other questions remain.

Matthew Halfant sent in a problem with memory allocation under windows. After some discussion with Doug and David, we're working on a solution.

James Van Buskirk sent in a tricky initialization expression (a derived structure constructor) that has been fixed.

May 1

Joost and I had a discussion a while back about a problem that would misalign the stack on x86 machines, leading to poor performance for kind=8 real arrays. The misalignment appeared even before the runtime library got control, so I've added instructions to re-align the stack. Systems like mine where we didn't see a misalignment should be unaffected.

Jeremy Sweezy reported some sloth in RESHAPE() that has been mitigated, but unfortunately not removed.

Harald Anlauf sent in a problem a while back regarding ambiguity of dummy procedures in generic interfaces that we finally saw the light on. The fix was not hard, but coming up with it was.

Fabrice Boyrie sent in a problem with FORMAT strings in fixed form mode that has been fixed.

April 30

Édouard Canot sent in a problem with kind conversion of not-a-numbers that has been fixed. Also fixed the analogous problem with infinities.

Alston Misquitta found a regression (forwarded by Joost) with the -Wunused-module-vars option that has been fixed.

Charles Rendleman, Michael Richmond, and Kevin Fisher sent in a regression having to do with automatic variable being incorrectly identified as such that has been fixed.

Karl-Albert Breith sent in a crash associated with long filenames that has been fixed.

Michael Richmond pointed out a deficiency in TRANSFER() where a SIZE was given but there wasn't enough data to produce that SIZE. I've added an appropriate warning.

Walt Brainerd sent in a problem with DO and FORALL loop variables under F. These have to be declared locally to the procedure containing the loop.

Walt also sent multiple problems with implied do-loop closures that have been fixed and an infinite loop in type comparison that has also been fixed.

James Van Buskirk sent in a mystery crash which has mysteriously vanished.

Jean Vezina sent in several problems, mostly array-related problems that are now mostly fixed.

Christopher Bonet sent in a one-line patch for the windows version of FDATE(), which has been applied.

Yoann Le-Bars sent in a mystery wrong-result which somehow give the correct result now.

April 28

Guglielmo Pasa, Douglas Cox and Michael Richmond sent in a fix for an undeclared variable in the windows builds.

Jeff Whitaker reports that a fresh fink package is up.

Doug Cox has built some fresh windows builds.

Joost Vandevondele sent in a problem with construct labels that has been fixed.

Joost also sent pointed out a lousy error message associated with assumed size arrays that has been beefed up. There was also a problem with stop codes that has been fixed as well as a FORALL issue with derived type constructors that is fixed.

Karl-Albert Breith sent in a regression in READ statements that has been fixed.

Helge Avlesen pointed out a problem with the -fendian option that has been fixed. Case of unformatted I/O.

James Van Buskirk sent in a subtle problem with specifications expressions that has been fixed.

Javier Gonzalez sent in a regression associated with the contraints on PURE variables added yesterday.

Walt Brainerd sent in a problem with assumed length dummy arguments that has been fixed.

April 27

Jack Scheible reports that Svere Aarseth's NBODY6 code works fine.

Joost Vandevondele pointed out some constraints on NAMELIST and DATA variables that have been added, as well as a constaint on dummy procedures that has been added.

Joost also sent in multiple problems with ENTRY statements that have been fixed as well as a problem with PURE procedures, and a problem with defined assignment that has been fixed.

Bill McLean tried to use g95_runtime_start() to interface fortran and C. The problem was that g95_runtime_start() has arguments. These are now documented.

Doug Cox wrote a howto for the PHOTRAN IDE. It's now accessible from the main docs page. I've also added a HOWTO for x86 LAPACK, which requires a small tweak on x86 machines. I imagine the HOWTO will grow as time goes by. I've also udated error codes on the docs page which changed slightly a while back.

Dale Ranta reported that the LOG() intrinsic vanished on OSX. This has to do with the recent optimization of various transcendental functions. Fixed.

April 26

I've been rewriting how constructors are handled, in an effort to get rid of some long-term bugs.

Vivek Rao, Joost Vandevondele (multiple examples), Paul Suckling, James Van Buskirk all sent in examples.

Joost also sent in a problem with namelists that has been fixed.

Roger Greatrex sent in a problem with the FDATE() intrinsic extension that has been fixed.

Peter Simon and Dale Ranta pointed out a problem with a lack of heap memory under windows. There is a linker option that fixes this, and we're considering a more permanent solution.

Guillermo Valor sent in an RPM spec file that'll be used to produce RPM files sometime soon.

Domenico Bruno sent in a mystery crash on OSX that vanished...

Michael Fontenot sent in a mystery crash as well.

April 23

Doug Cox sent in a problem with a PRINT statement where it crashed rather than producing an error that has been fixed.

April 22

Joost Vandevondele and Paolo Giannozzi sent in a regression involving the large unit numbers that has been fixed.

Mark Hesselink sent in a spurious warning for result variables that has been fixed.

Jack Scheible reported a spurious warning about arithmetic overflow that has been fixed.

Doug Cox has build a new, experimental self-extracting installer for Cygwin systems.

The build issues have been fixed. These were mostly some ongoing network troubles.

April 21

Jeff Whitaker has updated the osx fink package. Jeff used the current gcc back end and reports no problems at all. I will be upgrading as well soon.

Dominique Dhumieres sent in a pair of problems with namelists that have been fixed.

Ray Hixon reported that the x86_64 build works on his Intel EMT64. I've updated the download link to reflect this.

Wilfred van Rooijen reported that the NJOY program works with g95.

Doug, David and I exchanged another set of mails on the windows tempfile issue. We may have this solved now. Fingers crossed. Doug and David are also discussing options for the windows installer, see the newsgroup for more.

Dale Ranta and Joost Vandevondele pointed out that it was legal to have nondefault integers as unit numbers. I've removed the limitation on default integers in this area, so you can now open unit 9223372036854775807 if you want to... Helge Avlesen suggested a compile time flag for unformatted endianness. I've added an -fendian= flag, which can be "big" or "little".

April 20

Joost Vandevondele, Michael Richmond, Charles Rendleman and Walt Brainerd sent in an infinite recursion regression that has been fixed. The code Walt sent was actually Dan Nagle's COCO conditional compilation program, so it was kind of neat to know that this seems to work now.

Ivan Zhelyazkov sent in a problem with MAXLOC() that has been fixed.

Joost Vandevondele sent in a constraint on COMMON blocks that has been implemented.

Jean-Baptiste Faure pointed out that scratch files under windows weren't being deleted. I had hoped that windows would be like unix, allowing you to delete an open file to guarantee that it goes away when closed, but this was not the case. Dave Miles and Doug Cox both took turns with a debugger, helping find bugs in some intermediate versions. UPDATE: Bug is not quite fixed.

April 19

Boyd Blackwell sent in a mysterious crash under windows. David Miles determined that some uninitialized memory was the problem. Using valgrind, I've duplicated and fixed the problem.

Norman Clerman sent a subtle TR15581 issue that has been fixed.

The build system is a little hosed right now, hopefully it will be fixed soon.

April 17

Joost Vandevondele sent in a bug involving the rank of NULL() that has been fixed. Joost also sent in a problem with adding and subtracting the sign of zero that has been fixed.

Joost also sent in a problem with default initialization of derived type arrays that has been fixed. He also sent in several problems with null array constructors that have been fixed. There was also a regression with matching iterators that is also fixed.

Joost sent in a RESHAPE regression that has been fixed.

Boyd Blackwell sent in a problem with E formatting with a scale factor set that has been fixed.

Walt Brainerd sent in a problem with adding array constructors that has been fixed.

Walt and Richard Maine via Joost pointed out that the array bounds of temporary arrays were not being chosen correctly. Fixed.

Walt Brainerd and Bill McLean pointed out a restriction of F where public modules can only use other modules, and all other modules have to be private. Got this implemented.

Benjamin Turner sent in a pair of F-restrictions that have been implemented-- parens are required in empty subroutine argument lists and colons are required for type and attribute declarations.

Claus Flensburg sent in a useless warning that I've removed.

Peter Simon sent in a problem with the FDATE() intrinsic that has been fixed.

April 16

Jacques Lefrere sent in a spurious warning that has been fixed.

Joost Vandevondele sent in a regression where rank was no longer being checked in parameter assignments.

Mengjuei Hsieh sent in a mystery crash that vanished.

Antonio C. posted a query about inline arithmetic functions on the g95 newsgroup. These weren't being expanded to raw FP intruction under heavy optimization. I've added this and observed a 30% speedup in a test code sent by Joost (author uncertain). This happens if -ffast-math and -O are given.

April 15

Joost Vandevondele sent in a restriction on EQUIVALENCE that has been added. Joost also pointed out a problem with MAXVAL that has been fixed.

Roland Schilling, Walt Brainerd and Eric Kostelich pointed out a regression in FORALLs with substrings. The code Walt sent was actually Rich Townsend's iso_varying_strings module mentioned here a couple days ago.

Michael Richmond sent in a regression involving the result-not-set warning that has been fixed.

April 14

Édouard Canot pointed out a small bug in the double precision version of the isnan() intrinsic where it's input parameter was a real. The bug was harmless but has been fixed.

Michael Richmond found a bug in the implementation of the EXIT() call without an argument. The runtime library was not being shut down properly. Fixed now.

Bill McLean pointed out that assumed size arrays are not allowed under F. Fixed that.

April 13

John Dormand reported a problem with scratch files under cygwin, and David Miles sent a fix for the problem which has been applied.

Michael Richmond sent in a crash on the EXIT extension when the optional exit-code was missing that has been fixed. Michael also reports that the buffering fix attempt yesterday in fact works. He also sent in a problem with expressions in parenthesis that has been fixed.

Jeff Whitaker has updated the OSX fink package.

Bamrung Somswasdi and Xavier Leoncini pointed out that disabling SSE is not easy as it seemed. I've enabled it again, and added the SSE fpu as just another fpu to be set on initialization. The usual environment variables now set the same flags in both units on the opteron.

Joost Vandevondele pointed out an inaccurate warning message regarding equivalences that has been improved. Joost also sent in a bizzare constraint on free form continuation lines that has been implemented.

Matthew Halfant sent in a problem with a MinGW where it was complaining about being unable to link a nonexistent file. David Miles has fixed this problem too.

Rich Townsend has donated the ISO_VARYING_STRING module he wrote. There isn't a very good way to include this at the moment, but would be ideal for intrinsic modules (a f2003 feature).

Walt Brainerd sent in a problem with empty nonadvancing reads that has been fixed as well as a problem having to do with the permissions of scratch files on windows. Fingers crossed on the last one.

Juergen Wieferink reported a subtle problem with component arrays that has been fixed.

Édouard Canot sent in an off-by-one error that affected the exponents of denormals being converted into the backend (by a factor of two, of course).

Anders Silfvergrip requested implementing the F2003 NEW_LINE() intrinsic function. Done.

April 12

Douglas Cox continues to refine the manual.

Alfredo Ferrari pointed out that floating point exception handling wasn't working on the amd64. I reproduced the problem, and eventually found out the SSE floating point was being used. I've changed the configuration to use the x87, which is a better FP unit anyhow. When the gcc back end can generate parallel SSE intructions, a more permanent solution will be implemented.

He also assumed that the floating point exceptions produced a core dump. This is a pretty straightforward assumption, so I've added a G95_ABORT boolean that will cause core dump if the program ends abnormally.

Dale Ranta and Michael Richmond pointed out that the EXIT() extension wasn't generic to different kinds of integers. Fixed.

Michael sent in a spurious error having to do with fix to expression in parenthesis yesterday. I've fixed this along with reducing the amount of memory used at the same time. Michael also sent in a buffering problem under windows that is hopefully fixed.

Walt Brainerd sent in a problem where a temporary was required in a vector assignment because variables on the left and right were equivalenced with one another. Fixed.

Joost Vandevondele pointed out that the TRANSPOSE() intrinsic should be allowed in initalization expressions under strict mode. Fixed.

April 11

Douglas Cox pointed out that the TRIM_NAME argument of the GET_ENVIRONMENT_VARIABLE intrinsic was incorrectly INTENT(OUT) when it should have been INTENT(IN). Giovanni Bussi sent in a regression with AIMAG() that has been fixed.

Walt Brainerd sent in a problem with the RETURN statement that has been fixed, a problem with INQUIRE on nonattached units that is fixed, a tricky problem involving the resolution of use-renamed intrinsics that has been fixed. There was also a crash on a subroutine interface containing alternate returns that has been fixed.

Walt also sent in a subtle problem with paren-ed arguments that has been fixed.

Ron James sent in a problem with the IOLENGTH of complex values that has been fixed.

Alfredo Ferrari reported a problem with the fink build. Jeff Whitaker helped determine that it was a broken cctools installation that caused the problem. Jeff has updated the fink build.

Michael Richmond reported that the SLEEP() extension didn't work under mingw. I've added a windows-native call that ought to fix this.

Joost Vandevondele sent in a problem with array conformance in the PRODUCT(), SUM(), PACK(), UNPACK(), MINLOC(), MAXLOC(), MINVAL() and MAXVAL() intrinsics that have been fixed. Joost also sent problems with VERIFY() and TRANSPOSE() that have been fixed.

April 9

Alan Greynolds reported the FORALL regression that has been fixed.

Joost Vandevondele, Tim Hopkins, Joachim Geiger, Bamrung Somswasdi, Michael Richmond sent in a crash on related to me accidentally leaving in some memory leak detection code. I patched a couple of the leaks, except for one that only happened if the compilation terminated abnormally. Joost sent in a list of 33 short examples that failed, they all work now.

Walt Brainerd sent in regressions with ASSIGNed gotos and derived type alignments that have been fixed.

Douglas Cox found out that half the bessel functions were messed up. All of these take double precision reals, not default reals. Fixed.

Manfred Niesert sent in a problem with concatenation of substrings that has been fixed. Manfred also pointed out a pair of problems with ALOG() and CLOG() intrinsics under -r8 that has been fixed.

April 7

Joost Vandevondele and Charles Rendleman sent in FORALL regression that has been fixed.

Joost also sent in a regression with character functions that has been fixed.

Édouard Canot sent in an off-by-one error in RRSPACING() that has been fixed.

Michael Richmond pointed out a problem with the SIZEOF() extension that has been fixed. Michael also sent in a windows problem regarding deleting files on close that may or may not be fixed.

David Miles sent in a small patch that should prevent a spurious linker error under mingw.

April 6

Walt Brainerd pointed out that negative unit numbers weren't being flagged. I've added checks at runtime and compile-time for these now. Walt also pointed out that standard-conforming compilers have to have a method for warning about obsolete constructs. This has been added, it is -Wobsolete. The last regression he had involved null substrings and has been fixed.

Joost Vandevondele, Danny Lathouwers and Simon Geard sent in a problem with function return values where the kind parameter was defined in an use-d module. Fixed.

Douglas Cox sent in a problem with error line numbers that has been fixed.

Aurelio Bay sent in a problem with substrings that has been fixed.

Joost Vandevondele sent in a contraint on FORALL statements that has been implemented.

April 5

Joost Vandevondele reports that CP2K now compiles and runs correctly on OSX and IA64.

Édouard Canot pointed out a sign problem when multiplying regular numbers and infinities that has been fixed. Also fixed an analogous problem in division.

Michael Richmond sent a problem where the TRANSFER() array wasn't returning the size of the result. Fixed. Michael also sent in a crash on the EQUIVALENCE statement that has been fixed.

David Miles reported that the scratch file rewind problem looks like it is fixed on cygwin, and I've merged the changes in.

Many people reported linker problems with the cygwin build. Doug has built an updated version available now. Ian Gay reported a similar problem with the mingw that has hopefully been fixed as well.

Philippe Marguinaud sent in an off-by-one error for C-preprocessed files that has been fixed.

Harald Anlauf sent in a brainbending question regarding interfaces. We bounced it off of Richard Maine, who had some very constructive things to say, we but are still scratching our head on parts of it.

April 4

Joost Vandevondele sent in an alignment issue on OSX that has been fixed. As I've mentioned before, what crashes on OSX runs slow on x86, so fixing this crash means faster code on x86 machines. Joost also pointed out the new string bounds-checking code was flagging null strings that were outside the bounds of the string. I've removed this case.

Joost also sent in a problem with an array that had a upper bound of HUGE(0) that has been fixed.

Andrew Beddall reported a regression with unset/unused variables. They weren't being checked in program units. Fixed now.

Édouard Canot reported an arithmetic problem-- infinity times a nonzero number is now infinity again.

Kevin Fisher found a problem with the output of -M getting mangled. I couldn't reproduce this on linux, or on my osx build machine. We tracked the problem to some prematurely freed memory. This explained the totally os-dependent nature of the problem. Fixed now.

Doug Cox, David Miles and I exchanged numerous mails about the scratch file rewind bugs under windows. Not sure if it is fixed or not.

Doug also sent in a problem with overflows of case labels that has been fixed.

April 3

Kevin Fisher sent in a missed dependency in -M mode that has been fixed. There is another problem with names getting trashed that we are investigating.

John Harper suggested runtime checking for substring bounds. I've added this to the -fbounds-check option.

Douglas Cox sent in a regression in the INQUIRE statement that has been fixed.

David Miles, Michael Richmond, Douglas Cox, Ian Gay, John Dorman, Boyd Blackwell and possibly others have sent in reports that the scratch file bug, and bad RECL problem under windows wasn't fixed. I have a fix that might work this time now.

Douglas Cox and Victor Prosolin sent in problems with nonadvancing writes that I didn't think were problems (Joost Vandevondele sent one that was), but I did fix some previously undiscovered bugs in this area.

Joost Vandevondele pointed out that several constraints on equivalence variables were not implemented. A small overhaul of equivlance checking has been done. Joost also sent several miscellaneous problems with statement functions that have been fixed as well as a problem with derived types that have been fixed.

Michael Richmond sent in a problem with ASSIGNed GOTOs that has been fixed.

April 2

Giovanni Bussi and Philippe Marguinaud sent in a problem with the C preprocessor. Builtin and predefined macros were messing up the __LINE__ macro. Fixed.

Volkmar Klatt and George Bohannon sent in a crash on alternate subroutine returns that has been fixed.

Michael Gilbert pointed out that the common (and controversial) SIZEOF extension hadn't been implemented. Got this in now.

Vivek Rao sent in a spurious warning about an unused module variable that has been fixed.

Daniel Price pointed out at runtime array bounds checking could be improved. The new message comes out like:

At line 9 of file tst.f90
Fortran runtime error: Array element out of bounds: 101 in (1:100), dim=1

the name is much harder to put in because of array structure components and other weird cases.

Roland Schilling send in a bug in array simplification that has been fixed.

April 1

I had a wonderful April fool's joke planned, but in implementing it, I ended up hosing my system but good. The problem was a broken symbolic link to libc, which made things pretty hard to get anything done. After two hours of recovering from the backup, the fun sort of went out of the affair. Next year.

Joost Vandevondele reported that CP2K now compiles and runs correctly on AMD-64 platforms.

March 31

Joost Vandevondele sent in an array-related crash on the opteron that has been fixed.

Michael Gilbert pointed out that intrinsic aliases (extensions) to generic symbol names weren't generic themselves. Fixed.

Roberto Herrero requested the FDATE() extension. Added.

March 30

Joost Vandevondele, Charles Rendleman and Alan Greynolds reported a problem with array element association in argument lists that has been fixed. Another unfortunately decreasingly rare mid-day build.

Mark Hadfield reported that the getpid() extension was missing from the windows versions. After some confusion, mostly mine, the right file will be compiled in on the next build.

March 29

Vivek Rao pointed out that -fbounds-check wasn't documented on the documentation page. Added.

Michael Richmond sent in a problem under mingw, where opening a file gives an incorrect error about already being open. The method being used for unix doesn't work in windows, so I've had to implement an alternate method. Michael also pointed out that the GEGLOG() intrinsic extension wasn't being compiled under windows. Fixed.

John Dormand and Ian Gay pointed out a bug related to scratch files under MinGW, that I also think has been fixed.

Joost Vandevondele, Helge Avlesen and Michael Richmond sent in a problem with passing array elements that has been fixed. A regression from last night. This was so nasty that a rare, mid-day build was done.

Joost also pointed out a place where an uninitialized variable was being used, namely in the buffering override code. Dominique Dhumieres reported strange behaviour with respect to these settings which was probably affected by this.

Joost sent in a problem with the ASSOCIATED() intrinsic that has been fixed as well as a problem with generic interface resolution that has been fixed.

Reinhold Bader pointed out some lousy error messages that have been made much better.

Douglas Cox has been working on a g95 manual page, which is available in the windows versions, and in the unix versions as well as on the docs page.

March 28

Joost Vandevondele sent in a substring regression that has been fixed as well as a pair of array problems on x86-64.

Charles Rendleman sent in a regression having to do with arrays containing default initializations that has been fixed.

Norman Clerman sent in a regression in expression simplification introduced over the weekend. Fixed.

March 27

David Miles and Douglas Cox continue to work on refining the cygwin/mingw builds.

Andrew Beddall pointed out that the explanation for corefile resume could use a blurb about setting the ulimit to allow core files to be produced. Added that.

Matthew Halfant, Vivek Rao, Joost Vandevondele, Chris Neff and Roger Lee pointed out some problems with allocatable array components that have been fixed.

I think TR-15581 is fully implemented.

Pasa Guglielmo sent in a problem with assigned gotos and the -d8 switch that has been fixed.

Joost Vandevondele sent in a problem with LBOUND and UBOUND that has been fixed. Joost also sent in a problem with host association that has been fixed.

Vivek Rao sent in a counting problem with the items in list read that has been fixed. Vivek also suggesting printing out the name of a filename during an I/O error, if one exists. I've added this as well.

Bamrung Somswasdi and Rollin Thomas reported that their codes work now.

March 26

Chris Neff sent in a problem with FORALL that has been fixed.

Bill McLean sent in a bug with initialization expressions that has been fixed. Bill also pointed out that the CVS version of f2py, a fortran/python interface supports g95, as will the next full release.

March 25

David Schanen pointed out that it wasn't possible to read infinities or not-a-numbers in list or formatted input. I've added this capability, which is compatible with F2003.

Robert Lindebaum sent in a problem with vector subscripts that has been fixed. This also fixed a regression in the twelve-days program sent in by Robert and Douglas Cox. The twelve-days program was a little daunting to fix by itself.

Franck Reinquin sent in a problem with character substrings that has been fixed.

Rollin Thomas sent in a bug reading namelists containing arrays of derived types that has been fixed.

Rich Townsend, Vivek Rao and James Van Buskirk sent in a problem with specification expressions that has been fixed.

Doug Cox and I fiddled with the cygwin and mingw configurations. Things appear to be settling down in this area.

Michael Leonard sent in a mystery crash that mysteriously vanished.

March 23

Bart Vandewoestyne sent another -std=F bug, this one based on yesterdays fixes that have now been fixed.

March 22

Andrea Ferretti pointed out incorrect behaviour for INQUIRE on preconnected files that has been fixed.

Joost Vandevondele submitted a new screenshot that has been added to the main suite. The "bug hunter's victory" is quickly becoming an endangered species. Only it's image will be preserved from eradication.

Bart Vandewoestyne sent in another pair of F-issues that g95 will now complain about when -std=F is given. Intents are now required on all dummy arguments and all module procedures require access specifiations.

Bamrung Somswasdi pointed out a deficiency in the documentation of the corefile resume: the name after the '--resume' is the name of the corefile on disk. On some systems, this is 'core.' followed by a number that is the process ID of the original process. The documentation has been updated.

Doug Cox, David Miles and I have been working to make g95-compiled windows binaries portable to other systems which don't necessarily have the cygwin or mingw libraries present. The g95 runtime library uses a very minimal amount of unix calls. Most of these calls are already emulated by native windows libaries, and we've been working on replacing the more complicated functions with native windows calls. Michael Richmond has also been doing testing.

March 21

Kevin Fisher reported the successful build of the ModelE code. We're working on execution now.

Drew McCormack sent in a problem with vector subscripts that has been fixed.

Fernando M. Roxo da Motta reported a problem with compiling a file from standard input that has been fixed.

Joost Vandevondele pointed out a pair of error conditions that were not generating errors. Fixed.

March 20

The instructions for building MinGW are originally from David Miles, massaged by Doug Cox. We now offer a MinGW binary.

Michael Richmond found a case where a specific error message had been replaced by a very generic one. Fixed this so that the specific message is used.

Joost Vandevondele sent in a WHERE regression and a substring regression, both of which have been fixed.

Harald Anlauf sent in another spurious used/set warning that has been fixed.

Michael Leonard sent in a regression involving default values of structures that has been fixed.

Doug Cox, David Miles and I exchanged multiple mails on cygwin/mingw issues.

March 19

Giovanni Bussi, Bart Vandewoestyne, Peter Knowles, Roberto Herrero, John Gill, John Bray, Michael Richmond, Harald Anlauf reported a spurious error with duplicate interfaces. On the verge of getting a cold, I didn't test this one very well.

Michael Richmond, Warner Bruns and Douglas Cox reported a regression exponentiation that has been fixed.

Douglas Cox sent in some detailed instructions for building under MinGW, which I've posted. We exchanged a couple mails over the day, trying to get some of the bugs worked out of the windows versions of some of the intrinsics.

Michael Richmond sent in a problem passing null pointer array arguments that has been fixed.

Alan Greynolds, Norman Clerman and Martin Doege sent in a regression involving array initializers that has been fixed.

Harald Anlauf sent in a problem with the simplification of array constructors containing intrinsic functions with a single variable argument that has been fixed. Harald also sent in a spurious set-but-never-used warning for module variables that has been fixed.

Kevin Fisher pointed out that the -M switch, which normally generates lines for a makefile was not working. Added this.

Daniel Price suggested splitting the -Wunused-vars into a separate warnings for unused variables and unset variables, noting that using an unset variable is vastly more dangerous than setting an unused variable. I've added a new switch, -Wunset-vars which warns about, you guessed it, unset variables. The warning for unset and unused variables only happens if both warnings are specified, and -Wall sets both.

Günter Spahlinger sent a problem with the %VAL extension. Array elements weren't being passed by value. Got that fixed now.

Keith Refson sent in a subtle problem with nested WHERE statements that has been fixed.

March 17

Bart Vandewoestyne found a problem with -std=F. The F language assumes IMPLICIT NONE, but after consulting Walt Brainerd, this is accepted due to some editorial confusion. Fixed.

Harald Anlauf sent in a further regression with restrictions on pure procedures that has been fixed.

Karen Goodger pointed out a problem with exponentiation that has been fixed.

Josh Cogliati found a problem with contained procedures that has been fixed. Josh also reported that his codes work.

March 16

Peter Knowles pointed out that common blocks were ending up with weird alignments. I've set a default 8-bytes alignment in order that double precision reals be efficient.

Daniel Price pointed out that the stat() family of extensions was missing. I've added stat(), lstat() and fstat(), as they are implemented with g77.

Richard Maine pointed that one-trip DO-loops is actually compatibility with undefined behaviour in fortran 66 compilers, and not really f66. I've updated the documentation to reflect this.

Andrew Beddall pointed out that the F2003 GET_ENVIRONMENT_VARIABLE() subroutine was not implemented. Added it.

Benjamin Turner sent a problem with -std=F that has been fixed. It looks like about half of the F restrictions have been implemented.

Michael Richmond found a regression with pure procedures that has been fixed.

Andrew Grief suggested a "cool things g95 can do" web page. I've added this.

March 15

Roberto Herrero pointed out that compatibility with fortran 66 is sometimes desirable. I've added an -fonetrip option so that do-loops will be executed at least once.

Harald Anlauf pointed out a legal but poor formatting for the ES descriptor. The exponent was -1 for zero, but is now consistent with the other formats. Harald reports that his codes now work-- we've been working on that for a long time.

Michael Richmond pointed out a "write error" when reading a corrupt sequential unformatted file. I've changed it to a "read error".

Ian Gay reported the latest executables as smaller and slightly faster.

Philippe Marguinaud sent in a crash on the STOP statement that has been reduced to a syntax error.

Giovanni Bussi sent in a problem with default types in interfaces that has been fixed.

Joost Vandevondele sent in a set of regressions related to generic procedures that have been fixed.

March 14

Joost Vandevondele, Roberto Herrero, Jean-Baptiste Faure sent in a nasty regression with substrings that has been fixed.

Joost sent a regression with TRANSFER() that has no doubt been fixed in the last couple of days.

James Van Buskirk sent in a spurious warning in specification expressions that has been fixed. James also sent in a problem with TRANSFER() that has been fixed.

Roger Hooke reported a corrupt version of the cygwin binary. Doug Cox build a new binary that is now up.

Doug also sent in a problem with nonstandard namelists that has been fixed.

Harald Anlauf sent in a interface regression that has been fixed.

Michael Leonard sent the analogous regression in dummy procedure interfaces.

Peter Knowles sent in a subtle problem with F formatting that has been fixed.

Michael Richmond pointed out a crappy error message when writing too many bytes to a sequential access file. Improved this one and a few related messages.

Dave Miles sent in a problem with the %VAL and %REF pseudo-intrinsics that has been fixed.

Karl-Albert Breith pointed out that other implementations ignore the ENDFILE record and you let you read beyond it. I'm pretty sure I was talking to someone else about this recently, but I forget who. I've added a new environment variable G95_IGNORE_ENDFILE, which when true, ignores reads past the ENDFILE record.

Alvin Brattli sent in a set of issues that have long been fixed. Old mail that got overlooked.

Daniel Price: I suggested that you try -ffixed-line-length-132, but the mail I sent to you bounced.

March 12

Kris Kuhlman pointed out that the UNLINK() intrinsic extension wasn't implemented. I've added it.

Kevin Fisher pointed out that the subroutine version of the SIGNAL intrinsic extension was not implemented either. Got this now.

Warner Bruns also reported the problem with external dummy functions.

Giovanni Bussi sent in a pair of bugs in interfaces that have been fixed.

Aurelio Bay sent in a problem with concatenation of substrings that has been fixed.

Normal Clerman sent in a problem with the SIZE() intrinsic that has been fixed.

Harald Anlauf and Douglas Cox sent in a problem with TRANSFER() that has been fixed.

James Van Buskirk sent a separate issue with TRANSFER() that has also been fixed.

Jean Vezina sent in yet another issue with TRANSFER() that has been fixed.

Michael Richmond sent in a problem with assigned gotos that afficts only the worst spaghetti code. Got this fixed now. Michael also sent a problem with host association of specification expressions that has been fixed.

Joost Vandevondele pointed out a case where array conformance was not being checked. Added that.

Udo Grabowski sent in a crash that turned out to be an alignment problem on sparcs. This misalignment works on processors like x86's, but slows them down quite a lot. Got it fixed.

Rich Townsend sent in a mystery crash that mysteriously went away.

What a day. I'm afraid I've introduced some regressions, so I am holding off on new binaries until tomorrow.

March 11

Harald Anlauf, Michael Richmond and Charles Rendleman sent in a regression regarding calling external dummy functions that has been fixed.

Olivier Agullo pointed out that unbuffered I/O, set by the G95_UNBUFFERED_x, where x is a unit number was not working. Fixed.

Jeff Whitaker has updated the g95 fink package (link above).

David Miles sent in some updates for the windows side that have been applied.

March 10

Jim McDonald sent in a problem with logical namelists that has been fixed.

Joost Vandevondele sent in a tricky code that generated an error on g95. After some serious head-scratching we determined that the error was correct. Of the three other compilers Joost tested, one correctly flagged the error, another aborted with an internal error and the last produced an executable that segfaulted when run.

Jon Rotvig and Aurelio Bay sent in a problem with module procedures that has been fixed.

Michael Richmond sent in a problem with the RENAME() extension that has been fixed. Michael and I have exchanged some mails regarding automatic stack checking. This doesn't work in the stock gcc so it wasn't that surprising that doesn't work in g95.

Frank Muldoon sent a pair of mystery bugs that mysteriously work now.

March 9

Roger Hooke sent in a problem with flushing writes that I think may have been fixed by a change made a few days ago. His code seems to work now.

Paul Suckling sent in a problem with character parameters that has been fixed.

Norman Clerman sent in a code that two other, very solid compilers compiled without a hiccup. G95 flagged an error that turned out to be correct. Norman also sent in a bug dealing with elemental intrinsics that has been fixed.

David Miles sent in a patch for windows that calls native windows functions for things like cpu_time() and the like. I've almost got it integrated. Hopefully tomorrow.

March 8

Reinhold Bader resent the mail I accidentally deleted. The problem I fixed wasn't his, but I've got both fixed now.

Joost Vandevondele reports that CP2K is working again after multiple regressions.

Joost also pointed out that zero raised to the zero power wasn't consistent for all numeric types. Bill Kahan, in "Branch Cuts for Complex Elementary Functions" or "Much Ado About Nothing's Sign Bit" has such a wonderful comment on this:

"The function z^w has two very different definitions. One is recursive and applicable only when w is an integer: z^0 = 1 and z^{w+1}=z^w z whenever z^w exists. The second definition is analytic: z^w = \lim_{y\goesto z} exp(w ln(y)), provided the limit exists using the principal value and domain of ln(y). The limit process is necessary to cope smoothly with z=0. Since the recursive definition makes sense when z is a number or a square matrix or a nonlinear map of some domain into itself, regardless of whether ln(z) exists, the fact that both definitions coincide when w is an integer and ln(z) exists must be a nontrivial theorem. The fact that both definitions agree that z^0=1 for every z is doubly significant because programmers who have implemented z^w on computers have so often decreed 0^0 to be a capital offense."

It was my intention to do it this way from the start, but I was no doubt distracted.

Kevin Fisher sent in a subtle problem with ENTRY statements that has been fixed.

John Gill reported that his CFD code now works.

Jos de Kloe sent in a bug with TRANSFER() that has been fixed, I suspect a couple days ago in the multiple transfer fixes.

March 7

Mike Metcalf and Michael Leonard both sent in a (different) module procedue regression that was fixed yesterday.

Michael Richmond sent in a common block regression that has also been fixed.

Douglas Cox and John Harper sent in a problem with temporary memory remaining allocated during a TRANSFER(). Fixed. John sent in a separate problem with TRANSFER() that has also been fixed.

John Gill was trying to use G95_INIT_MEM to compensate for a code that assumed that allocated memory was filled with zeroes. The environment variable is a hexadecimal string, but didn't accept a standard '0x' prefix. Added now.

Reinhold Bader reported a problem with operator interfaces. I accidentally deleted his mail, but found a problem with user operator interfaces. I'm hopeful that this was the problem.

Joost Vandevondele sent in a regression having to do with passing arrays. Got this fixed again.

March 6

Norman Clerman sent in a regression involving modules procedures that has been fixed.

March 5

With some pointers from Dirk Nuyens, I've added a linux-alpha port of g95.

Kevin Fisher and Igor Aleinov sent in nasty problem with module equivalences that has been fixed.

Kevin also sent in a compiler crash on invalid code that has been fixed.

Kevin Thomas sent in a crash while passing arrays that has been fixed.

Shirrell Buhler, David Miles, Haralf Anlauf, Dale Ranta and probably others, pointed out that small negative numbers are printed as -0.00. This is a g95 extension, but I've added an option to suppress this if necessary. If you set G95_MINUS_ZERO to false, the leading minus sign will go away.

Arjan Koning pointed out that the function version of the SYSTEM() intrinsic extension wasn't implemented. Added.

Robero Herrero, Arnold Moene, Wilfred van Rooijen, Karen Goodger, Joseph Staudenmeier and Eric Hivon sent in various regressions with TRANSFER() that have been fixed.

Dave Offiler sent in a spurious warning having to do with temporary memory still being allocated after a call to EXIT(). It turned to be an array that was allocated on the heap due to its large size. This illustrated the impossibility of accurate memory checking during abnormal termination, which unfortunately includes STOP statements.

Mark Hesselink and Harald Anlauf requested some fairly standard predefined macros. These is a processor string, which can be __i386__, __sparc__, __hppa__, __x86_64__, __ia64__, __alpha__, __ppc__ and an operating system string which can be linux, solaris, irix, aix, freebsd, openbsd, netbsd, and cygwin. There are also generic __unix__ and __windows__ symbols.

March 4

Bart Vandewoestyne sent in a problem with NEAREST() that has been fixed.

Michael Richmond sent in a problem with include lines that has been fixed.

March 2

Derek Stewart reported a crash with the ABINIT package that turned out to be an uninitialized array index. Once fixed, the code works fine.

Bart Vandewoestyne sent in a problem with PRINT statements that has been fixed.

March 1

Bart Vandewoestyne sent in a problem with pointer arrays that has been fixed.

Jos de Kloe sent in a problem with CHARACTER structure components that has been fixed.

John Young sent in a problem with F formatting that has been fixed.

February 28

Dave Offiler sent in an interface regression that has been fixed.

Josh Hall reported the successful compile and execution of the GAMESS quantum chemistry package. Minor tweaking was required. Josh also sent in a spurious warning with format strings that has been fixed.

Harald Anlauf sent in an array regression that has been fixed.

Wolfgang Dobler sent in a problem with MERGE() that has been fixed. This regression was caused by the recent backend upgrade.

February 22

Douglas Cox, Mark Hadfield and Dale Ranta sent in a spurious common block error that has been fixed.

John Gill sent in a problem with -r8 and CEXP() that has been fixed.

Kjell Kolsaker sent in a problem with -d8 and scalarization that has been fixed.

Michael Leonard sent in a problem with initialization expressions that has been fixed.

February 21

Pascal pointed out that the can't-open-module error message didn't have any clue to where it was occurring. Fixed.

Douglas Cox, Joost Vandevondele and Michael Richmond reported that the CPU_TIME() intrinsic vanished. This was due to a library reorganization that will allow these intrinsics to be implemented under windows without cluttering the source with a bazillion #ifdef's. Fixed.

Joost also pointed out that GETCWD() was missing.

Harald Anlauf and Michael Richmond reported the analogous problem with GETENV(). Also fixed.

Michael Richmond sent in a pair of regressions, one dealing with Hollerith character constants in DATA statements, and another involving namelists referring to arrays in COMMON blocks. All fixed. He also request adding the RENAME intrinsic extension. Added.

February 2

Robert Pincus and Jeff Whitaker found a small bug in scalarization that has been fixed.

Peter Knowles sent in a problem with endfile records that has been fixed.

Michael Richmond sent in a very similar problem with endfile that turned out to be completely unrelated. This one is fixed too.

James Van Buskirk sent in a problem with defined array assignments and vector subscripts that has been fixed. James and Alan Greynolds also sent in a problem with the F descriptor formatting that has been fixed.

Roland Schilling sent in a mystery bug that I suspect was fixed a few weeks ago.

Joost Vandevondele sent in a missing constraint regarding module variables in equivalence blocks that has been added. Joost also sent in a problem with MAXLOC() that has been fixed along with a problem with specification expressions that is likewise fixed.

Mark Hadfield and I have been exchanging several mails about what looked like build issues on my end. After several tries, it looks like his code now works.

Dale Ranta sent in a code testing the exponentiation operator. The code failed under special conditions-- linux, osx, -d8. Got the whole thing working everywhere now, even with -d8.

John Bray sent in a regression on the concatentation operator that has been fixed.

Douglas Cox sent a problem with error reporting of a condition where a symbol was equivalenced between two common blocks. G95 only implemented a special case of checking, but this has now been generalized to arbitrarily complex sets of equivalences.

Gerald Cecil sent in a problem with specification function resolution that has been fixed.

Rich Townsend sent in an implementation of the ISO_VARYING_STRING module a while back that now compiles fine.

Dawson Deuermeyer sent in several IA64-specific problems that have been fixed.

Mark Voss and Don (?) reported that the SYSTEM intrinsic didn't work on the Windows. Doug Cox and David Miles have fixed the problem. The new binary contains the fix.

February 19

Damien Hocking reported that MUMPS passes the single processor tests. He is moving on to multiple processor issues.

Roger Lee sent in another nonaligned double problem on Solaris. Fixed now.

Mark Hadfield sent in a problem with COMMON blocks that has been fixed.

Dale Ranta, Simon Geard, Arjan Koning and other folks pointed out that support for Hollerith strings was a bit lacking. I've added more support for them. In particular, hollerith strings can be freely assigned to any data type.

Francois Jacq and Paul Suckling sent in a problem with ambiguous interfaces that has been fixed.

February 17

Roland Schilling reported that his code now works, after nearly two dozen bug fixes.

Pascal sent in a code that had multiple TR15581 issues that have been fixed.

Daniel Price sent in a array-sectioning bug that has been fixed. The bug was dormant on x86 linux, but caused a crash on OSX. Mimo and Joost Vandevondele sent in a regression that was probably the same problem (it crashed on x86 linux) that has also been fixed. Harald Anlauf pointed out a sucky error message. It sucks a lot less now.

Wilfred van Rooijen sent in a problem with character array formats that has been fixed.

Dylan Jayatilaka sent in a problem with PURE procedures that has been fixed.

Damien Hocking reports that a successful build of the MUMPS, a parallel solver of linear systems. He's now testing to see if it gives the correct results.

Pavel Sakov reports that some of the recent regressions against LAPACK have gone away. I've created an external definition for etime() and dtime(), since LAPACK and other packages seem to expect them that way.

James Van Buskirk and Joost Vandevondele sent in a problem with the REPEAT intrinsic that has been fixed. Joost pointed out that SCALE suffered from the analogous problem, also fixed.

Roger Lee sent in a problem with memory alignment on Solaris. This was a problem I introduced the other day when fixing a similar problen. Fixed everywhere now.

Roberto Herrero sent in a crash on substring references that has been fixed.

February 16

Alan Greynolds, Scott Rudin and Jean Brillet sent in a problem with a missing powf() function on OSX. Got this fixed now.

Wilfred van Rooijen sent in a problem with MAXVAL() that has been fixed.

Roland Schilling sent in a problem with the VERIFY() intrinsic that has been fixed.

February 15

Daniel Kressner reported success generating MATLAB .MEX files. The only thing you have to do is change one line in the mexopts.sh file:

FC='$HOME/g95-install/bin/i686-pc-linux-gnu-g95'  
Roland Schilling sent in a regression regarding the passing of array sections that has been fixed.

Gavin Salam sent in a TR-15581 problem with data transfer statements that now correctly errors out. He also reported that his QCD program is now producing sensible results.

Peter Knowles sent in a problem with SAVE statements that has been fixed.

Joost Vandevondele sent in a module procedure regression that has been fixed.

February 14

Claus Flensburg, Joost Vandevondele, Sergey Varlamov, Michael Richmond, James Van Buskirk, Peter Knowles, Owain Dillan, Thor Amdahl, Kevin Fisher, Eildert Groeneveld report various problems with ENTRY in all the various permutations. I think I've got it working now.

Joost and I have been exchanging mails regarding misaligned stacks on x86.

February 12

Roland Schilling sent in a crash on ADJUSTL() caused by the fix to Udo's ADJUSTL() problem from two days ago. The fix is fixed.

Albert Reiner, Joost Vandevondele and Douglas Cox reported that g95 was not checking array conformance between intrinsic operations. Fixed now.

Giacomo Mulas reports the successful build of his codes.

Charlie Zender reported some problems with netcdf on AMD64 which have been fixed. Netcdf now works on AMD64.

Reinhold Bader sent in a problem accessing allocated arrays within contained subprograms that has been fixed. Rheinhold also sent in a mystery link error that has gone away.

Che-Rung Lee sent in a crash on Solaris. It turned out that the runtime library was returning misaligned memory for doubles. On Solaris, this a bus error. On x86, it is a severe speed penalty, so things should be faster on those platforms.

February 11

Mark Hesselink reported some sloth in exponentiation that has been removed.

Carsten Lemmen sent in a small glitch that affected compilation on particularly anal C compilers that has been fixed.

Vivek Rao has created a newsgroup for g95. Read it all at Google G95. I'll browse occasionally.

John Bray has sent another spurious warning about unset variables that has been fixed.

Pavel Sakov sent some issues with LAPACK that have been resolved.

Joost Vandevondele sent in a problem with a memory leak during procedure calls. After the leak was fixed, it turned out that it was possible to do away with the copy-in/out altogether. This will speed things up.

February 10

Roland Schilling sent in a crash with character pointer arrays that has been fixed.

Sander Niemeijer and Kevin Thomas pointed out that the function versions of ETIME() and DTIME() weren't implemented. Got those taken care of now.

Daniel Price and Harald Anlauf sent in a problem with array sectioning that has been fixed.

Warner Bruns sent in a problem with ICHAR() on AMD-64 that has been fixed.

Udo Grabowski sent in a problem with ADJUSTL() that has been fixed.

Jeff Whitaker reported that the cause of the /dev/null deletion has been found and fixed for real.

February 9

Joost Vandevondele sent in a typo on the compilation notes page that has been fixed.

Giovanni Bussi sent in a problem with SELECT CASE that has been fixed.

Keith Refson, Daniel Heiserer and Sander Niemeijer requested some better support for the common ETIME() and DTIME() extensions. Added.

Jeff Whitaker reported that people were reporting /dev/null has been mysteriously vanishing when the fink-g95 package was building. It turns out this has been a known problem for gcc for months. Jeff narrowed the problem down an installation shell script. My own experience is that there are subtle changes to common unix tools that Apple has had to introduce due to the filesystem kludges on darwin (resource forks). Jeff ultimately added some code that recreates /dev/null in the case where it is deleted, and the fink package is back.

Volker Blum sent in a crash that has been fixed.

Francois Bissey sent in a crash dealing external functions that has been fixed.

Dale Ranta sent in a mystery crash which vanished.

Nicolas Gruel sent in a problem with an error message that has been improved.

Alan Greynolds sent in a problem with MAXLOC(). Fixed, along with the analogous problem in MINLOC(). Michael Leonard sent in a problem with PURE procedures that has been fixed.

February 7

Bill Mitchell sent in a problem with the documentation that has been fixed.

Jeff Whitaker built a new g95 fink package for OSX. It can be found here. Michael Richmond sent in a problem with ENTRY names that are the same as intrinsic functions that has been fixed. He also sent in a problem with external subroutines with the same name as intrinsic functions that has also been fixed.

Javier Platas sent in a problem with vector structure assignments that has been fixed.

Harald Anlauf sent in a problem with passing assumed length character arrays that has been fixed.

Keith Refson requested that the SIGNAL() extension be implemented. Done.

February 5

The new OSX upgrade requires a more current version of cctools than most people have. The current version can be found here. This upgrade was part of the reason I've held back upgrading the back end for so long.

Chris Hennes sent in a crash on the UNPACK statement that has been fixed.

Douglas Cox sent in a regression concerning intrinsics as actual arguments that has been fixed.

Dale Ranta sent in the analagous bug, except with module procedures instead of intrinsics.

Joost Vandevondele sent in a pair of regressions with assumed shape arrays that have been fixed. Joost also sent in a mystery crash that went away.

Bill Mitchell sent in problem with logical expressions of nondefault kinds that has been fixed.

Greg Sheard sent in a regression with allocatable array arguments that has been fixed.

Bill Szkotnicki sent in a crash on multiply-initialized common blocks that has been fixed.

Paolo Giannozzi and Carlo Sbraccia sent in an issue with FORALL that has been fixed. Paolo also sent in a mystery crash that is now gone.

Yunkai Zhou sent in a crash with DEALLOCATE that has been fixed.

Alan Greynolds sent in a problem with FORALL that has been fixed.

Stuart Midgley sent in a problem with TRANSFER that has been fixed.

James Van Buskirk sent in a problem with SELECTED_INT_KIND that has been fixed.

February 4

Dale Ranta, Alan Greynolds, Sander Niemeijer, Francois Bissey, Vi, Sun Un and Clovis Darrigan sent in problems fixed by the new OSX backend.

The new binary is up.

February 3

Joe Comfort, Wolfgang Dobler, Keith Refson, Michael Valin, Sebastian Franz, Brian Dushaw and Helge Avlesen reported the emit_move_insn crash on AMD64. This has been a longstanding problem that was hard to find, but mercifully easy to fix in the end.

Mark Hesselink reported a successful build of g95 under OSX with the new back end. I haven't been able to build it yet, because I need to do a minor upgrade of the build machine. Ironically, an #ifdef __APPLE__ had to be removed. He reported a sweet 10% speed increase and also that the new backend fixed another crash he had reported, which was another of my main reasons for upgrading the back end. I'm hoping this fixes a lot of the OSX issues that have been queued for a while.

Ian Gay tried compiling his codes again with the new back end and found that compile time has sped up, run time has sped up and code bloat is way down, by about 30%(!). Things are really looking good.

Jacques Lefrere pointed out a bogus warning for initialization expression with -std=2003 was in effect. Fixed.

Giovanni Bussi sent in a problem with -r8 that has been fixed.

Joost Vandevondele sent in a set of problems with SELECT CASE, do-loops and expression under optimization that have been fixed.

Michael Richmond sent in a problem with ENTRY function results that has been fixed.

February 2

Karl Breith found the same problem that Harald did with BLOCK DATA units yesterday.

Michael Richmond pointed out that g95 doesn't build from source any longer. This was me forgetting to update the compilation notes page. This weekend's backend upgrade changed the build instructions slightly. Michael also sent in a problem with the SIGN() intrinsic that has been fixed.

Fernando Roxo da Motta reported success with the CWP/SU seismic codes.

Albert Reiner sent in a problem with character array constructors that has been fixed.

Phil Stuart reported success with his codes.

Harald Anlauf sent in a spurious warning about the result from an ENTRY function not being set. Fixed.

February 1

Bill McLean pointed out an error with the f2003 get_command_argument() intrinsic. The output argument weren't marked as INTENT(OUT).

Günter Spahlinger has built g95 under Interix. Download a trial version here. installation notes are:

The archive should be extracted in /opt/g95
Then the following link should be established:
/bin/g95 -> /opt/g95/bin/i586-pc-interix3-g95

Eizi Toyoda and Glen Beane have reported successful builds of g95 on PPC-linux.

Dirk Nuyens reports a successful build of g95 on alpha-linux and success with CUBPACK.

Harald Anlauf sent in a problem with BLOCK DATA program units that has been fixed.

James Amundson reports success with the Synergia beam simulator. Doug Cox discovered a pair of problems in the configuration of the new windows build that have been fixed. Hopefully we will get this up tommorrow.

Joost Vandevondele sent in a problem with the array sections that has been fixed.

Phil Stuart sent in a problem with byte-swapped I/O that has been fixed.

Keith Refson sent in a regression with allocatable character arrays that has been fixed.

January 31

Keith Refson, Joost Vandevondele, Paolo Giannozzi, Jon Rotvig and Mark Hadfield reported a bug with the new back-end. The loop unroller was having problems unrolling loops. The problem turned out to be how g95 was defining logical values internally. This upgrade went smoother than the last ones, which is a very good sign.

Joost also sent in a mystery crash, possibly the same issue.

Shirrell Buhler reports complete success with the PSTAT statistics package.

Warner Bruns, Yong Duan, Michael Richmond and Helge Avlesen sent reports of crashes in the AMD64 port. These are all crashes in the emit_move_insn subroutine. The new back end fixes about half the ones reported. I am working on finding out why the other half still fails.

January 30

Francois Jacq sent in a crash on non-ascii characters that has been fixed. He also sent in a mystery crash which vanished before I could really look at it.

Rheinhold Bader also sent in a mystery crash that no longer crashes.

Teodoro Laino and Joost Vandevondele sent in a pair of codes derived from the same program that crashed. One turned out to be a mystery crash, the other involved fixing a bug in scalarization.

Paolo Giannozzi, Keith Refson, Carsten Lemmen, and Michael Richmond sent in an optimization problem on x86 that has been fixed by upgrading to a new version of the gcc back end. Not all platforms have been updated yet. AMD64 and OSX have quite a few issues that I hope this resolves.

January 29

Glen Beane found a situation where the -ffixed-line-length-132 wasn't being correctly handled, leading to some serious confusion.

James Van Buskirk sent in a problem with the VERIFY() and SCAN() intrinsics that turned out to be the analog of the recent INDEX() problem. James also found a crash with the MERGE() intrinsic that has been fixed.

Vivek Rao suggested a warning for implicit type conversion, based on a discussion originally in comp.lang.fortran. I've added the warning -Wprecision-loss which warns of precision loss in implicit type conversions.

Shirrell Buhler pointed out that the strict type checking when printing formatted variables to character descriptors is sometimes not desirable, particulary in legacy codes. I've added a flag, -fsloppy-char that prevents these checks from happening. They're still on by default.

January 28

Francois Jacq sent in a crash associated with using -fbounds-check which has been fixed.

Brian Foote inquired about the format of the error messages produce by g95 in order to make it compatible with the PHOTRAN IDE.

Shawn Matott reported a problem with ACHAR() that has been fixed.

Mark Hesselink pointed out that the .fpp extension didn't work. I had to add it in one more place. Fixed.

Vivek Rao sent in another spurious used/set warning that has been fixed.

Ian Gay sent in more research on the bloat in g95-produced codes. He compared the sums of the sizes of stripped object files compiled by g95 and g77. This let us separate out the difference between object file bloat and library bloat.

Compiler exe size sum of .o's exe - .o's
g95 904704 793060 111644
g95 -O 446464 328336 118128
g77 327680 286708 40972
g77 -O 268288 227604 40684

It turns out that the new gcc back end generates really bloated code for -O0 and even larger object files for -O. The size of the runtime libraries sticks out pretty clearly here, but it's only an extra 70k about libf2c. It looks like the new back end has a ways to go yet.

January 27

Michael Richmond, Bruce O'Neel and Shirrell Buhler reported an error with EQUIVALENCEd variables that has been fixed. The bug only bit when linking two or more files with an equivalence, and was a regression introduced when fixing equivalence blocks within modules.

James Amundson reported a regression with module equivalences that has been fixed.

Daniel Price and I have been exchanging mails about a real subtle memory management problem. The problem turned out to be within his program, but g95 was not reporting out of bounds for array sections. This has been added now. There was also a problem with passing array sections that has been fixed.

Ian Gay and I have been exchanging some notes about the bloat in g95 executables. Others have mentioned this as well. I suspect the library is to blame and have some ideas to put this in place.

Martien Hulsen has been investigating the speed of the DOT_PRODUCT() intrinsics and has determined that other implementations get large speed advantage by expanding the calculation inline instead of calling the appropriate subroutine. To do.

Joost Vandevondele also did some speed-related experiments recently. We figured out that there are some cases where doubles end up unaligned on x86, causing a speed hit. Joost is off at a conference this week, so this has been on hold.

Silvio Gori sent in a problem with modules that has been fixed.

Per Lundow and Francois Bissey sent in a pair of problems with simplification of specification expressions that have been fixed.

January 26

Roland Schilling and Carsten Lemmen reported that the real version of the MODULO function vanished from the runtime library. This happened a couple days ago when it looked like a problem with MODULO was in the library. It wasn't.

Silvio Gori sent in a problem with an option array argument to MAX() which has been fixed.

Joost Vandevondele sent in a regression related to a warning I added the other day regarding function results that weren't set. The warning ended up causing a crash later. Joost also sent in a problem with derived types containing large arrays that has been fixed.

Günter Spahlinger and I have been exchanging mails regarding fpu traps under Interix. He came up with a really slick hack for handling floating point traps that we're discussing.

Thomas Evans pointed out that the -fmod= option, which puts module files in a particualar directory, did not also add that directory to the list being searched for modules. Added that.

Harald Anlauf and Thomas Evans pointed out that requiring commas in format strings is unnecessarily strict. While they are required by the standard, I agree and have removed the requirement except in strict f95 mode.

Jim McDonald sent in a pair of problems with implied sections in namelist arrays and null elements that have been fixed.

John Young sent in another problem with used/set variable warnings that has been fixed.

David Miles in a problem with the -fno-underscoring option. Turned out that the MAIN symbols wasn't aquiring an underscore, which prevented a program from linking correctly. Fixed.

Array performance results continue to trickle in. The average is still around a 10% increase.

January 25

Charles Rendleman sent in a code that was causing g95 to go into an infinite loop because of some memory corruption caused by a double free().

David Miles pointed out some missing options used to compile some legacy g77 apps. I've added -fcase-upper and -fleading-underscore, which should compilation of those apps.

Grep Wimpey reported a bug with ENTRY and explicit arrays that has been fixed.

Roland Schilling sent in a problem with pointer arrays that has been fixed.

Doug Cox has built a new windows binary and the current source is now up as well.

January 23

Doug Cox sent in a problem with LBOUND() that has been fixed, along with the analogous problems in UBOUND() and SHAPE(). Doug also pointed out that there was no warning about unset function result variables that has been added. Doug also sent in an issue with namelists that has been fixed.

January 22

Per Håkan Lundow sent in a problem with derived types containing arrays that has been fixed.

Carsten Lemmen and Douglas Cox reported a regression with assigned labels that has been fixed.

Douglas Cox sent in a corner case with MODULO() that has been fixed, as well as a pair of problems with characters arrays, also fixed. Doug also sent a problem with MINLOC and MAXLOC that have also been fixed.

Joost Vandevondele and Charles Rendleman sent in a problem with pointers to derived types (Joost) or arrays (Charles) that has been fixed. Joost sent in a problem regarding assumed length character parameters that has been fixed as well as a separate problem involving character array returns. There was one more problem with a COMMON blocks and PURE procedures. All fixed.

Roberto Herrero sent in a problem with pointer array arguments that has been fixed.

Massimo Bonavita sent in a mystery problem that mysteriously vanished before I could figure out what it was.

James Van Buskirk sent in a problem with the INDEX() intrinsic that has been fixed. James also sent in a pair of problems with the SIZE() and SHAPE() intrinsics that have been fixed.

Reynold Zuil found a problem with INCLUDE lines that has been fixed.

Vivek Rao sent in a problem with allocatable functions that has been fixed.

Grep Wimpey sent in a subtle problem with derived type pointers that has been fixed.

January 21

Francis Dalaudier pointed out that the install documentation still claimed that a symbolic link was necessary, a limitation that was removed last month. Removed the sentence.

Günter Spahlinger reported a successful build of g95 on Windows with the Services for Unix wrappers.

January 20

Giacomo Mulas, John Dormand, Joost Vandevondele, Roberto Herrero, Yunkai Zhou, Roland Schilling, Daniel Price and Norbert Schorghofer sent in several problems with array handling introduced last night. All fixed. I hate to lump everyone in like this, but it is sometimes awful hard to tell which code fragment was exercising what problem.

The array issues appear to be settling down nicely. Several people have sent in performance statistics for a wide range of codes. The speedups are anywhere from none to about fifteen percent, which an average of around ten. Some outlying cases still remain where g95 generates not-so-optimal code. Working on those.

David Gay sent in a problem with, gahhhgg, assigned gotos and entry statements that has been fixed. The best line of the letter was "This wretched example is much simplified from some real (horrid) code...". After I sent the mail back to him, I realized that he is an author of a paper I've been reading in connection with g95 (a future upgrade) and ended up finding out that he is also one of the authors of f2c.

To ease porting, g95 follows the calling convention of g77 (where possible) and g77 follows f2c. I finally got the answer to some longstanding 'why' questions about the calling convention.

Per Håkan Lundow sent in a subtle problem with the RANDOM_NUMBER() intrinsic that has been fixed.

January 19

Vivek Rao reported winning a Sony Playstation 2 after submitting a link to g95 to a list of fortran links. Vivek donated US $250.00 last year, which is very close to the retail value of the PS2. He considered sending it to me, but did not want me distracted from g95. I agreed, I am already an accomplished player/addict of BZFlag. When I get the Guided Missile flag, I know how to use it.

Greg Wimpey, Yunkai Zhou, Laurent Debreu, Carsten Lemmen, Dale Ranta, Giacomo Mulas, Joost Vandevondele all sent in a problem with passing array elements in parameter lists. This has been fixed, even for the trickiest cases.

Jon Rotvig sent in a problem with automatic allocation that has been fixed.

January 18

James Van Buskirk pointed out an off-by-one problem in the PRECISION() intrinsic. James also sent in a problem where logical constants weren't being created as the default kinds. Things worked fine for kinds one and two on the little-endian x86, but failed miserably for kinds=8. Correct-sized variables are created now.

Joost Vandevondele sent in a problem with COMMON blocks that has been fixed. He also sent an ordering issue in an error message that has been reversed and a problem with optional arguments that has been fixed.

Karl Breith and Michael Richmond pointed out that reopening a file with a status of UNKNOWN wasn't working. I think it's something nonstandard that people expect, so I've re-enabled it.

John Harper sent in a problem with CMPLX that has been fixed.

Per Lundow sent in a problem with PARAMETER statements that has been fixed.

Roland Schilling sent in a subtle problem with the MOD() intrinsic that has been fixed, as well as a problem with internal reads that is also fixed.

Michael Richmond sent in a pair of problems, one with assumed length character variables and the other with pointer array assignments. Fixed.

Mark Dotson sent in a problem with MAX() that has been fixed.

Dale Ranta sent in a mystery problem which mysteriously vanished.

Markus Mottl also sent in a mystery problem which mysteriously vanished.

January 17

Douglas Cox sent in a problem with the INQUIRE statement that has been fixed.

Mark Hadfield sent in a problem with COMMON blocks that has been fixed.

January 15

Array stuff is complete. Finally. There are probably bugs remaining, but I don't know of any at the moment. I'd appreciate before and after timings to get an idea of how things stand on various codes and if this really did speed things up.

Henk Krus sent in a problem with allocatable arrays that was fixed in the speed upgrade.

Michel Valin sent in a problem with pointer arrays in common blocks that has been fixed.

Pierluigi Monaco and Dale Ranta sent in a problem with the MIN() intrinsic that has been fixed. Pierluigi also pointed out an ambiguity in the warning message about set and never used variables that has been clarified.

James Van Buskirk sent in a problem with parsing substrings of array references that has been fixed. He also sent in a problem with the EQV and NEQV operators that has been fixed as well as a problem with MERGE() that is likewise fixed.

Donald Fredkin reported a problem with TRANSPOSE() that has been fixed.

Mark Hesselink pointed out that .fpp and .FPP are common extensions for fixed form files requiring C preprocessing. Added this.

January 10

Peter Schlüssel sent in a US $25.00 gift certificate for the Four Peaks Brewery. I went and looked and they've totally redone their website for the better. Gift certificates can now be purchased online, so if you've ever wanted to buy me a beer, it just got a whole lot easier. Most of the more complicated parts of g95 have been designed over an Hefeweizen and a plate of beer cheese bread at Four Peaks.

The array work continues. I've got everything back together and am working through the more obvious bugs introduced in the rewrite. Quite a backlog has built up, and I hope to attack it soon.

January 8

The other day, I was flipping through Paul Graham's recent book Hackers & Painters which draws many analogies between painting and writing computer programs. One of the plates was a painting by Leonardo da Vinci of a lady in front of a bush. Graham pointed out that a lesser painter would have simply blobbed a bunch of paint for the bush, letting the eye fill in the details, but Leonardo painted every leaf individually.

Writing g95 has been one of the most creative things I've ever done. I feel like I am drawing leaves.

January 7

Array mods are nearly complete. I'll hopefully get a new version up sometime this weekend. I'm very pleased with how this code is looking now.

January 2

Back from vacation. I've rolled over the blog, so it ought to load a lot faster than it has been loading in the past couple of months.

2004 was an amazing year for g95. An incredible amount of progress has been made and the end is finally in sight. I looked back through my mail, and I sent over 2500 mails last year, the vast majority having to do with g95. I've decided on the criteria for a 1.0 release, which will hopefully be met soon.

An increasing number of people tell me that g95 is compiling codes that few other compilers can. Thanks go to everyone who helped.

I had a chance to do some minor revisions during the vacation, things no one should really notice. In the process, I opened up a can of worms that I've been meaning to open for a while now-- speed enhancements related to array handling. It's a bigger job than I thought and other pending issues are on hold for the moment.