Scott Franco - 2014-07-29

After attempting to get GPC running on ubuntu Linux 14.04 LTS, I gave it up. I had similar results on MAC OS X some time before.

For the folks who use these environments, I thought I would explain why.

First of all, for reasons I wish someone would explain to me, programs in Linux don't run very long in the binary form before they are obsolete. Thus in both Ubuntu and MAC OS X, you apparently need to keep getting the latest binaries when you upgrade operating systems. In the case of both Ubuntu and MAC OS X, I found the proper binaries, but they no longer run on the latest OS version. In Windows, this is not an issue because backwards compatibility is valued. 10 Year old programs still run.

Linux people don't really find this a problem. They recompile from source and thus always get fresh binaries.

Second, there is only one GPC I have found that runs ISO 7185 Pascal, which is the version dated 20070904. The reason for this goes to internal GPC group politics. There were always two factions, the Borland compatibility backers and the ISO 7185 backers, and the former were apparently in the majority. A compiler needs to be tested on ISO 7185 input, or it will rapidly lose compatibility. GPC waxed and waned in ISO 7185 compatibility over the years, and the last version isn't ISO 7185 compatible. Thus, I have found only one generally available version that had such compatibility, which is the 20070904 version.

This situation is permanent now. GPC development stopped. Since GPC is tied heavily to GCC, you can't create a new version of GPC unless you re-integrate with the GCC back end. And the GPC group found this to be impossible due to changes in GCC. That is why they stopped development.

The solution going forward is to add a code generator to Pascal-P, and I believe that makes no sense in P5, but rather needs to be differed to P6. The reason why is that nobody ever wrote a binary generating compiler for Pascal without adding a minimum of system functions, including named file handling. Pascal was designed to do this from day 1, and the original CDC 6000 compiler had a set of system specific functions. Wirth didn't leave those functions out of the general Pascal specifications because they weren't required, but because they were system specific and would change between implementations. And thus they could not be standardized.

In P6 the needed enhancements can be added to make adding full binary generation reasonable. In the same way, I didn't feel it was appropriate to add extensions to P5 because it represents a milestone. It is a full ISO 7185 implementation of Pascal.

 

Last edit: Scott Franco 2014-07-29