The GNAT Pro Toolsuite
GNAT Pro is a robust and flexible Ada, C and C++ development environment. It comprises a toolchain based on the GNU GCC technology, an Integrated Development Environment (GNAT Studio), a comprehensive toolsuite including a visual debugger, and a set of libraries, bindings and tools.
Ada Compiler with Multi-Language Support
The GCC-based GNAT compiler supports the Ada, C and C++ languages, allowing you to build both pure and mixed-language applications. Available on a wide range of native and cross configurations, GNAT is a mature technology with over twenty years of industrial usage in the most demanding markets.
Supplementing the standard Ada API, GNAT Pro includes packages for services such as operating system interfaces, XML processing, text manipulation and pattern matching, data structures and algorithms, I/O operations, and database interfacing. These are provided by the GNAT run-time libraries as well as XMLAda, Florist (POSIX bindings) and GNATcoll.
GPRbuild simplifies multi-language development by allowing developers to quickly and easily compile and link software written in a combination of languages including Ada, assembler, C and C++. Easily extendable by users to cover new toolchains and languages, it is primarily aimed at projects of all sizes organized into subsystems and libraries. It also support distributed compilation across several hosts.
GNAT Pro includes an extensible debugging harness based on GDB, offering powerful data display / visualization / tracking capabilities, an intuitive menu-driven interface, and a pluggable look-and-feel. It supports multiple debugger back-ends (both native and cross), handles multiple languages including Ada, C and C++, and allows debugging of multi-threaded and/or multi-processed applications. It is non-intrusive: compiling with debugging enabled has no effect on the generated object code. It can be driven from the command line, the graphical IDE or through Python scripting.
Restricted run-time profiles are available for cross configurations. The Zero Footprint Profile defines an Ada subset implemented without run-time library code. It allows major language features while minimizing memory footprint and certification requirements. Other restricted run-time profiles are also available, including the Cert run-time which implements additional math functions or the Ravenscar run-time which provides a small embedded real-time kernel. It is also possible to configure the run-time support libraries to match specific user needs.
Libadalang is a powerful and modern technology supporting full syntactic analysis of Ada (or SPARK) source code and a comprehensive set of semantic queries, and it can work on code that is incomplete or otherwise invalid.
The Libadalang library is the foundation for many of AdaCore’s own tools and is included with all native-platform GNAT Pro Ada subscriptions. Using Libadalang, customers can develop a wide range of Ada source code analysis tools in either Ada or Python.
GNAT Studio serves as a portal to the GNAT Pro toolchain, integrating most of the command-line tools and utilities. It supports Ada, C and C++ and provides syntax-directed editing, source navigation, dependency graphs, code assistance, easy integration with third party tools such as Version Control Systems, and more.
Compile code directly for the target architecture and then use GNATemulator to run it on the host platform through an approach that translates from the target object code to native instructions on the host. This generic and open-source machine emulator and virtualizer is based on the QEMU technology.
Integrate and aggregate the results of AdaCore’s various static and dynamic analysis tools (GNATmetric, GNATcheck, GNATcoverage, CodePeer, SPARK Pro, among others) within a common interface in GNATdashboard. This tool helps quality assurance managers and project leaders understand or reduce their software’s technical debt, and eliminates the need for manual input. It can be integrated with tools such as SQUORE and SonarQube.
GNAT Pro comes with a variety of utilities covering unused subprogram elimination (--gc-sections), memory leak analysis (GNATmem), pretty printing (GNATpp), documentation generation (GNATdoc) and source pre-processing (GNATprep).