GNAT Component Collection

The GNAT Component Collection is a suite of reusable software components and utilities. It has been used by AdaCore in developing the GNAT tool set, the GPS Integrated Development Environment, and GNAT Tracker, its web-based customer support interface.

The GNAT Component Collection includes:

  • Software that allows integration with scripting languages, such as python
  • Database interfaces for APIs, such as postgresql, mysql, and sqlite
  • Ada packages supplying a variety of services, such as
    • Module tracing
    • Efficient file IO
    • Efficient static string searching (Boyer-Moore algorithm)
    • E-mail and mailbox manipulation
    • Ravenscar tasking pattern examples
    • Various predefined storage pool utilities
  • Support for reading and writing JSON data. JSON is a frequently used format in web applications.

Among the elements of the GNAT Component Collection is an extensive set of templates for Ravenscar Profile examples. These include:

  • Simple_Cyclic_Task: a simple cyclic task that executes a given operation at a constant frequency
  • Simple_Sporadic_Task: a sporadic task released by software invocations with a constant minimum inter-release time (in the worst case, its behavior is identical to a cyclic task)
  • Sporadic_Server: a sporadic server that buffers a single type of request (carrying input parameters) and executes it enforcing a constant minimum inter-release time
  • Sporadic_Server_With_Callback: a pattern that demonstrates how to model an asynchronous call with “out” parameters in Ravenscar.
  • Multiple_Queue_Sporadic_Server: a Sporadic_Server variant that accepts multiple kinds of requests
  • Sporadic_Server_With_Timeout: a Sporadic_Server variant that provides for the automated release of the server, if it is not released within a given amount of time by an explicit software invocation.

Sources

The GNATcoll sources are on github.