Your first time on this page? Allow me to give some explanations.
Awesome Ada/SPARK
A curated list of awesome resources related to the Ada and SPARK programming language
Here you can see meta information about this topic like the time we last updated this page, the original creator of the awesome list and a link to the original GitHub repository.
Thank you ohenley & contributors
View Topic on GitHub:
ohenley/awesome-ada
Search for resources by name or description.
Simply type in what you are looking for and the results will be filtered on the fly.
Further filter the resources on this page by type (repository/other resource), number of stars on GitHub and time of last commit in months.
Entry Point
Interactive learning platform designed to teach the Ada and SPARK programming languages.
Tutorials
SPARK by Example is an adaptation of ACSL by Example for SPARK 2014, a programming language which is a formally verified subset of Ada
AdaCore University Video Tutorials.
Ada 2012 crash course under 50 pages from Vermont Technical College.
Learning Ada 2012 by writing simple games.
Online books
Ada 95: The Craft of Object-Oriented Programming.
Implementation Guidance for the Adoption of SPARK.
Safe and Secure Software. An invitation to Ada 2012.
A book going from beginner to advanced concepts in Ada 95, complete with source files
Specialties
A collections of small nifty demos/sample code that may help better layout data or structure project
For additional learning resources, see the AdaIC learning section.
Reference
Standard Ada library specification as defined in Reference Manual
The 2012 revision to the Ada Standard, usually known as Ada 2012.
Questions and Answers
News and Resources
Ada-Europe is an international organization, set up to promote the use of Ada.
Since 1990 the Ada Resource Associationโs principal mission has been โTo ensure continued success of Ada users and promote Ada use in the software industryโ.
News and resources for the Ada programming language.
News Aggregator from the Ada programming language world.
GPL (no linking exception)
GNAT Community edition. A release of AdaCore GNAT for free software developers, hobbyists, and students. The run-time libraries provided with GNAT Community are licensed under GPLv3 without linking exception. It supports Ada 2012 only.
GPL (with linking exception)
Free Software Foundation compiler for the Ada programming language which forms part of the GNU Compiler Collection. It supports all versions of the language, i.e. Ada 2012, Ada 2005, Ada 95 and Ada 83.
Other / unknown licence
HAC Ada Compiler: an experimental Ada compiler, fully in Ada
The Byron project is a community-driven Ada compiler, toolchain, and IDE-system.
Commercial / Open source
The GNAT Pro product line offers a comprehensive toolset (IDEs, debugger, librairies, dynamic and static analysis tools) for Ada, C and C++.
Commercial / Closed source
Compiler supporting all the major features of the Ada 83, Ada 95, Ada 2005 and Ada 2012 versions of the language.
PTC ObjectAda is an extensive family of native and cross development tools and runtime environments.
PTC ApexAda is one of the industryโs most popular development environments for Ada and mixed Ada/C/C++ applications.
Green Hills Software offers the industry's first, fully validated family of Ada Cross Compilers for real-time targets.
XGC provide GCC-based bare-metal toolchains with Ada95 support for aerospace-specific targets such as MIL1750, ERC32 and LEON. As well as a legacy M68000 toolchain.
Online
Online compiler built on the CodingGround engine.
Online compiler that provides multiple versions of GNAT to test with.
Run GNAT FSF compilers interactively from your web browser and interact with the assembly.
Integrated Development Editor
Ada language integration for Visual Studio 2017.
Editors
LEA is a Lightweight Editor for Ada
Text Modes
Maintained complete Ada-Mode for Vim/NeoVim
TextMate support for Ada
VSCode Extensions
Basic syntax highlighting for Ada and GPR
VSCode extension for Ada.
Language Support for Ada. It includes Language Server for Ada.
Build and Package
Command-line tool from the Alire project and supporting library
GPRbuild is an advanced build system designed to help automate the construction of multi-language systems.
Administration tool for Ravenports
Next D/Ports build tool for live systems (Alternative for Portmaster and Portupgrade tools)
cmake macros for simple gnat project inclusion
Continuous Integration
SPARK formal verification automated with Travis CI
Runtimes
Source repository for the GNAT Bare Metal BSPs
This project contains various GNAT Ada Run Time Systems (RTSs) targeted at Cortex boards: so far, the Arduino Due, the STM32F4-series evaluation boards from STMicroelectronics, and the BBC micro:bit
Ada WASM Runtime and Bindings for Web API
OS and Kernels
A secure and high performances microkernel for building secure MCU-based IoTs
Ada Bare Bones OS development tutorial source code
Operating System development experiment in Ada
An attempt at a minimalistic and secure operating system.
General-purpose, formally-verified, 64-bit operating system in SPARK/Ada for x86-64
MaRTE OS is a Hard Real-Time Operating System for embedded applications that follows the Minimal Real-Time POSIX.13 subset. It provides an easy to use and controlled environment to develop Multi-Thread Real-Time applications.
Lovelace is an effort to write a Unix like operating system using the Ada 2012 language.
Ada_KALINDA is a sort of Mac Plus like OS written in Ada95.
Games
A tictactoe game written and proven in SPARK
AdaGate is a kid-friendly 3D dungeon escape game within a Stargate fantasy setting for Windows, OS-X, & most Linux distros. A tribute to Narbacular Drop with mind bending spacial interconnections.
RufasCube is a 3D slider puzzle for Windows, OS-X, & most Linux distros. It looks like a rubic cube but it's a slider, not a twister.
AdaVenture is a kid-friendly retro point&click adventure game with mazes, beasts, bats, bugs & snakes. Windows, OSX & most Linux distros. Hear ancient Persian melodies played by Korla Pandit.
Limited support: Fun puzzle games that run on any terminal on any os. THESE ARE NOW ESSENTIALLY INCLUDED IN COTERMINALAPPS.
Retro ASCII Puzzles plus Pacman & Frogger arcade games that run in a terminal on any platform. Now with sound...but still extremely portable.
MiniPac is a kid friendly ascii character version of Pacman that plays in a commandline terminal. Also runs on Windows & OSX. NEWER VERSION INCLUDED IN COTERMINALAPPS.
This is a soccer-themed, 3D sokoban puzzle game that runs on Windows, Mac OS-X and most Linux distros; featuring voice of Andres Cantor! Includes moderately capable, interactive autosolver.
A Button Mania game written in Ada
The Gnoga version of Mine Detector, an intellectually-challenging game
Components
Ada Utility Library - Composing streams, processes, logs, serialization, encoders and more
GNAT Components Collection โ Core packages
GNAT Components Collection โ Bindings to C libraries
GNAT Components Collection โ Database packages
Framework for platform-independent SPARK components
A set of Ada components to allow 3D simulations, games and GUI's in Ada.
ASN.1, MQTT client and server/broker implementation, B-trees, Multiple connection TCP servers, Chebyshev series, Mutexes, Cryptography, Objects and handles to, Doubly-linked webs and lists, ODBC bindings, Blackboards (lock-free), OpenSSL bindings, ELV/eQ-3 MAX! client implementation, Parsers, Events (plain, pulse, array of), Persistent objects and handles to, GNUTLS bindings, Persistent storage and handles to, Graphs (directed, weighted, acyclic, trees), Pools, HTTP implementation, Sets and maps, FIFO (lock-free), SMTP client implementation, IEEE 754, SQLite bindings, Inter-process communication, Stacks, Interfacing Julia language, Streams, JSON, Strings editing, LDAP, Tables (maps of strings), MODBUS client implementation, Unbounded arrays.
Distributed
PolyORB provides a uniform solution to build distributed applications relying either on middleware standards
Graphical User Interface
GWindows: GUI framework for MS Windows
Ada bindings for the GTK+ graphical library.
CLAW, a High Level, Portable, Ada 95 Binding for Microsoft Windows.
Ada-2012 port to VTK 8.1 (Visualization Toolkit).
Terminal User Interface
Advanced UNIX Terminal UI Ada Binding Package
3D
GLOBE_3D: a real-time 3D Engine written in Ada
Engine_3D: a real-time, pure software, 3D engine for DOS-talgics. Abandoned project, but perhaps there are some interesting bits in the code... See GLOBE_3D for newer stuff !
Ada OpenGL Framework
Id Software's Id-tech-4-BFG in the Ada programming language.
Database
Ada Database Objects
Thick database bindings to MySQL, PostgreSQL and SQLite for Ada
APQ is a database interface library written in Ada95.
Web
AWS is a complete framework to develop Web based applications in Ada.
Ada Web Application - Framework to build high performance secure web applications
Dynamo Ada Application Code Generator
Ada Wiki Engine - Wiki parser and renderer with several Wiki syntaxes
Ada Security - OAuth 2.0 client and server framework to secure web applications
Ada EL - Expression Language Library (JSR245)
Ada Server Faces - Web Server Faces JSR 252, JSR 314 and JSR 344
Ada Servlet - Web Servlet Library following JSR 154, JSR 315
Ada support for Swagger codegen
Matreshka is an Ada framework to develop information systems. It consists of five major components: League, XML processor, Web framework, SQL access, and the Modeling framework.
Unit Test, Testing
Behavior Driven Development in Ada
Supports functional testing using Tcl scripts.
Ahven is a simple unit test library and framework for the Ada programming.
Logging
Machine Learning
Automation
Verification
GNATcoverage: Coverage Analysis Tool
SPARK 2014 is the new version of SPARK, a software development technology specifically designed for engineering high-reliability applications.
The Ada Conformity Assessment Test Suite, customised for GCC.
Tools for grading ACATS results, modified for Unix-like systems
Generation
ASN1SCC: An open source ASN.1 compiler for embedded systems
AADL model processor: mappings to code (C, Ada); Petri Nets; scheduling tools (MAST, Cheddar); WCET; REAL
Ada finite-state machine generator.
Generator of JUnit-compatible XML reports in Ada
Formal message specification and generation of verifiable binary parsers and message generators
Formal Methods Toolkit is a set of extension packages for Mathematica, supporting software. engineering activities related to modeling, verification and Ada code generation.
UML
Ada-tailored UML Modeling Language
ColdFrame generates Ada framework code and documentation from UML models.
UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology ๐.
Encryption
Ada Keystore - protect your sensitive data with secure storage
Math
Collection of basic math routines in Ada
Mathpaqs: a collection of mathematical packages in pure Ada
Mandelbrot renderer in "ASCII" (unicode actually, but text nonetheless)
This is an Ada 2012 package that provides an interface to BLAS.
Science
Algorithms, Containers and Protocols
Server implementing the Microsoft Language Protocol for Ada and SPARK
Language Server Protocol for Ada
Prototype implementation of LSP client - Visual Studio 2017
Generic Ada Library for Algorithms and Containers
The PragmAda Reusable Components
An Ada Library for UUID generation.
Genetic Algorithm Implementation for Ada
Small Library for Sodoku grid solving / finding
Simple Layer 3 Protocol
Christoph Karl Walter Grein's Smart Pointers
Fully functional Hungarian Algorithm implementation in Ada
NBAda - An Ada library of lock-free data structures and algorithms.
Simple blockchain in Ada
G2 network server leaf
Ada General Purpose Library -- Miscellaneous utilities
Ada binding to the Z3 Theorem Prover
Deque/buffer generics that consist of building blocks that may be combined in various ways to create higher abstraction buffers.
The Ada 95 Booch components are a port of Grady Booch's C++ components.
A suite of Ada 2012 generics to facilitate iterative and recursive parallelism for multicore systems.
Deepend is a storage pool with subpool capabilities for Ada 2012, Ada 2005, and Ada 95.
Charles is an Ada 95 container library, precursor to Ada 2005+ standard containers.
Cryptography
Utility programs for the encryption algorithms included in the PragmAda Reusable Components
Trivial implementation of fletcher_16 sum computation algorithm.
base58 encoding and decoding in ada
The libadacrypt-dev is a crypto library for Ada with a nice API. It is written for the i386 and x86_64 hardware architecture and supports AES, Twofish, 3DES, Serpent SHA-1/256/384/512, DSA, OAEP-RSA, HMAC, CMAC, SIV, OCB, Nonces, Elliptic Curves. etc. It also contains regression tests consisting of over 400 tests. Dependencies: make and gnat-4.9.
A cryptographic library in SPARK 2014
A pure Ada implementation of the SipHash PRF (mirror repository).
SHA-3 and other Keccak related algorithms in SPARK/Ada.
A project to implement the Ascon AEAD algorithm in Ada 2012 / SPARK 2014
An Ada 2012 / SPARK 2014 project that implements the SipHash keyed hash function.
An Ada 2012 / SPARK 2014 project that implements the NORX authenticated encryption algorithm
SPARK 2014 re-implementation of the TweetNaCl crypto library
SPARK TOTP library
xxhash in ada
libsodium for Ada - A secure cryptographic library
Ada Binding for the libsecret library
Compression
Zip-Ada: a standalone, portable Ada library for .zip archives
Ada binding for liblzma compression library
An Ada 2012 library for document container files
Patterns
Implementing promises in Ada. Type-safe, efficient, thread-safe, ...
This is an Ada 2012 package that provides a task pool system for jobs which each take the form of a single request that receives a single response.
An Ada 2012 implementation of the Rx methodology
System Modeling
A fuzzy inference system library for Ada
Ada library and tools for the analysis of Complex Networks and more
Parsers, Scanners, Linters, Analysers, Interpreters and Prettyprinters
Ada semantic analysis library.
Ada code analyzer
Grammar handling and parser generation Ada library
Pretty printing library for Ada
Incremental analysis in Ada
An Ada 2012 package to parse command line arguments and options
Embeddable Forth interpreter written in Ada
tools for writing lexers / parsers in Ada
An Ada implementation of XPath 1.0.
WisiToken is an LALR, LR1, and Packrat parser generator and run-time.
Format Readers and Writers
Ini file manager: a standalone, portable Ada package for configuration files
experimental YAML 1.3 implementation in Ada
An Ada 2012 library for parsing JSON
JSON/JWK/JWS/JWT/Base64 library in SPARK
The XML/Ada toolkit.
Formally verified, bounded-stack XML library
Excel Writer: a standalone, portable Ada package for producing Excel spreadsheets
GID (Generic Image Decoder): a standalone, portable generic Ada package for decoding images
Ada PDF Writer: a standalone, portable package for producing dynamically PDF documents
Implementation of Midi / MidiFile reading and writing
Ada Bar Codes: bar code (1D and 2D) generator in pure Ada
An Ada 2012 project that implements various binary-to-ASCII codecs such as Base64
A library of access routines to Axon's ABF file format (electrophysiology, most common) in Ada
TOML parser for Ada
Networking and Communication Middleware
BSD sockets in Ada
The D_Bus/Ada library provides an Ada binding to the D-Bus message bus system.
Chatting and Communication
Ada 2012 library for WeeChat plug-ins
A WeeChat plug-in written in Ada 2012 that plays sounds using libcanberra
A WeeChat plug-in written in Ada 2012 that displays emoji
Web
AWS templates engine.
Computer Graphics
The OpenGL 4.6 Rendering Kernel in Ada 2012
Thick Ada binding for OpenGL and GLFW
Ada binding for OpenGL/WebGL
Ada 2012 bindings to SDL 2
Ada bindings to NanoVG
FreeType binding for Ada 2005
General Purpose Computing
An Ada binding for the OpenCL host API
CUDA/Ada is an Ada binding to NVIDIAโs CUDA parallel computing platform and programming model.
Sound
Ada 2012 bindings for the Opus audio codec.
Ada 2012 bindings for libcanberra
Ada bindings for libsoundio
Ada binding to OpenAL which tries to mimic original API while using Ada types.
Sound Synthetizer Library implemented in Ada, from wavtable it resamples the elements and permit to create chords and notes from it. It use soundio, or alsa or win32 sound subsystem
Simple audio synthesis library
Two Ada Packages providing Linux ALSA Sound for C++ and Ada applications with portability across most linux distributions.
Scala is a powerful software tool for experimentation with musical tunings, such as just intonation scales, equal and historical temperaments, microtonal and macrotonal scales, and non-Western scales.
Localization
An Ada package allowing the externalization of application messages into a properties file.
Utilities
An Ada 2012 project that implements reference counting approaches to resource management with an emphasis on safety and usability.
Open Source Licenses library for Ada
Command-line utility that picks a file from a folder hierarchy with probability proportional to its size
Convenience subprograms to interact with C strings
Library and tool for transparently handling data and configuration file access in an Ada application. Supports MacOSX, Linux and Windows.
Provides GCC 'specs' files to cope with macOS SDK policy changes
Robotics
Ada client library for ROS2/RCL
Ada bindings for the player robotic platform
Linux and POSIX
Ada Windows POSIX binding
Ada Posix Binding to Video 4 Linux, used for RPI
An Ada 2012 library for monitoring filesystem events using Linux' inotify API
Minimal binding to libdl
Windows and .NET
Ada API to the Windows library
Ada bindings to the Microsoft NetFramework Api
Ada bindings for the Microsft WinRT Api
Ada bindings for the Microsoft Win32 Api
Frameworks
Robotics with Ada, ARM, and Lego
Firmwares
Drivers
Ada source code and complete sample GNAT projects for selected bare-board platforms supported by GNAT.
emBRICK driver and support for emBRICK in Ada
A SPARK/Ada driver for the DecaWave DW1000 Ultra-Wideband tranceiver.
SPARK/Ada drivers for the DecaWave EVB1000 evaluation board
Demos of multiplexed digital I/O for AdaPilot
Controllers
Software controller for solenoid engines (Ada/STM32F4)
Communication
Libraries
Giza is trying to be a simple widget tool kit for embedded platforms
Simple audio synthesis library
GEneric Sprite and Tile Engine
SANCTA multi-robot task allocation library
Applications
Waking up with a fresh cup of coffee
Square Inch Synthesizer
Simulated railway network in SPARK/Ada
Raspberry Pi using a BBC Micro:Bit as temperature sensor
Open source pocket synthesizer
Demonstration program that interacts with the AdaFruit BNO055 breakout board in order to send orientation data to a host computer
Ethernet traffic monitor on a STM32F746 board
Bindings
An Ada binding generator from SVD descriptions for bare board ARM devices.
Ada binding for the Pebble Time smartwatch
Ada bindings for wiringPi
Office
AZip: a free, portable Zip Archive Manager
TeXCAD: a simple LaTeX {picture} drawing tool
The Corporate Bullshit Generator
Mirror of Graphical File Manager for Linux
Trash Finder is a mail filter that operates as a plugin for your mail server, providing filtering on dozens of criteria along with management of known good mail.
Web
Wasabee: a Web browser with safety focus
Yet Another Static Site (Generator)
Multimedia
Apollo 11 lunar lander simulator (Ada/Gtk/Cairo)
A simple 3DS Max model renderer
Automation
A G-code parser and CNC controller (in Ada)
Simulation
VHDL 2008/93/87 simulator
Distributed Simulation of Transport Networks
Qt5 COVID-19 simulator. Ada code under the hood. ๐คฏ
Generators and Translators
Pascal to Ada translator
Code generator for Tiled the map editor
J2Ada translates a Java valid source code in Ada source code.
[DEPRECATED] Generate Ada bindings to C++ code
Converts Ada sourcesโ ASIS representation to XML, so as to make it easier to develop reporting and transformational tools using (for example) XSLT.
HTML generator for Ada95 library unit specs.
Ada2JS is experimental open source compiler, component of Matreshka.
SofCheck AdaMagic is ACATS validated and certified Ada compiler targeting C and/or C++ (4 command line switches for fine tuning). ObjectAda and several other commercial compilers share engine with AdaMagic. MapuSoft distributes AdaMagic as integral component of AppCOE.
Shells, Interpreters and Emulators
A POSIX shell for Windows.
GNAT Components Collection โ Core packages
An Ada 2012 emulation of Charles Babbageโs Analytical Engine
A component to aid in writing shell-like applications in Ada.
SPARforte programming language is an Ada-like scripting language, previously known as business user shell (bush). Can be used as interactive UNIX shell replacement.
Programming Languages
An Ada binding for Lua.
Ada bindings to the Lua language
ParaSail is a highly parallel experimental language, similar to Go and Erlang. Originaly owned by SofCheck (now AdaCore), it is a test project to try new ideas. Expandable pointers is a sample feature that is about to be introduced to SPARK and Ada. There are in fact 4 experimental languages: ParaSail, Sparkel, Javallel, Parython, all sharing bytecode interpreter and LLVM engine.
Misc
Ada implementation of DโHondt electoral result calculator
Bindings
Ada interface to the readline library
Ada bindings of Turbo Pascal 7.0 units with GTKAda.
Ada bindings of Turbo Pascal 7.0 units with Gnoga.
Ada BFD is an Ada binding for the GNU Binutils BFD library. It allows to read binary ELF, COFF files by using the GNU BFD.
Boehm GC interface library for gcc-Ada (GNAT)
Ada binding to Tcl/Tk. Note, the copyright is GPL 2.0 + GMGPL
Mirror of Ada binding to Tcl/Tk, based on TASH
Ada wrapper for the fast Stachniss' Hungarian solver
PCSC/Ada provides a thick Ada binding to PC/SC-middleware. The library allows programs written in Ada to communicate with smart cards using the SCard API.