AdaCore has announced a comprehensive set of tools and support services for projects where Ada is used in conjunction with other programming languages. Available with GNAT Pro 6.3, the latest release of AdaCore's Ada Development Environment, the solutions include tools and libraries to handle the various ways in which multi-language systems are designed and constructed.
"'One Language Fits All' is not how large systems are developed," says AdaCore's Robert Dewar. "Programmers need to mix and match, using different languages that are appropriate for different jobs, or incorporating legacy software components written in different languages. AdaCore is answering that requirement, through both products and support services, for customers who are using other languages along with Ada."
AdaCore's multi-language solutions include GNAT Pro C and GNAT Pro C++ for support of C and C++ development, respectively, as well as a general-purpose multi-language build tool (GPRbuild). For systems that need to work with Java, AdaCore supplies the GNAT Ada-Java Interfacing Suite (for communicating between Java and natively compiled Ada) and GNAT Pro for the JVM. Combining Ada and Python, for example to drive Ada test suites through Python scripts, is supported by the GNAT Component Collection (GNATcoll). And GNAT Pro for .NET allows smooth interfacing, through managed code, between Ada and C# or other languages that compile to Common Language Runtime assemblies. These are in addition to GNAT Pro’s existing support for the foreign language interfacing facilities specified in the Ada standard.
Multi-language capabilities are especially important in safety-critical and/or high-security applications. For example avionics systems typically consist of components at different safety levels – such as flight software at DO-178B Level A in Ada, and entertainment software at Level E, perhaps in Java. In the security arena, a MILS-compliant architecture can host different applications at different Evaluation Assurance Levels (EALs), where applications at the highest levels might be written in a language such as SPARK (an Ada subset augmented with annotations / "contracts" that allow formal proofs of security properties), whereas applications at lower levels might be written in languages that do not support such rigor. AdaCore's multi-language solutions address such needs.