Previous | Table of Contents | Next |
10.2.2.3. The Role of the GNU Ada 95 (GNAT) Compiler
A critically important aspect of the growing acceptance of Ada 95 is the availability of a freely available compiler, known as GNAT. This Ada 95 implementation is integrated into the GNU (GNUs not UNIX) family of languages and uses the same back-end code generator. It supports the full Ada 95 language, including all annexes. The compiler can be downloaded from the PAL and all its mirror sites, andas is the case with all software released under the GNU General Public Licensefull source code is available along with the binaries.
The GNAT project was originally located at New York University and funded by AJPO from 1993 to 1995. Starting in mid-1995, development and commercial support continued at Ada Core Technologies (ACT), a company founded by principals of the NYU GNAT project.
GNAT has made Ada 95 accessible to a large number of users around the world. Further, because full source code for the compiler and runtime system can be freely downloaded, Ada is once again becoming an interesting subject of academic and other research.
One critically important aspect of the Ada project is validation of implementations (compilers and associated linkers and runtime support libraries). DoD desired to have, above all, a common language, supported by a strong standard that described the language. In that vision, hardware could be procured competitively, without concern about whether the compilers from hardware vendors A and B compiled the same source language. Similarly, once the hardware platform was determined, compilers for that platform could be procured competitively based on price and performance because all compilers would support the same language. Validation demonstrates the conformance of a compiler to the standard.
Compiler validation is necessarily a testing process because there is no other effective way to demonstrate standard conformance. DoD therefore commissioned the development of a set of test programs called the Ada Compiler Validation Capability (ACVC). This test suite was made readily available to interested parties, originally on magnetic tape; with the growing use of the Internet, the ACVC was distributed by FTP.
Over the roughly ten years of Ada 83, the ACVC was, of course, updated a number of times, to take account of practical experience with the compilers, add new tests as compiler bugs were discovered, and so on. The final operative Ada 83 test suite was ACVC 1.11, containing more than 2000 distinct test segments. Various forms of the applicable regulations determined the frequency with which a validated compiler was required to be retested with a newer test suite.
With the advent of Ada 95, the validation process was changed somewhat to accommodate Ada 95s structure as a core language with specialized-needs annexes; vendors can now choose to submit any or all annexes for separate validation.
Because the reader is probably unfamiliar with the compiler validation process, it is useful to go into it in a bit of detail, to put the process in perspective. The following section, describing Ada 95 validation, is adapted directly from the Ada IC flyer The Ada Compiler Validation Process.
10.2.3.1. The Validation Process
The administrative structure of validation is, at this writing, in transition as part of the implementation of the revised Ada policy described in section 10.3.1.1. This section therefore describes the process historically. It is safe to assume that the technical process will continue in a similar fashion, but the names of the administrative player organizations will probably change.
Historically, the validation process was carried out by the Ada certification body. This body consisted of the Ada Joint Program Office (AJPO) and the Ada Validation Facilities (AVFs).
The AJPO issued validation certificates for AVF-tested Ada implementations, registered Ada implementations that were derived by an AVF, maintained the Ada Compiler Validation Capability (ACVC), reviewed all Validation Summary Reports (VSRs), reviewed and adjudicated all disputes regarding the Ada test instrument, and maintained current operating agreements with the AVFs. The AJPO had the responsibility for establishing and maintaining a certification system for the ISO.
To obtain a validation certificate, the following six steps were completed by the customer and the Ada certification body:
With Ada 95 compilers, compliance is measured only within the limits of the collection of test programs contained in the ACVC for the core language and specialized needs annexes. An Ada implementation passes a given ACVC version if 1) it processes each test of the customized test suite in accordance with criteria for individual tests and 2) the test result profile matches the passing requirements for the specific ACVC version.
Matrices displaying the test result profiles for Core Ada 95 Test Categories and Special Needs Annexes are shown in the VSR. The information contained in the matrix is reformatted and provided in the Validated Compilers List (VCL) to allow easy access for buyers and users.
10.2.3.2. A Sample Test Profile
To give the reader some flavor of the tests, I show an example of the test profile that is published in the VCL.
The first matrix displays the number of tests that were Passed, Not Applicable (NA), Not Supported (NS), and Withdrawn for each of seven test categories: Ada 9X Basic, Real-Time, OOP, Type Extensions in Child Units, Child Library Units, Predefined Language Environment, and Mixed Features. Here is a list of the test categories and a short description for each:
Note: The following subsets of tests validate features that are new to Ada 95. Each test has been allocated into exactly one of several test subsets, based upon a general categorization of Ada features used in the test. These tests are designed to reflect the features that programmers are likely to use to solve a programming problem.
Previous | Table of Contents | Next |