Free Tools and Libraries
Looking for something specific? Consider using the Ada-wide search engine, which searches all of these sites and many more — but only Ada-related sites, so it’s much easier to find relevant results.
Can’t find it here? Also check Professional Tools and Services. Also consider checking the
Awesome Ada site, another curated list of Ada resources.
General Collections of Tools and Libraries
- Libre Software
GPLed software for Ada and other languages.
The Ada LIbrary REpository is a catalog of ready-to-use Ada/SPARK libraries plus a command-line tool (alr) to obtain, build, and incorporate them into your own projects.
- Rosetta Code
Rosetta Code shows common problems solved in a variety of programming languages, including Ada.
- Ada and Software Engineering Library
This site is the on-line version of the famous ASE CD-ROMs. It contains over
1.3 Gigabytes of information on Ada, including libraries, tools, educational
materials, and compilers. This library is now hosted in the AdaIC’s archives,
as the previous site has gone off-line. The library is also available
via FTP at Ada Belgium’s site.
Single-source Collections of Tools and Libraries
Adaino is a toolset written in Ada, to develop Ada applications on Arduinos on a host Windows machine.
- Ada Reusable Code
Ada components, including fuzzy logic, interval arithmetic, string editing,
table management, smart pointers, and more.
A set of tools and libraries for creating Ada GUI programs, including a QT5Ada (a binding to QT5), VAD (Visual Ada Developer), and more.
- Ada Util
Ada Util is a collection of utility packages for Ada 2005. Several packages are inspired from Java packages and libraries. It includes:
It has been compiled and ported on Linux, Windows and Netbsd.
- A logging framework close to Java log4j framework
- Support for properties
- A serialization/deserialization framework for XML, JSON, CSV
- Ada beans framework
- Encoding/decoding framework (Base16, Base64, SHA, HMAC-SHA)
- A composing stream framework (raw, files, buffers, pipes)
- Several concurrency tools (reference counters, counters, pools)
- Support for localized date format
- Support for process creation and pipe streams (on Unix and Windows)
- Support for CSV in the serialization framework
- Integratation of Ahven 2.1 for the unit tests (activate with –enable-ahven)
- A tool to generate perfect hash function
- Andersen Library
This site contains a collection of Ada programs and packages written by
Jacob Sparre Andersen, which are distributed under the “Beerware” Open Source license. These include an ISBN handling package, various generic math packages, and more.
- Anders Gidenstam’s Ada Software pages
These include a number of interesting packages, including various lock-free
data structures in Ada.
- Arduino Blog
This is Tero Koskinen’s blog on using Ada on an Arduino board, including downloads and code snippets.
- Christoph Grein’s Essentials
This site includes a number of articles and the associated packages, including Smart Pointers and Physical Units.
- Jonathan Parker’s Math Libraries
are a collection of numerics routines in Ada (under the GPL license); these include
SVD, QR, LU, Runge-Kutta, FFT, Arbitrary precision floating point, and random number generators.
Matreshka is an Ada framework to develop information systems. It includes: extended support for internationalization; XML processing; web frameworks; SQL database access; and more.
- PragmAda Reusable Components (PragmARCs)
The PragmARCs are open-source components that range from the basic-but-essential to the high-level,
using the PragmARCs reduces the amount of software written for an application
by an average of 50%. (This is a representative figure. Actual results may vary.) The
PragmARCs are pure Ada; they should work with any compiler and operating system
on any platform.
The PragmARCs are also available through Github.
- Stephen Leake’s Libraries
This site includes a collection of Ada tools including
SAL (Stephe’s Ada Library),
Auto Text_IO, and more.
- Student Packages
String processing, HTML output routines, an Ada.Text_IO visualisation tool, forms based programming, a simple Unix interface, a Simple Prolog interpreter, making motif/callbacks easier, and data compression.
Individual Tools and Libraries
- Ada AutoIT
Ada AutoIT is an Ada binding to AutoIT, which is a test automation interface
for Win32 systems.
- Ada Bar Codes
An Ada package for generating various types of bar codes (1D, or 2D like QR codes) on different output formats, such as PDF or SVG. Another author has provided a package to display generated bar codes using Gnoga (see below).
AdaBase is an Ada database binding, with drivers for MySQL and SQLite, with PostgreSQL under development.
- Ada BFD
Ada BFD is an Ada binding for the GNU Binutils BFD library. It allows reading binary ELF and COFF files using the GNU BFD.
- Ada binding to Zlib
ZLib.Ada is a thick binding to the popular compression/decompression library ZLib.
It provides Ada style access to the ZLib C library.
AdaBLAS is an Ada binding to BLAS.
- Ada Crypto Library
This a crypto library for Ada, written for the i386 and x86_64 hardware.
- Ada Database Objects
Ada Database Objects is an Ada05 library that provides object relational mapping to access a database
from Ada05 code. The library supports MySQL and SQLite as databases.
An Ada Library for UUID generation.
AdaLAPACK is an Ada binding to LAPACK.
Ada-LAPACK is an all-Ada implementation of parts of LAPACK.
- Ada LZMA
Ada binding for liblzma compression library.
- Ada NetFramework
This is a set of bindings and runtime that allows native Ada applications built using GNAT to use the
- Ada Open ZWave
Ada Open ZWave is a binding to the C++ Open ZWave library for controlling Z-Wave devices.
- Ada PDF Writer
Ada PDF Writer is an Ada 95 library that makes it easy to create PDF files from an Ada program,
including text, headers, footers, vector graphics, and JPEG images.
- Ada Project Manager
This ttool provides
management, beyond Ada’s language specification, of a set of source code and configuration options/specifications.
Adare_Net is a small, portable and easy to use Ada network library. It supports both ipv4 and ipv6, as well as both udp and tcp.
Ada-Spread is an Ada2005 binding to the high performance messaging service
- Ada Web Application
The AWA project is a framework to build a web application with Ada.
- Ada Wiki Engine
Ada Wiki is a small library that provides a Wiki engine.
- Ada Win32
Ada Win32 provides a set of lower-level Ada bindings to the Microsoft Windows Win32 API.
- Ada WinRT
Ada WinRT provides a set of Ada bindings to the Microsoft Windows WinRT API.
AdaYAML is an experimental library for processing files encoded using the YAML data serialization language.
- Ada for Automation
(A4A in short) is a framework, for designing industrial automation applications using the Ada language. (Note: Site is in French.)
Addr2Line2locations, is a utility for GPS (an Ada language oriented IDE from AdaCore), which provides you navigation in exceptions traceback and origin via the Locations pane of the GPS IDE.
ADHCP is an implementation of the DHCP protocol in Ada.
Ahven is an Ada 95 unit test library.
A sandbox package manager for the Ada language. Powers the Alire catalog (see above).
A-LIFX is a full Ada interface to the LIFX-Smart light bulbs.
Alog is a stackable logging framework for Ada.
Anet is a networking library for the Ada programming language.
- ANTLR grammars for Ada
This site contains a number of grammar for a variety of Ada and ANTLR versions.
ArchiCheck is a tool for checking the architecture of an Ada software system.
ARE (Advanced Resouce Embedder) is a tool that can generate Ada code to embed a file in an Ada executable program. Any file can be embedded, including documentation, images, scripts, and configuration files.
AShell is a library for using shell-like capabilities in Ada programs.
This tool converts an Ada unit’s ASIS representation into XML, so as to make it easier to develop
transformational tools using (for example) XSLT.
A library for sound operations.
AZip is an archive manager which is 100% written in Ada.
- Booch Components
Simon Wright continues Dave Weller’s original work of porting Grady Booch’s
C++ components to Ada95.
- C2Ada Sourceforge project
This project is the current home of the C2Ada C to Ada translator program. C2Ada can translate C headers to produce bindings as well as C programs to produce translations.
Canta is an open source Windows application, written in Ada, that aims to help the user to learn to sing in tune.
Ada Call-Back Argument Processor, for processing simple arguments.
Written in Ada and designed for educational purposes, the Cheddar program
automatically checks realtime constraints in programs.
CodingGround allows entering and compiling Ada programs on-line.
ColdFrame generates Ada framework code and documentation from UML models.
Comfignat provides convenient command-line-controlled compile-time configuration of software built with the GNAT tools on Unix-like operating systems.
- Configuration File package
Config is a package for parsing configuration files (.ini, .inf, .cfg, …) and retrieving keys of various types.
- Container JSON
This is a set of utilities for serializing/deseriallizing Ada Standard containers to/from JSON.
- Corporate BS Generator
This Ada program creates random sentences of corporate-speak; it’s available on-line and as an Ada program you can run locally.
- Cortex GNAT Runtime Systems
This is a series of runtime systems for GNAT Ada targeted to ARM Cortex boards. Supported boards include the Arduino Due and the STM32F4-series evaluation boards from STMicroelectronics.
An Ada 2012 library for document container files, a Zip-based archive
format standardized in ISO/IEC 21320-1:2015. Document container files are restricted versions of Zip files.
Deepend is a storage pool with subpool capabilities for Ada 2005. (Subpools is a new Ada 2012 feature not directly available in Ada 2005.)
DePlo is a program that converts the dependency relationship between Ada packages into a graph description in DOT format.
Dequesterity [dek-ster-i-tee] is an assortment of deque/buffer generics written in Ada 2005 that consist of building blocks that may be combined in various ways to create higher abstraction buffers.
Dotenv is a zero-dependency library that loads environment variables from an .env file.
Bringing the GNAT Ada compiler to DragonFlyBSD, FreeBSD, OpenBSD, NetBSD, and Solaris/OpenSolaris.
- Excel Writer
Excel Writer provides a library for creating Excel spreadsheet files directly from Ada programs
(no copy of Excel or another office program is required).
- Formal Methods Toolkit
FMT is a set of extension packages that turn Mathematica into a software engineering IDE that allows designing, analyzing, visualizing, verifying models, and generating formally-proven Ada source code.
GDNative provides Godot Nativescript bindings in ada.
- Generic Image Decoder (GID)
The Generic Image Decoder (GID) is a standalone, self-contained, pure Ada package for decoding a broad variety of image formats, from any data stream, to any kind of medium.
- Globe 3D
GLOBE_3D is a free, open-source, real-time 3D Engine written in Ada, based on OpenGL.
Gnoga is a framework of Ada packages that provide platform-independent user interface programming for the cloud, desktop and mobile. Gnoga uses a browser to render the UI, so it works almost anywhere, local or remote. Gnoga also includes a number of tools to make development of Gnoga applications easier. There is a gallery of Gnoga example programs can be found on the Sourceforge Gnoga site.
- GNAT math extensions
The Ada 2005 standard defines real and complex matrix and vector operations. Not every possible operation is supported;this project provides extensions to the Standard for GNAT.
- GNU GMP and MPFR binding
This binding to the GNU GMP and MPFR Multi-precision libraries offers excellent performance.
HAC (HAC Ada Compiler) is a small, quick, open-source Ada compiler, covering a subset of the Ada language. It also can be found on Github
Imago is a thin binding to DevIL – Developers’ Image Library (which is a library that supports working with most image formats). There is an Ada version of the examples in the lazyfoo tutorial for using this library here.
Jdaughter is an Ada library for reading and writing JSON data.
JEWL is a set of Ada packages aimed at novices which enables reasonably sophisticated Windows GUI applications to be
built with a minimum of effort.
JWX is a library for handling JSON data and more. It uses SPARK to prove that it contains no runtime errors.
Ladybird is a client application for Twitter and Identi.ca microblogs, written in Ada.
LEA is a Lightweight Editor for Ada. It is available as an executable for Windows and is based on the Scintilla editor widget (like Notepad++).
LibSimpleIO provides easy-to-use Linux I/O device access; it is especially useful for programming board-level computers like the Raspberry PI. It is available in a variety of languages, including Ada.
Libsodium-ada is a set of thick Ada bindings to libsodium. Libsodium is a portable implementation of the NaCl encryption, hashing, and authentication library.
Ada framework providing work sharing/seeking services for distributing work amongst CPU cores on multi-core machines.
Various mathematical packages including algebra, finite elements, random variables, probability dependency models, unlimited integers.
MP is a music player using the audio widget of GNoga.
- Muen Separation Kernel
The Muen Separation Kernel is an first Open Source microkernel that has been formally proven to contain no runtime errors at the source code level. It is written in the SPARK subset of Ada.
- Nasser Abbasi Ada page
Packages and links on Ada.
- Oliver Kellogg’s Ada source processing
These are a number of Perl programs for processing Ada source code.
OpenGLAda is a thick Ada binding for OpenGL and GLFW. It enables you to create complex graphical applications in Ada, using the OpenGL industry standard.
Orka is an OpenGL 4.6 rendering kernel written in Ada 2012.
Ada Binding to OpenAL.
- P2Ada Sourceforge Project
A free Pascal-to-Ada translator.
A suite of Ada 2005/2012 generics to facilitate iterative and recursive parallelism for multicore systems and provide safer recursion for single and multicore systems.
PCSC/Ada provides an Ada interface for communicating with smart cards via standard PC/SC interfaces.
The library provides a thick, easy-to-use interface to the SCard API.
Player-Ada is a not-so-thin binding to the libplayerc client library that
is distributed as part of the Player/Stage multi-robot interface/simulator
- PLplot for Ada
PLplot is a cross-platform software package for creating scientific plots. It has a dedicated Ada
binding (along with a number of other languages).
- Portable OpenAL Sound
Portable OpenAL Sound is a thick Ada binding to OpenAL sound. This is a cross-platform sound-playing package for Ada apps that can asynchronously start and stop music loops, as well as initiate transient sounds. It plays WAV files, via OpenAL, on Windows, OSX, and Linux platforms. It is suitable for any Ada application that needs music, sound loops or transient sound effects. Also found on Github.
- Protobuf for Ada
Protobuf is an Ada implementation of Protocol Buffers – Google’s data interchange format.
- Pugixml for Ada
PUGIXML is a lightweight XML processing library; this is an Ada binding to it.
QT4Ada is a hand-written Ada 2005 binding to QT 4.2.
QTAda is a different Ada 2005 binding to QT.
- Raptor RDF Syntax bindings
This is a thick object oriented Ada2012 bindings for the Redland Raptor RDF (Resource Descriptor Framework) library.
RCLAda is an Ada 2012 client library for ROS2, the next generation of the popular framework for robotics research, ROS.
Resource is a tool for converting resource files to Ada source code to be compiled and included in a binary.
- Stack Usage
Stack Usage is a Python tool that analyzes call information produced by GNAT in order to determine maximum stack usage for a task.
Portable sqlite3 bindings for Ada 95.
SrcTrace is a tool that generates an Ada package containing the source details for a
particular build of a program. It also supports several other languages.
This is a generic Ada package that allow manipulation of simple “symbolic expressions”.
- Tension Structures
This site is to publicizes information about design and analysis of tension
structures including cable roofs and membrane structures. Source code written
in Ada95, examples and executable code for Windows available for download.
A library for creating parsers and lexers. Powerful, flexible, and
A package providing Unicode Extended String ty[es and an associated Text_IO child package.
- VSCode Extensions
These are extensions to Microsoft’s VSCode editor to support Ada programming. A second extension can be found
This is wrapper library for vt100 calls in Ada.
This is a plugin for Visual Studio 2017 that supports Ada development using GNAT.
Wavefiles is a Wavefile reader / writer using generic fixed-point PCM buffer
- Wayland Client
This is a thick Ada binding for the Wayland Client API.
- XCB for Ada
This is a thin Ada binding to the XCB library, which provides access to the client-side of the X11 display server protocol on Linux.
This is a Windows tool for securely erasing data. A number of algorithms are supported.
XML4Ada95 is a package which enables parsing and serialization of XML
Documents, accessing them via the DOM Interface., and validation of them
against DTDs and XML Schema.
YAMI4 is a set of messaging libraries designed for distributed systems with particular focus
on control and monitoring systems.
- Zip Ada
ZIP file handling in Ada, including compression and decompression.
An Ada binding for the ZStandard compression library; ZStandard is a lossless compression algorithm, which provides both good compression ratio and speed.