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 -
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-
g95 in order to run g95.

December 21

Richard Otero sent a pound of some really high-grade Scharffen Berger chocolates. Thanks!

December 20

Only in my alternate reality is 'shortly' three months... Patrick sent some extremely yummy chocolates, all the way from Switzerland.

James Beard sent a gift certificate for Four Peaks, my favorite brew pub. That'll have to wait a little more.

Thanks guys!

September 30

I shall return shortly.

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

June 23

Henrik Holst pointed out a path problem with the Debian build. Doug Cox has it fixed.

Michael Richmond sent in a subtle problem with pointer interfaces that has been fixed.

June 17

Doug Cox has built some new windows builds.

I've had a chance to make a new batch of fudge with the first bit of Abraham Agay's chocolate. The result has a different texture than what I'm used to and seems a bit more rich, even though I carefully used the usual proportions of ingredients.

June 16

Ian Harvey pointed out that nonelemental references have priority over elemental references when resolving generic procedures. Fixed.

June 13

Giorgio Pastore found a problem with exponentiation and kind=10 reals that has been fixed.

Abraham Agay sent in a batch of chocolates, all the way from Israel, too. Thanks Abraham!

June 3

Abraham Agay reported a problem with checkpointing on x86-linux that has been fixed.

June 1

Jared Ahern sent in a yukky problem involving deallocating variables with allocatable coarray components that have allocatable array components... Fixed.

Doug Cox has built some new windows builds.

Jürgen Reuter sent in a spurious error with procedure pointers that has been fixed.

Reinhold Straub sent in an example of incredibly illegal procedure pointer code that caused a crash. Got this fixed now.

May 26

Reinhold Straub sent in a crash on an invalid I/O statement that has been fixed. Reinhold also sent in a procedure pointer bug that went away, probably one of the ones below.

May 21

John McFarland sent in a problem with derived type component procedure pointers that has been fixed.

Mark Wieczorek sent in a problem with minval/maxval and not-a-numbers that has been fixed.

May 20

Alison Boeckmann pointed out a problem with large object files under OSX that has been fixed.

May 12

Michael Richmond and Matthew Needham reported that the x86-64 build reverted to the old suse vendor name. Fixed that, hopefully for the last time.

Matthew also reported that the weird crash that has been affecting the x86-64 version is now gone.

May 7

Doug Cox has built some new windows builds.

Michael Richmond sent in a mystery crash which has vanished.

May 6

Jonathon Klay sent in a broken link on the web page that has been fixed.

Finished some enhancements of the build system. In particular, the x86-64 build should work correctly now.

May 5

Matt Cross sent in a crash dealing with INTERFACEs that has been fixed.

Michael Richmond sent in another SIZE() regression, this one caused by last night's fixed. Hopefully all is well here now.

David Schanen sent in a problem that has vanished...

Jürgen Reuter sent in a problem with procedure pointers that has been fixed. Other people have argued the same point Jügen has, but he included a nice example that sliced my usual counter-argument to bits.

Started work on updating the build system... got too tired, did the x86-64 manually.

May 4

Michael Richmond and Jürgen Reuter sent in a regression for the SIZE() intrinsic. Fixed, along with the corresponding problem in LBOUND() and UBOUND().

John McFarland sent in a nasty crash on module interface namespaces that has been fixed.

I've started a rewrite of FORALL. Under certain circumstances, it doesn't do the right thing...

Walter Spector reported a crash-on-execution of g95 that several others have reported recently. Walter narrowed it down to an incompatibility between versions of libc. We're investigating further.

I plan to purchase an x86-64 system soon, which should fix this problem for good. The purchase is contingent on no new large expenses and things seem to be working out. Over the last week I've replaced a sink, three faucets and rebuilt two toilets. My dad did a bunch of electrical work that included grounding many ungrounded outlets, a dining room chandelier and two bathroom lights. Thanks Dad! The hot water heater seems to produce hot water ok, and for the first time I've left the water on overnight at the new place, since my plumbing seems to be holding. The only real hurdle left is to make sure the refrigerator works well enough, and I only had enough time tonight to kill the toxic mold that had taken hold inside of it.

May 1

Michael Richmond and John McFarland sent in a couple of regression involving LBOUND, UBOUND and SIZE. These are used internally to support scalarization, and even TRANSFER(). All fixed.

Walter Spector pointed out a problem with allocatable array components and structure constructors that has been fixed.

April 30

Doug Cox has built some new windows builds.

Reinhold Bader pointed out that the SIZE intrinsic did not allow a KIND optional argument, a 2003-ism. Added this, along with kind support for the SHAPE, LBOUND and UBOUND intrinsics.

