J3/04-137 Date: 17 Dec. 2003 To: J3 From: Dan Nagle Subject: Documenting Compiler Versions One compiler (CVF) used to have a batch DOS file to be executed to generate a set of information to be copied-and-pasted into a bug report. It would be handy if similar information were available in a standard way. Not only bug reports, but benchmarks and verification tests all benefit from knowing exactly which compiler was used. Standardizing access to this information makes Fortran a more attractive choice for applications needing verification. Note that the Windows standard for applications requires, apparently, that "About ..." windows in IDE's not allow copy-and-paste and be modal so a text file window cannot have focus while the About message is displayed. (29-digit license numbers are frosting on the cake only.) Number: Title: Document Processor Version Submitted By: J3 Status: For Consideration References: Basic Functionality: Add to iso_fortran_env a processor defined character variable, scalar or rank-1, of processor-defined length, containing processor specified version information. Rationale: Many times, after a suspected compiler bug has been detected, the next step is to check a bug database. This lookup needs the compiler's version information to succeed. Today, this comes from a "-V" or "-version" command line option, or some other processor dependent means. If the bug is an application error, knowing the compiler version which first detected it is helpful. Benchmarks and verifications also must document the exact processor used to compile the application. Estimated Impact: Processors would have to make their version strings available via a name in iso_fortran_env. Vendors might actually benefit from more detailed bug reports. Detailed Specification: Add to iso_fortran_env a default character variable or rank-1 array named processor_version. This will contain the processor-dependent version information. If defined by standard Fortran, it's declaration might appear similar to: character( len= *), parameter :: processor_version = & 'Ajax Fortran 2003 Version 0.99 (beta)' or, perhaps: character( len= 72), dimension( 3), parameter :: & processor_version = [ 'Acme Fortran 2003 v 8.2a', & 'Acme SuperLinker v 5.6c', & 'Acme RTL v 3.4e' ] In any case, a programmer could add: write(*,*) trim( processor_version) to an application to document the processor in use in the application's output file. History: