Compilers can always be found to have problems complying with the standard. The maker may not know that their compiler does not meet some part of the standard (nobody is perfect, and there is no "absolute" compliance test). I don't personally think that any compiler maker that claims to meet the standard should be pronounced "nonstandard" as long as they state their intent to meet the standard, and correct any compliance problems. The only way I would feel justified in such a pronouncement is if the maker has stated that they have no intention of correcting the compliance problem, or have not corrected a known problem in a timely manner (say, the problem has existed for a year or more).
I have stripped several compilers out of this list. A few were unverifyable, since I didn't have access to the native machines. Others just had too many deviances from the standard for my tastes. Admittedly, the standard allows any compiler to be listed as "ISO 7185" if it lists whatever does not meet the standard in the compiler in a separate document. This is a fairly broad exception, and would allow a C compiler to qualify as Pascal compiler.
Unfortunately, the list of available ISO 7185 compilers has been shrinking of late. Prospero has come to a halt. Although they give their compiler away at this point, it does not pass the ISO 7185 tests listed here, and Prospero informed me it would probally never get updated. GPC was basically brought to a halt after 2007. There was a large discussion about the reasons on the GPC mailing list, which you can find archived on the GPC site if you are interested. The GPC 2007 compiler still functions, and still complies quite well with the ISO 7185 standard, abiet with the need for a few options to be enabled.
The IP Pascal version on the web is quite old now, but the version online was a fairly solid build. There was a much updated version of the system, but work on that came to a halt due to lack of time.
The good news is that P5, which is the old Zurich compiler from 1973 updated to ISO 7185 status, gets better and better. It is still interpreter based, but I believe that will change, and thus P5 will be a third option for a true Pascal compiler (and a good one). And one with completely open source (including no restrictions on commercial use).
[S] GPC, the free software Pascal compiler based on GCC. GPC is a project to implement a Pascal compiler front end to the GCC compiler project. The reason that this is a good idea, is that it uses all the existing GCC tools, and in fact, will work on any computer the GCC compiler works on, which is huge and growing. It can also integrate to all the fantastic libraries and back ends of GCC. GPC obeys ISO 7185, and the authors are attempting to integrate a large number of features from the Extended Pascal standard, ISO 10206.
[S] IP Pascal. IP Pascal is a project to create an extended language, with a porting platform, that runs on all available machines at high efficiency. Think Java with a high optimizing compiler. It is ISO 7185 compatible, and fully compiled. The current implementation is on Windows and Linux, with Mac OS X and Sun Solaris planned shortly. A demo is available on the web site.
[S] P5. P5 is an open source compiler/interpreter that was originally part of the ETH Zurich Pascal porting kit for creators of Pascal compilers. It is well known (it was the basis for UCSD Pascal, the DEC implementation and many others). It is ISO 7185 compatible both in the language it compiles and the language it is written in, free, and the source is available on this site.
Notes:
1. [S] - Indicates the compiler/processor has been verified to ISO 7185 status by me personally.
2. IP Pascal is made by the company of this site's author, Scott A. Moore. I don't advertise on the Standard Pascal site, and I have placed mention of our compiler last in the above list. In addition, I have offered, and renew the offer, for any of the above compiler makers to write their own descriptions of their compilers to eliminate any possibility of bias on my part.
As part of my continuing activities to promote the ISO 7185 Standard, I have been personally verifying some of the compilers above.
I will verify, free of charge, anyone's compiler who wishes to have it verified. All I ask is that the compiler, and perhaps the computer used to run it, be made available to me here in the San Francisco Bay area where I can access it. I only test for compliance to the ISO 7185 standard, and will not keep any of the programs, documentation or other materials from the test. You only need to agree that I will list a POSITIVE test result (I do not discuss failures, implementations that do not qualify as being ISO 7185) on my ANSI-ISO Pascal web site, as well as any exceptions to the ISO 7185 standard as required in section 5.1 of the ISO 7185 standard. I regret that I cannot purchase products or otherwise provide renumerations for these products. It is not practical for me to purchase every compiler existing for test purposes, nor every computer system that these compiler systems run on.
For details on the nature of the test, see the section below.
Please note: There is nothing implied by a compiler/processor not appearing in this section. Submission of a compiler/processor to my ISO 7185 tests is entirely voluntary and may not have occurred for any number of reasons. Further, I am not a recognized ISO 7185 standard test facility, nor do I reveal all of the nature of the tests I perform. Finally, I do not warrant the results of any of my test work or hold any responsibility for the fitness of any product tested here.
Last verified: July 25, 2010
ISO 7185 full standard test: One failure (see explanation)
Version: gpc version 20070904, based on gcc-3.4.5
Pascal-s compile/run: Pass
Pascal-P5 compile/run: Pass
Implementation first order details:
Processor run on: AMD Athlon 3200+
Bits: 32
Value of maxint: 2147483647
Default integer field width: 11 characters
Default real format field width: 29 characters
Default boolean field width: 6
Default character field width: 1 character.
Implementation character set: ASCII
My comments:
<None>
GPC originator comments:
<Not supplied>
Last verified: July 25, 2010
ISO 7185 full standard test: pass
Version: IP Pascal 1.0 (Windows XP)
Pascal-s compile/run: pass
Pascal-P5 compile/run: Pass
Implementation first order details:
Processor run on: AMD Athlon 64 3200+
Bits: 32
Value of maxint: 2147483647
Default integer field width: 11 characters
Default real format field width: 22 characters
Default boolean field width: 5 characters.
Default character field width: 1 character.
Implementation character set: ASCII
My comments:
1. IP Pascal is my company's compiler. Therefore I have placed it last in this list.
IP Pascal originator comments:
<Not supplied>
Last verified: December 26, 2010
ISO 7185 full standard test: pass
Version: 1.0 (beta)(Windows XP)
Pascal-s compile/run: Pass
Pascal-P5 compile/run: Pass (note that this is a self-compile and run)
Implementation first order details:
Processor run on: AMD Athlon 64 3200+
Bits: 32
Value of maxint: 2147483647
Default integer field width: 11 characters
Default real format field width: 22 characters
Default boolean field width: 5 characters.
Default character field width: 1 character.
Implementation character set: ASCII
My comments:
1. The compiler/interpreter picks up the default characteristics of its host compiler, such as the default integer field width, maxint, etc., so it will matter which host was used to compile it. It was tested using IP Pascal on Windows/XP.
P5 originator comments:
This version of P5 self compiles, which is a very difficult test.
Why another ISO 7185 test ?
There was only one general ISO 7185 test in existence, the BSO (British Standards Organization) test. It has been taken off the market by the BSO, and they have no plans to either offer it again, or release it to public domain. There is an older copy of that test in the PUG newsletters, found elsewhere on this site. However, the material there is not straightforward to OCR (Optical Character Recognition), so the ability (or inability) to make this test available will be revisited in the future.
I have my own compliance test for ISO 7185 which was created to test my own compiler (IP Pascal). Details of that are below. This is a "feature" test, designed to exercise each feature of the ISO 7185 standard. It is NOT a stress test. For example, it does not check how many procedures can be nested, or the total size of program that can be compiled, etc.
The following procedure is used to verify ISO 7185 compliance by me:
1. The ISO 7185 compliance program is compiled and run. This is then checked for correctness.
2. The ISO 7185 compliant program Pascal-s is compiled and run, using simple Pascal programs written in the Pascal-s language subset. Pascal-s tends to use most of the language, and constitutes a non-trivial program.
3. A version of the ISO 7185 compliance suite that has been cut down to the Pascal-s subset is run on the Pascal-s compiled by the compiler under test.
So ultimately, the compiler is run against the compliance test, then used to compile and run Pascal-s, then that itself is tested with a version of the compliance test. This is a fairly complete shakeout of the compiler,. and confidence can be high the system is ISO 7185 compliant and stable after that.
The test is a pretty standard compiler test. It is ISO 7185 simply because I separated the ISO 7185 material from the extended tests for IP Pascal. It originated in about 1992 for the purpose of verifying the Windows NT version of IP Pascal, which actually started as a DOS/386 extender implementation, since Windows NT was not yet available.
The test performs and prints a given operation, then prints a ' s/b xxx' text line to allow for easy checking. The check is done manually by reading the output, but can be done automatically for identical formatting by saving the output in a file, and comparing against a reference file. To this end, the tests specifically specify output formats where possible.
The ISO 7185 compliance test is provided with the P5 project. You can get the test files there, along with complete intructions on how to run it. In addition, compiling and running P5 itself is a good test of ISO 7185 compliance. See the next section.
Since I offered this testing service to other ISO 7185 compiler vendors, the response has been excellent.
The advent of P5 is rapidly changing how I do test. P5 not only provides a large program in ISO 7185 Pascal language to verify Pascal implementations, but also runs any ISO 7185 Pascal program itself. This means that a Pascal implementation can be tested by running the ISO 7185 compliance test, then run the P5 compiler, and run the ISO 7185 compliance test on that, etc. P5 also serves as a "model implementation" of the workings of an ISO 7185 Pascal compiler.
Because of this, P5 has taken over as the ISO 7185 test suite that I run. P5 comes with a series of configurable scripts to run the compiler under test through the test series.