The x86-64 build has been hosed for several days now. The machine was turned off. I turned it on earlier today, but now it spews nonsensical warning messages, and I can only log into from certain machines for some unknown reason. Working on it.

April 29

Édouard Canot and John Reid pointed out a regression involving deallocating derived-type allocatable arrays inside of coarrays that has been fixed.

Édouard also sent in a nasty regression involving coarrays accessing remote descriptors that has been fixed.

April 27

Michael Richmod sent in a regression that has been fixed.

April 23

Sven Handschel found a problem with statement constructs and modules that has been fixed.

April 22

John Harper pointed out an off-by-a-factor-of-two problem when reading kind=16 denormalized numbers that has been fixed.

I've also fixed a pair of distinct bugs when multiplying denormalized kind=16 numbers.

April 21

Silvio Gori found a problem with common block names conflicting with function names that has been fixed.

April 17

It's over.

It's mine.

April 2

G95 has been getting a very short shrift lately. I'm currently involved in purchasing some property, and for those of you who have done it, you know that this can be a very draining experience. It isn't like any one thing is particularly hard, but it is just wearing me down. It's been getting worse lately.

I'm a week and a half away from closing, and only one potential snag remains, some disclosure issues. It turns out that asking politely for something in a real estate transaction isn't the way to get things done. The right way is to figure out what part of the purchase contract is being breached, and bringing a letter to the broker informing the other party of the breach. That got them in a real lather, and got them in the mood to get things back on track.

The relevance to the blog is not just the lack of work on g95, but on my address. People do express their thanks with occasional gifts, and I'm going to have a new address soon. Knock on wood.

March 26

Michael Richmond found another problem with yesterday's fix. I've got this fixed now.

Petr Mayer sent in a polynomial for use with kind=16 sines and cosines. I gave it a whirl and ran into some snags. We're continuing to exchange mails.

March 25

Michael Richmond sent in a regression with the procedure pointers to intrinsics that has been fixed.

Bill McLean suggested a warning for nonstandard descriptors in -std= mode that has been implemented.

I realized something today: one way you can tell that your city is really hurting for money is when the monthly sales tax returns start showing up two weeks earlier than they have been in the past...

March 23

Harald Anlauf sent in a problem with procedure pointers to intrinsics that has been fixed.

John Harper pointed out that IEEE_VALUE() was not supported for kind=16 reals. Added that, along with IEEE_CLASS() for kind=16 reals.

March 14

Bo Einarssom pointed out that C_BOOL wasn't defined correctly. Fixed now.

Doug Cox has built some new windows builds.

March 12

Michael Richmond pointed out that while the vendor of the linux compiler was correctly renamed to 'unknown', the library was not. Fixed.

March 11

Bob Numrich sent in a problem with allocatable arrays that has been fixed.

Matthew Needham pointed out that the linux version was being given the version-name i686-suse-linux-gnu-g95. Although it is indeed being built on a Suse box. I've got it back to i686-unknown-linux-gnu-g95.

Clive Page has created some helpful tips on using PGPLOT on windows XP that we now link to.

Bill McLean sent in a problem with abstract procedure interfaces that has been fixed.

March 10

Definitely lucid today.

Doug Cox has built new windows builds.

Arjan (no last name given) sent a $50 gift certificate for Four Peaks, a local microbrewery, through the contribution page on I like doing design work at Four Peaks over a beer. Thanks Arjan!

I spent some time today trying to figure out how to build configure gcc such that it will generate x86-64 instructions on x86-64 osx boxes. No joy. If anyone knows how to do this, please let me know...

March 9

Feeling better. Can move around now.

Yves-patrick Pellegrini pointed out that MINVAL/MAXVAL were not implemented for kind=16 reals. Got that implemented now.

John McFarland reported a problem with procedure pointers that has been fixed. John got a crash at runtime, I got one of the most bizarre errors I've ever seen-- a report from the shared linker about the current executable. Fixed now...

March 8

Sick today, and yesterday. Can't take a full breath, feeling a little woozy and drinking incredible amounts of water. I've found that it's best to remain as motionless as possible. Today is better than yesterday. I can concentrate of simple tasks today.

March 5

Still struggling with the big_shift_left(). It's almost working... I hope.

March 4

Doug Cox has built some new windows builds.

More work on floating point optimization. The problem of the last couple of days is on the subroutine that shifts bits in a bignum, which is an array of 64-bit long longs. The shift is by an arbitrary number of bits. On x64-64, this was easy to do, since the word sizes are 64 bits. On x86, the shifts operate on 32 bits at a time, so things are awkward. Almost got it working, but not quite.

I've realized that the hard part of all this is because I want the code to be as fast as possible. This means that I don't want to add instructions, and if it becomes obvious that another instruction is necessary, I always try to back up and figure out a way to avoid the new instruction. Obviously, this has to stop at some point if there is to be forward progress.

