The Common Algebraic Runtime (CAR) is a set of basic runtime services that can be used to develop efficient mathematical libraries and applications using Aldor and C++. The CAR is composed of parts of the Aldor runtime, the PoSSo-CMM memory manager and the GMP big integer package. The CAR is distributed as a set of libraries and can be linked with object files produced by Aldor, C++ or C compilers.
The CAR includes the Platform Abstraction Layer. This is an interface that helps programmers to write programs not depending on a specific operating system or compiler. A large number of platforms are already supported. Further details on the Platform Abstraction Layer can be found in the documentation included in the package.
The development required the following activities:
Aldor users can optionally link their executables with the CAR to get performance improvements of up to 25%, depending on the specific application, over the original Aldor runtime system. The CAR is 100% compatible with the current Aldor implementation and users can use it without any change to their source code.
As a side activity, CMM has been extended with some additional features, that allow easier switching of heaps during a computation. This results in a better tuning of algorithms implemented in C++. In particular, alternating the use of the mswHeap and the tempHeap has been shown to produce better results. The possibility of using the heap switching mechanism in Aldor has been explored.
As a direct consequence of the FRISCO work on that CAR, NAG has implemented a generic big-integer interface in Aldor to allow any big-integer package to be used (provided certain functions were provided), and then customised it to use GMP. The latest version of Aldor with AXIOM has a script which will link code with GMP if it is installed.