PHC is written in Ada. Since the gnu-ada compiler (also called GNAT [Ada Core Technologies]) is available for a large number of platforms, the software is portable. The myth that Ada is ``big and slow'' is disproved in [Syiek 1995]: Ada versions even have a slight edge over their C counterparts.
Initially, the VADS (Verdix Ada Development System) compiler was used on three different machine architectures. The implementation started [Verschelde 1990] on a SUN3/280 and moved [Verschelde and Cools 1993a] to a DECStation 5240. A version for an IBM RS/6000 workstation was made available [Verschelde 1995]. Thirdly, SUN-SPARC machines were used [Verschelde and Cools 1996], along with the gnu-ada compiler version 3.03 in [Verschelde 1996].
Next a report is given on compiler experiences. Because runtime efficiency is crucial, compilation is done with full optimization and with a suppression of runtime checks. Table 2 contains experimental data comparing VADS 6.2.3b against gnu-ada 3.09.
|compiler options||user time||sys time||total time||aux. files||executable|
|VADS: -O -S||40m 9s||5m 8s||45m 17s||42.1 Mb||4.0 Mb|
|GNAT: -O3 -gnatp||45m 46s||2m 59s||48m 47s||4.1 Mb||2.9 Mb|
In Table 3 the performance of the generated code is illustrated on one of the benchmark examples.
|phc||4c|root counts||4c|start system||4c||continuation||4c|total time|
Although this comparison is by no means thorough, the gnu-ada compiler seems to be the winner, both in compiling and runtime efficiency. Currently, the gnu-ada compiler is maintained by a privately held company Ada Core Technologies (ACT), founded by the creators of the gnu-ada compiler. ACT is committed to provide publicly free releases of their compiler. The most recent public version is numbered 3.11p.
The fourth platform used to develop PHC is a Pentium PC running Linux. The mathematical kernel of PHC has been rewritten using concepts of Ada 95 to incorporate multi-precision facilities. The other major change in the new version is the availability of SAGBI [Verschelde 1998] and Pieri homotopies.