March 3

Continued work on optimization of floating point printing. Assembler is much harder to write when you are writing it to be as fast as possible. Also continued investigating methods for quad precision sine and cosine. A rational approximation is totally not going to work. CORDIC looks like it has about half the multiplies of evaluating the series.

February 27

Subrata Ray sent in a problem with passing coarray array arguments that has been fixed.

February 23

Spent a couple hours on F2003 IEEE support. It's mostly there already, but F2003 requires some things I wasn't expecting to do when I wrote the original code. This is particularly nasty because it requires rewriting some inline assembler on the half a dozen different processors that g95 supports. Cough, powerpc, cough.

I've also given some thought as how to implement transcendental functions for quad precision arithmetic-- things like sine, cosine, exponentials and logarithms. I have a plan. I've salvaged some code that I'd originally written for the quad-precision ascii-to-float code. It's essentially a class library for high precision floating point. Very easy to write given arbitrary precision integer. I thought about using GMP, which is what g95 used years ago, but speed is not that essential and ease of use is.

February 19

Francisco Fadrique sent in a nasty combination of crashes and memory leaks having to do with derived types with allocatable components that has hopefully been fixed.

February 18

John McFarland sent in a crash for a semi-legal function pointer target that has been fixed.

February 17

Tim Bishop sent in a patch that fixed the $DESTDIR handling within the makefile.

Subrata Ray pointed out that scalar coarrays were not correctly initialized by a DATA statement. Fixed.

Maarten Becker reported a problem with MAXLOC that has been fixed. Turned out to be a regression on x86-64 only. Several other people reported the same bug, I think.

I've started some work on F2003 IEEE support for rounding and signalling. Had to back it out-- it looks like this has to be an all-platforms-at-once upgrade.

February 16

Ian Harvey sent in a problem with the MOVE_ALLOC intrinsic that has been fixed.

February 4

Bob Numrich sent in a problem with deallocating scalar coarrays that has been fixed.

I've continued working on assembler for print reals. It's slow going. It's also a little discouraging to spend hours writing an debugging some assembler with multiple cases and fencepost problems, only to run it and discover that your assembler is three times slower than the C version. But, then you cheat, look at the assembler generated by the compiler, and see how it's faster.

I didn't mention it in the last post, but the assembler is for x86 and x86-64. I'm really starting to like the x86-64 very much-- lots more registers and 64 bits.

February 3

Doug Cox has built some new windows builds.

January 29

Andrew Beddall kindly provide access to his system, which allowed me to trace the crash when printing kind=10 and 16 reals. The problem is fixed. The speedup was about 3%. I've already got some better code lined up and more optimizations planned-- I think 10-20% isn't out of the question.

January 28

Bob Numrich sent in a problem with multiple co-dimensions that has been fixed.

Andrew Beddall reported a crash in printing floating point numbers. I've been working on augmenting the formatter with some assembler on x86 and x86-64 to speed it up. I removed the optimized code and the crash vanished. We're investigating further.

January 15

Reinhold Bader sent in a crash when using array constructors with the NOTIFY statement. Fixed analogous problems in QUERY and SYNC IMAGES.

January 14

Doug Cox has built new windows builds.

Michael Richmond pointed out an ssh problem with the coarray console that has been fixed.

Tom Hanika sent in a problem with calculating the exponential of minus infinity at compile time that has been fixed.

Subrata Ray pointed out a problem with dummy coarrays that has been fixed.

January 12

Andrew Beddall pointed out a problem with negative integer exponents for kind=16 reals that has been fixed.

Late build today, network troubles.

January 11

Francisco Fadrique pointed out that call graph profiling had disappeared. Got this fixed now.

January 10

Bob Numrich sent in a coarray problem that seems to have benefitted from the fix to Subrata's code as well.

January 7

Subrata Ray discovered a problem with the calculation of upper bounds for coarrays with more than one codimension that has been fixed.

January 6

Had some problems with the website over the Christmas holiday. When I re-upped with my ISP, they decided I needed to prove my identity again. This was a little awkward, but it's been sorted out now.

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

Francisco Fadrique sent in a memory leak that was a regression from a couple weeks ago that has been plugged. Had to do with allocatable derived types in defined assignment as an actual argument.

John McFarland sent in a problem with ABSTRACT interfaces that has been fixed.

Michael Richmond sent a gift of $1000.00, right before Christmas. I plan to use it to buy a new x86-64 system, since the system in the build cluster is sometimes unavailable. My large monitor is progressively destroying the video card on my old x86 motherboard by forcing it to run too hot and fast. Thanks Michael!