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.

Access to the latest snapshot using SVN

GNATColl is still part of the GPS repository (in subdir gnatlib) which is accessible read-only by anonymous SVN as documented in GPS

You can also browse the repository directly at: