<img width=300px"  src="https://github.com/ohenley/files/blob/master/awesome-ada/awesome_ada_logo.png" alt="Awesome">
     
    
    
      
        Ada is powering satellites, aircrafts, ships, power plants,
            surgical robots, drones, CNCs, servers, games and coffee makers.
        Ada is arguably the most { performant ∩ capable ∩
        precise ∩ readable ∩ mature } programming
        language.
        Ada is alive and kicking!
      
      Long live Ada/SPARK.
    
    
    
      
      A curated list of awesome resources related to the Ada and SPARK
      programming language.
    
    Contents
    
      
        Click to expand
      
      
        - Presentation
 
        - 
          Education
          
            - Entry Point
 
            - Tutorials
 
            - Online Books
 
            - Books
 
            - Specialties
 
            - Reference
 
          
         
        - 
          Community
          
            - 
              Questions and Answers
             
            - News and Resources
 
            - Competition
 
          
         
        - 
          Compilers
          
            - Open source
 
            - 
              Commercial / Open source
            
 
            - 
              Commercial / Closed source
            
 
            - Online
 
          
         
        - 
          Editors
          
            - 
              Integrated Development Editors
             
            - Text Modes
 
            - VSCode Extensions
 
          
         
        - 
          Deployment
          
            - Build and Package
 
            - 
              Continuous Integration
             
          
         
        - Runtimes
 
        - OS and Kernels
 
        - Games
 
        - 
          Frameworks
          
            - Components
 
            - Distributed
 
            - 
              Graphical User Interface
             
            - 
              Terminal User Interface
            
 
            - 3D
 
            - Web
 
            - Unit Test
 
            - Logging
 
            - Machine Learning
 
            - Automation
 
          
         
        - 
          Tools
          
            - Verification
 
            - Generation
 
            - UML
 
            - Encryption
 
          
         
        - 
          Libraries
          
            - Math
 
            - Science
 
            - 
              Algorithms, Containers and Protocols
            
 
            - Cryptograrphy
 
            - Compression
 
            - Patterns
 
            - System Modeling
 
            - 
              Parsers, Scanners, Linters, Analysers, Interpreters and
                Prettyprinters
            
 
            - 
              Format Readers and Writers
            
 
            - 
              Networking and Communication Middleware
            
 
            - 
              Chatting and Communication
            
 
            - Web
 
            - 
              Graphics and Multimedia
            
 
            - 
              General Purpose Computing
            
 
            - Sound
 
            - Localization
 
            - Utilities
 
            - Robotics
 
            - Linux and POSIX
 
            - Windows and .NET
 
          
         
        - 
          Hardware and Embedded
          
            - Frameworks
 
            - Firmwares
 
            - Drivers
 
            - Controllers
 
            - Communication
 
            - Libraries
 
            - Applications
 
            - Bindings
 
          
         
        - 
          Applications
          
            - Office
 
            - Web
 
            - Multimedia
 
            - Automation
 
            - Simulation
 
            - 
              Generators and Translators
            
 
            - 
              Shells and Interpreters
            
 
            - Programming Languages
 
            - Misc
 
          
         
        - Bindings
 
        - License
 
      
     
    Presentation
    
    Education
    Entry Point
    
      - 
        learn - Interactive learning
        platform designed to teach the Ada and SPARK programming languages.
      
 
    
    Tutorials
    
    Online books
    
    Books
    
      
Programming in Ada 2012
      - Comprehensive.
      
Beginning Ada Programming: From Novice to Professional
      - Introduction.
      
Ada 95: The Craft of Object-Oriented Programming
      - General, intermediate.
      
      Ada Plus Data Structures: An Object Oriented Approach
      - Data Structures.
      
      Ada for Software Engineers
      - Idioms, Architecture.
      
Concurrent and Real-Time Programming in Ada
      - Concurrency, Containers, Scheduling.
      
Data Structures and Algorithms: An Object-Oriented Approach Using Ada
        95
      - Data structures, Algorithms.
      
Building Parallel, Embedded, and Real-Time Applications with Ada
      - Concurrency, Distributed.
      
Analysable Real-Time Systems: Programmed in Ada
      - Scheduling.
      
Building High Integrity Applications with SPARK
      - Formal verification.
      
Ada and SPARK on ARM Cortex-M
      - Embedded.
    
    Specialties
    
      - 
        gems - Ada Gem Archive.
      
 
      - 
        ada-composition
        - A collections of small nifty demos/sample code that may help better
        layout data or structure project.
      
 
      - 
        ada-ic-learning -
        For additional learning resources, see the AdaIC learning section.
      
 
      - 
        ada-at-rosetta-code
        - A collection of programming tasks and their sample solutions in Ada.
      
 
    
    Reference
    
      - 
        iso-standard
        - The 2012 revision to the Ada Standard, usually known as Ada 2012.
      
 
      - 
        adalib - Standard Ada
        library specification as defined in Reference Manual.
      
 
    
    
    Questions and Answers
    
    News and Resources
    
      - 
        adacore-blog - An insight into
        the AdaCore ecosystem.
      
 
      - 
        ada-europe - Ada-Europe is an
        international organization, set up to promote the use of Ada.
      
 
      - 
        acm-sig-ada - The Special Interest
        Group on Ada.
      
 
      - 
        ada-resource-association -
        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”.
      
 
      - 
        ada-information-clearinghouse - News
        and resources for the Ada programming language.
      
 
      - 
        ada-planet - News
        Aggregator from the Ada programming language world.
      
 
    
    Competition
    
      <a href="https://www.makewithada.org/">
    <img width="800px" src="https://hackster.imgix.net/uploads/attachments/1164282/_UAa0j7WX8u.blob?auto=compress%2Cformat&w=800&h=200&fit=min">
</a>
     
    
      <a href="https://blog.adacore.com/announcing-the-first-ada-spark-crate-of-the-year-award">
    <img width="800px" src="https://raw.githubusercontent.com/AdaCore/Ada-SPARK-Crate-Of-The-Year/master/banner.jpg">
</a>
     
    Compilers
    Open source
    GPL (no linking exception)
    
      - 
        gnat-ce - 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)
    
      - 
        fsf-gnat - 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 - Experimental Ada
        compiler fully in Ada.
      
 
      - 
        byron - The Byron
        project is a community-driven Ada compiler, toolchain, and IDE-system.
      
 
    
    Commercial / Open source
    
      - 
        gnat-pro - 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
    
      - 
        janus-ada
        - Compiler supporting all the major features of the Ada 83, Ada 95, Ada
        2005 and Ada 2012 versions of the language.
      
 
      - 
        object-ada
        - PTC ObjectAda is an extensive family of native and cross development
        tools and runtime environments.
      
 
      - 
        apex-ada
        - PTC ApexAda is one of the industry’s most popular development
        environments for Ada and mixed Ada/C/C++ applications.
      
 
      - 
        greenhills-ada
        - Green Hills Software offers the industry’s first, fully validated
        family of Ada Cross Compilers for real-time targets.
      
 
      - 
        xgc - 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
    
    Edit
    Integrated Development Editor
    
      
      The GNAT Programming Studio -
      ada-visual
      - Ada language integration for Visual Studio 2017.
    
    Editors
    
      - 
        lea - LEA, a Lightweight
        Editor for Ada, aims to provide an easy, script-world-like, “look &
        feel” for developing Ada projects of any size and level, while enabling
        access to full-scale development tools like GNAT.
      
 
    
    Text Modes
    
    VSCode Extensions
    
    Deployment
    Build and Package
    
      - 
        alire - A catalog
        of ready-to-use Ada libraries plus a command-line tool (alr) to obtain,
        compile, and incorporate them into your own projects. It aims to fulfill
        a similar role to Rust’s cargo or OCaml’s opam.
      
 
      - 
        gprbuild - Adacore
        multi-language software build tool.
      
 
      - 
        ravenadm -
        Administration tool for Ravenports http://www.ravenports.com.
      
 
      - 
        synth - Next D/Ports
        build tool for live systems (Alternative for Portmaster and Portupgrade
        tools).
      
 
      - 
        ada4cmake - CMake
        macros for simple gnat project inclusion.
      
 
      - 
        cmake-ada-offa - Ada
        language support for CMake.
      
 
      - 
        cmake-ada-cho3 - CMake
        language support for Ada, fork of PLplot’s cross-platform support code.
      
 
    
    Continuous Integration
    
    Runtimes
    
      - 
        bb-runtimes - GNAT
        bare metal board support package (BSP).
      
 
      - 
        avr-ada - GNAT
        for 8-bit AVR microcontrollers.
      
 
      - 
        ada-runtime - A
        downsized Ada runtime which can be adapted to different platforms.
      
 
      - 
        cortex-gnat-rts
        - This package includes GNAT Ada Run Time Systems (RTSs) based on
        FreeRTOS and targeted at boards with Cortex-M0, M3, -M4, -M4F MCUs.
      
 
      - 
        adawebpack - GNAT
        RTL for WASM and bindings for Web API.
      
 
    
    OS and Kernels
    
      - 
        m2os - RTOS with simple tasking
        support for small microcontrollers.
      
 
      - 
        marte-os - 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.
      
 
      - 
        muen - An x86/64 Separation
        Kernel for High Assurance.
      
 
      - 
        ewok - EwoK
        is a microkernel targeting micro-controllers and embedded systems.
      
 
      - 
        bare-bones - An Ada
        port of the
        osdev.org minimal
        32-bit x86 kernel.
      
 
      - 
        lovelace-os -
        Lovelace is an effort to write a Unix like operating system using the
        Ada 2012 language.
      
 
      - 
        ada-kalinda-os
        - Ada_KALINDA is a sort of Mac Plus like OS written in Ada95.
      
 
      - 
        cxos - Ada Operating System
        development example.
      
 
      - 
        havk - x86-64
        security-focused OS being created with SPARK.
      
 
      - 
        cubit - CuBitOS is a
        multi-processor, 64-bit, (partially) formally-verified, general-purpose
        operating system, currently for the x86-64 architecture.
      
 
    
    Games
    
      - 
        steamsky - Roguelike in
        sky with a steampunk setting.
      
 
      - 
        unity-ada-tetris -
        Tetris, in Ada, for the Unity game engine.
      
 
      - 
        tictactoe - A
        tictactoe game written and proven in SPARK/Ada.
      
 
      - 
        ada-gate - AdaGate is a
        first-person 3D sokoban puzzle game within a Stargate / Portal fantasy
        setting for Windows, OS-X and Linux.
      
 
      - 
        rufas-cube -
        RufasCube is a puzzle game for Windows, OS-X and GNU Linux… it looks
        like a rubic cube but it’s a slider, not a twister.
      
 
      - 
        ada-venture -
        AdaVenture is a kid-friendly retro point&click game with mazes,
        dragons, bats & snakes.
      
 
      - 
        terminal-apps -
        Fun puzzle games that run on any terminal on any OS.
      
 
      - 
        co-terminal-apps
        - Retro Games that run in a terminal on any platform.
      
 
      - 
        mini-pacman -
        MiniPac is a kid friendly ascii character version of Pacman that plays
        in a commandline terminal.
      
 
      - 
        world-cup-sokerban
        - This is a soccer-themed, 3D sokoban puzzle game that runs on Windows,
        Mac OS-X and GNU Linux.
      
 
      - 
        pasta - Pasta! is a game of the
        “match-3” genre.
      
 
      - 
        buttons - A
        simple Gtkada Button Mania game.
      
 
      - 
        mine-detector -
        Mine Detector: a mine-finding game that never requires guessing.
      
 
    
    Frameworks
    Components
    
      - 
        simple-components
        - 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.
      
 
      - 
        ada-util - A logging
        framework close to Java log4j framework, support for properties,
        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, sockets),
        several concurrency tools (reference counters, counters, pools, fifos,
        arrays), process creation and pipes, support for loading shared
        libraries (on Windows or Unix), HTTP client library on top of CURL or
        AWS.
      
 
      - 
        gnatcoll-core -
        This is the core module of the GNAT Components Collection.
      
 
      - 
        gnatcoll-bindings
        - This is the bindings module of the GNAT Components Collection.
      
 
      - 
        gnatcoll-db - This
        is the DB module of the GNAT Components Collection.
      
 
      - 
        gnatcoll-json -
        This is a set of helpers for writing JSON-intefaces it contains JSON
        parses for most of the Ada runtime components.
      
 
      - 
        gneiss - Gneiss is an
        interface collection to be used with applications for component based
        systems. It aims to be easily portable/platform independent and is
        compatible with the
        ada-runtime.
      
 
      - 
        lace - A set of Ada
        components to allow 3D simulations, games and GUI’s in Ada.
      
 
    
    Distributed
    
      - 
        poly-orb - PolyORB
        provides a uniform solution to build distributed applications relying
        either on middleware standards.
      
 
    
    Graphical User Interface
    
      - 
        gnoga - The GNU
        Omnificent GUI for Ada.
      
 
      - 
        gwindows - GNU Ada
        Visual Interface.
      
 
      - 
        claw
        - CLAW, a High Level, Portable, Ada 95 Binding for Microsoft Windows.
      
 
      - 
        gtkada - Ada graphical
        toolkit based on Gtk3 components.
      
 
      - 
        qt-ada
        - Ada-2012 port to QT 5 framework.
      
 
      - 
        vtk-ada
        - Ada-2012 port to VTK 8.1 (Visualization Toolkit).
      
 
      - 
        fltk-ada - Ada-2012
        port to FLTK.
      
 
    
    Terminal User Interface
    
      - 
        curses -
        Advanced UNIX Terminal UI Ada Binding Package.
      
 
      - 
        ncurses-ada95
        - Ada95 bindings for ncurses.
      
 
    
    3D
    
      - 
        globe-3d - GL
        Object Based Engine for 3D.
      
 
      - 
        engine-3d - A 3D
        engine for DOS-talgics.
      
 
      - 
        ada-ogl - Ada
        OpenGL Framework.
      
 
      - 
        ada-doom-3 - Id
        Software’s Id-tech-4-BFG in the Ada programming language.
      
 
    
    Database
    
      - 
        ada-ado - Ada Database
        Objects is an Ada05 library that provides object relational mapping to
        access a database in Ada05. The library supports Postgresql, MySQL,
        SQLite as databases. Most of the concepts developped for ADO come from
        the Java Hibernate ORM.
      
 
      - 
        ada-base - Thick
        database bindings to MySQL, PostgreSQL and SQLite for Ada.
      
 
      - 
        apq-base
        - APQ is a database interface library written in Ada95.
      
 
    
    Web
    
      - 
        aws - AWS is a complete
        framework to develop Web based applications in Ada.
      
 
      - 
        awa - Ada Web
        Application is a framework to build a Web Application in Ada 2012. The
        framework provides several ready to use and extendable modules that are
        common to many web application. This includes the login, authentication,
        users, permissions, managing comments, tags, votes, documents, images.
        
          - 
            dynamo - Code
            generator used to generate an Ada Web Application or database
            mappings from hibernate-like XML description, YAML doctrine model or
            UML models.
          
 
          - 
            ada-wiki - Ada
            Wiki is a small library that provides a Wiki engine.
          
 
          - 
            ada-security
            - OAuth 2.0 client and server framework to secure web applications.
          
 
          - 
            ada-el - This
            library provides the support for a simple Expression Language close
            to the Java Unified Expression Language (EL).
          
 
          - 
            ada-asf - Ada
            Server Faces allows to create web applications using the same
            pattern as the Java Server Faces (See JSR 252, JSR 314 and JSR 344).
          
 
          - 
            ada-servlet -
            Ada Servlet allows to create web applications using the same pattern
            as the Java Servlet (See JSR 154, JSR 315).
          
 
        
       
      - 
        swagger-ada - Ada
        support for Swagger codegen: OpenAPI Generator is a code generator that
        supports generation of API client libraries, server stubs and
        documentation automatically given an OpenAPI Spec.
      
 
      - 
        matreshka - 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
    
      - 
        ahven - Ahven is a simple
        unit test library and framework for the Ada programming. language. It is
        loosely modelled after JUnit and some ideas from AUnit.
      
 
      - 
        aunit - Ada unit
        testing framework.
      
 
      - 
        gnatbdd - Behavior Driven
        Development in Ada.
      
 
      - 
        scripted-testing
        - Supports functional testing using Tcl scripts.
      
 
    
    Logging
    
      - 
        alog - Alog is a stackable
        logging framework for Ada.
      
 
    
    Machine Learning
    
      - 
        fuzzyml - Fuzzy
        machine learning framework.
      
 
    
    Automation
    
      - 
        aicwl -
        Collection of packages provided for design of high-quality industrial
        control widgets for Ada applications.
      
 
      - 
        ada-for-automation
        - A4A is a framework for designing industrial automation applications
        using the Ada language.
      
 
    
    
    Verification
    
      - 
        gnat-coverage -
        GNATcoverage is a tool to analyze and report program coverage.
      
 
      - 
        adacontrol - Ada
        constructs lint tool.
      
 
      - 
        spark-2014 - SPARK
        formal verification toolset.
      
 
      - 
        acats - The Ada
        Conformity Assessment Test Suite, customised for GCC.
      
 
      - 
        acats-grading
        - Tools for grading ACATS results, modified for Unix-like systems.
      
 
    
    Generation
    
      - 
        asn1scc - ASN1SCC: An
        open source ASN.1 generator to Ada type declarations and
        encoders/decoders.
      
 
      - 
        ocarina - AADL model
        processor: mappings to Ada code; Petri Nets; scheduling tools (MAST,
        Cheddar); WCET; REAL.
      
 
      - 
        fmt - Formal Methods Toolkit
        is a set of extension packages for Mathematica, supporting software.
        engineering activities related to modeling, verification and Ada code
        generation.
      
 
      - 
        automate -
        Finite-state machine generator.
      
 
      - 
        ajunitgen - Generator
        of JUnit-compatible XML reports in Ada.
      
 
      - 
        record-flux -
        RecordFlux: Toolset for the formal specification of messages and the
        generation of verifiable binary parsers and message generators in SPARK.
      
 
    
    UML
    
      - 
        ada-ml - Ada-tailored UML
        Modeling Language.
      
 
      - 
        coldframe -
        ColdFrame generates Ada framework code and documentation from UML
        models.
      
 
      - 
        umbrello - Unified Modelling
        Language (UML) diagram program based on KDE Technology. Outputs Ada.
      
 
    
    Encryption
    
      - 
        ada-keystore -
        Ada Keystore - protect your sensitive data with secure storage.
      
 
    
    Libraries
    Math
    
      - 
        math-packages -
        Collection of basic math routines in Ada.
      
 
      - 
        mathpaqs - Mathpaqs
        is a collection of mathematical, 100% portable, packages in the Ada
        programming language.
      
 
      - 
        mandelbrot-ascii
        - Mandelbrot renderer in “ASCII” (unicode actually, but text
        nonetheless).
      
 
      - 
        lalg - Interface to dense
        linear algebra packages.
      
 
    
    Science
    
      - 
        si -
        SI units checked and unchecked.
      
 
    
    
      Algorithms, Containers and Protocols
    
    
      - 
        ada-language-server
        - Adacore server implemention of the the Microsoft Language Protocol for
        Ada and SPARK.
      
 
      - 
        ada-lsp - Language
        Server Protocol for Ada.
      
 
      - 
        ada-lsp-client
        - Prototype implementation of LSP client - Visual Studio 2017.
      
 
      - 
        ada-traits-containers
        - Generic Ada Library for Algorithms and Containers.
      
 
      - 
        dequesterity
        - Deque/buffer generics that consist of building blocks that may be
        combined in various ways to create higher abstraction buffers.
      
 
      - 
        pragmarc - PragmAda
        Reusable Components (PragmARCs) from PragmAda S/W Engineering.
      
 
      - 
        booch95 - The
        Ada 95 Booch components are a port of Grady Booch’s C++ components.
      
 
      - 
        ada-id - Simple
        Ada library for generating UUIDs.
      
 
      - 
        ada-ga - Genetic
        Algorithm Implementation for Ada.
      
 
      - 
        ada-sodoku - Small
        Library for Sodoku grid solving / finding.
      
 
      - 
        sl3p - Simple Layer 3
        Protocol.
      
 
      - 
        smart-pointers
        - A package providing a reference-counted access type Smart_Pointer.
      
 
      - 
        hungarian-algorithm
        - Hungarian Algorithm implementation in Ada.
      
 
      - 
        sal - SAL
        (Stephe’s Ada Library).
      
 
      - 
        nb-ada - NBAda : An Ada
        library of lock-free data structures and algorithms.
      
 
      - 
        paraffin - A
        suite of Ada 2012 generics to facilitate iterative and recursive
        parallelism for multicore systems.
      
 
      - 
        deepend -
        Deepend is a storage pool with subpool capabilities for Ada 2012, Ada
        2005, and Ada 95.
      
 
      - 
        charles
        - Charles is an Ada 95 container library, precursor to Ada 2005+
        standard containers.
      
 
      - 
        simple-blockchain
        - Simple blockchain in Ada.
      
 
      - 
        adagio - Gnutella2 (G2)
        network server leaf.
      
 
      - 
        agpl - Ada General Purpose
        Library (Miscellaneous utilities, with a robotic flavor).
      
 
      - 
        az3 - Ada binding for Z3
      
 
    
    Cryptography
    
      - 
        threefish - Ada
        Implementation of the Threefish-256 Encryption Algorithm.
      
 
      - 
        fletcher - Trivial
        implementation of fletcher_16 checksum computation algorithm.
      
 
      - 
        base58-ada
        - Base58 encoding and decoding in Ada.
      
 
      - 
        ada-crypto-library
        - This is a crypto library for Ada with a nice API and is written for
        the i386 and x86_64 hardware architecture.
      
 
      - 
        libsparkcrypto
        - A cryptographic library implemented in SPARK.
      
 
      - 
        sip-hash - A pure
        Ada implementation of the SipHash PRF.
      
 
      - 
        libkeccak - A SPARK
        implementation of the Keccak family of sponge functions and related
        constructions.
      
 
      - 
        ascon-spark -
        Ada/SPARK implementation of the Ascon Authenticated Encryption with
        Additional Data Algorithm.
      
 
      - 
        spark-sip-hash -
        Ada/SPARK implementation of the SipHash keyed hash function.
      
 
      - 
        spark-norx -
        Ada/SPARK implementation of the NORX Authenticated Encryption with
        Additional Data Algorithm.
      
 
      - 
        spark-nacl -
        SPARK 2014 re-implementation of the TweetNaCl crypto library.
      
 
      - 
        stotp - Timed One-Time-Pad
        (RFC 6238) implementation in SPARK.
      
 
      - 
        xxhash-ada -
        Extremely fast non-cryptographic Hash algorithm, xxhash is working at
        speeds close to RAM limits.
      
 
      - 
        libsodium-ada -
        A secure cryptographic library (libsodium for Ada).
      
 
      - 
        ada-libsecret -
        Ada Binding for the libsecret library.
      
 
    
    Compression
    
      - 
        zip-ada - Zip-Ada is
        a programming library for dealing with the Zip compressed archive file
        format.
      
 
      - 
        ada-lzma - Ada
        binding for liblzma compression library.
      
 
      - 
        dcf-ada - An Ada 2012
        library for document container files (Based on Zip-Ada).
      
 
    
    Patterns
    
      - 
        ada-promises -
        Implementing promises in Ada. Type-safe, efficient, thread-safe.
      
 
      - 
        reqrep-task-pools
        - Task pool system for jobs.
      
 
      - 
        rxada - An Ada 2012
        implementation of the Rx methodology.
      
 
    
    System Modeling
    
      - 
        ada-fuzzy - A fuzzy
        inference system library for Ada.
      
 
      - 
        radalib - Ada
        library and tools for the analysis of Complex Networks and more.
      
 
    
    
      Parsers, Scanners, Linters, Analysers, Interpreters and Prettyprinters
    
    
      - 
        libadalang -
        Libadalang is a library for parsing and semantic analysis of Ada code.
        It is meant as a building block for integration into other tools (IDE,
        static analyzers, etc).
      
 
      - 
        aflex-ayacc - Ada95 scanner and
        parser generators.
      
 
      - 
        wisitoken -
        WisiToken is an LALR, LR1, and Packrat parser generator and run-time.
      
 
      - 
        gela - Ada code analyzer.
      
 
      - 
        anagram - Grammar
        handling and parser generation Ada library.
      
 
      - 
        ada-pretty - Pretty
        printing library for Ada.
      
 
      - 
        increment -
        Incremental analysis in Ada.
      
 
      - 
        parse-args - Simple
        command-line argument parsing.
      
 
      - 
        aforth -
        Embeddable Forth interpreter written in Ada.
      
 
      - 
        parser-tools - Tools
        for writing lexers / parsers in Ada.
      
 
      - 
        xia - An Ada
        implementation of XPath 1.0.
      
 
    
    
    
      - 
        ini-files - The
        Ini file manager consists of a package, Config, which can read and
        modify informations from various configuration files known as “ini”
        files.
      
 
      - 
        protobuf-ada -
        Experimantal Ada code generation support for Google Protocol Buffers.
      
 
      - 
        ada-yaml - Experimental
        YAML 1.3 implementation in Ada.
      
 
      - 
        json-ada - An Ada 2012
        library for parsing JSON.
      
 
      - 
        jwx - A formally
        verified JSON library in SPARK.
      
 
      - 
        xmlada - The XML/Ada
        toolkit.
      
 
      - 
        xml-ez - Library for
        emitting XML from Ada programs.
      
 
      - 
        spark-xml - A formally
        verified XML library in SPARK.
      
 
      - 
        excel-writer -
        Create Excel files with basic formats.
      
 
      - 
        generic-image-decoder -
        Multi-format image decoder library for Ada.
      
 
      - 
        ada-pdf-writer
        - Ada package for producing easily and automatically PDF files, from an
        Ada program, with text, vector graphics, images (JPEG).
      
 
      - 
        ada-midi -
        Implementation of Midi / MidiFile reading and writing.
      
 
      - 
        ada-bar-codes
        - Ada Bar Codes provides a package for generating various types of bar
        codes (1D, or 2D like QR codes) on different output formats, such as PDF
        or SVG.
      
 
      - 
        ada-bin2asc -
        Various binary-to-ASCII codecs such as Base64.
      
 
      - 
        abf-io - A library of
        access routines to Axon’s ABF file format (electrophysiology, most
        common) in Ada.
      
 
      - 
        ada-toml - TOML
        parser for Ada.
      
 
    
    
      Networking and Communication Middleware
    
    
      - 
        anet - Anet is a networking
        library for the Ada programming language.
      
 
      - 
        adhcp - ADHCP is an
        implementation of the DHCP protocol in Ada.
      
 
      - 
        adasockets -
        IPv4 socket library (TCP, UDP, and multicast).
      
 
      - 
        dbus-ada - The
        D_Bus/Ada library provides an Ada binding to the D-Bus message bus
        system.
      
 
      - 
        zeromq-ada -
        Binding to the ZeroMQ comunications-library.
      
 
    
    Chatting and Communication
    
      - 
        axmpp - With the AXMPP
        library you can connect to a Jabber server to send and receive messages.
      
 
      - 
        weechat-ada - Ada 2012
        library for WeeChat plug-ins.
      
 
      - 
        weechat-canberra
        - A WeeChat plug-in written in Ada 2012 that plays sounds using
        Canberra.
      
 
      - 
        weechat-emoji - A
        WeeChat plug-in written in Ada 2012 that displays emoji.
      
 
    
    Web
    
    
    
      - 
        orka - The OpenGL 4.6
        Rendering Kernel in Ada 2012.
      
 
      - 
        opengl-ada - Thick Ada
        binding for OpenGL and GLFW.
      
 
      - 
        adagl - Multiplatform
        Ada/OpenGL bindings (ported to native/OpenGL, A2JS/WebGL and
        WASM/WebGL).
      
 
      - 
        sdlada - Ada 2012
        bindings to SDL 2.
      
 
      - 
        ada-nanovg - Ada
        bindings to NanoVG.
      
 
      - 
        free-type-ada -
        FreeType binding for Ada 2005.
      
 
      - 
        asfml - Ada binding to the
        Simple and Fast Multimedia Library.
      
 
    
    General Purpose Computing
    
      - 
        cuda-ada -
        CUDA/Ada is an Ada binding to NVIDIA’s CUDA parallel computing platform
        and programming model.
      
 
      - 
        opencl-ada - An Ada
        binding for the OpenCL host API.
      
 
    
    Sound
    
      - 
        opus-ada - Ada 2012
        bindings for the Opus audio codec.
      
 
      - 
        canberra-ada - Ada
        2012 bindings for libcanberra, an implementation of the XDG Sound Theme
        and Name Specifications.
      
 
      - 
        ada-soundio -
        Ada bindings for libsoundio.
      
 
      - 
        oto - Ada binding to
        OpenAL which tries to mimic original API while using Ada types.
      
 
      - 
        ada-synthetizer
        - Sound Synthetizer Library implemented in Ada.
      
 
      - 
        ada-synth-lib
        - Simple audio synthesis library.
      
 
      - 
        scala - 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.
      
 
      - 
        ada-portable-sound
        - a linux-sound-playing package for Ada apps that can asynchronously
        start and stop music loops, as well as initiate transient sounds.
        Suitable for games.
      
 
    
    Localization
    
      - 
        zanyblue - An
        Ada package allowing the externalization of application messages into a
        properties file.
      
 
    
    Utilities
    
      - 
        auto-counters -
        Reference counting approaches to resource management.
      
 
      - 
        a-stream-tools
        - Stream utilities for Ada2005 and 2012.
      
 
      - 
        ssprep - An
        extensible template engine akin to jinja but using
        template-parser
        and intended for command line usage.
      
 
      - 
        licensing - Open
        Source Licenses library for Ada.
      
 
      - 
        simple-logging -
        Easy to use logging facilities for output to console in Ada programs.
      
 
      - 
        rsfile - Command-line
        utility that picks a file from a folder hierarchy with probability
        proportional to its size.
      
 
      - 
        cstrings - Convenience
        subprograms to interact with C strings.
      
 
      - 
        cvsweb2git - Tool
        to imports CVS repository shared on Ada Conformity Assessment Authority
        into the Git repository.
      
 
      - 
        ada-bundler - Library
        and tool for transparently handling data and configuration file access
        in an Ada application. Supports MacOSX, Linux and Windows.
      
 
      - 
        macos-sdks-vs-gcc
        - Provides GCC ‘specs’ files to cope with SDK policy changes.
       
      - 
        ux-strings -
        Unicode extended strings.
      
 
    
    Robotics
    
      - 
        rclada - Ada client
        library for ROS2/RCL.
      
 
      - 
        player-ada - Ada
        bindings for the player robotic platform.
      
 
    
    Linux and POSIX
    
      - 
        florist - POSIX
        Ada binding, IEEE Standards 1003.5(b,c).
      
 
      - 
        wposix - Ada Windows
        POSIX binding.
      
 
      - 
        ada-v4l2 - Ada Posix
        Binding to Video 4 Linux, used for RPI.
      
 
      - 
        inotify-ada - An Ada
        2012 library for monitoring filesystem events using Linux’ inotify API.
      
 
      - 
        dl-ada - Minimal binding
        to libdl.
      
 
    
    Windows and .NET
    
    Hardware and Embedded
    Frameworks
    
    Firmwares
    
      - 
        certiflie - Source
        code for the full Ada + SPARK Crazyflie 2.0 firmware.
      
 
    
    Drivers
    
      - 
        ada-drivers-library
        - Ada drivers for various MCU and sensors.
      
 
      - 
        em-brick - emBRICK
        driver and support for emBRICK in Ada.
      
 
      - 
        dw1000 - Ada/SPARK driver
        for the DecaWave DW1000 ultra-wideband (UWB) radio chip.
      
 
      - 
        evb1000 - Ada/SPARK
        drivers to control the on-board peripherals of the DecaWave EVB1000
        evaluation board.
      
 
      - 
        multiplexed-io
        - This contains explorations, for AdaPilot, of implementing drivers for
        the AdaRacer MCU, using the Ravenscar profile of Ada 2012 from AdaCore
        and device bindings generated using SVD2Ada.
      
 
    
    Controllers
    
    Communication
    
      - 
        sensortile
        - This project shows how to initialize a SensorTile and how to send
        sensor data over BLE from a SensorTile to a suitable host.
      
 
    
    Libraries
    
      - 
        giza - Giza is
        trying to be a simple widget tool kit for embedded platforms.
      
 
      - 
        ada-synth-lib
        - Simple audio synthesis library.
      
 
      - 
        geste - GESTE is
        a sprite and tile 2D render engine designed to run on micro-controllers.
      
 
      - 
        sancta - SANCTA
        multi-robot task allocation library.
      
 
    
    Applications
    
      - 
        coffee-clock
        - Waking up with a fresh cup of coffee.
      
 
      - 
        noise-nugget
        - Square Inch Synthesizer.
      
 
      - 
        spark-railway-demo
        - Simulated railway network in SPARK/Ada.
      
 
      - 
        micro-tem-pi -
        Raspberry Pi using a BBC Micro:Bit as temperature sensor.
      
 
      - 
        wee-noise-maker
        - Wee Noise Maker is an open source pocket synthesizer.
      
 
      - 
        lunar-lander-rotation
        - Program that interacts with the AdaFruit BNO055 breakout board in
        order to send orientation data to a host computer.
      
 
      - 
        railway-simulation
        - Program simulating a railway network with trains, switches and
        signaling. The signaling system is proven with SPARK/Ada to ensure that
        trains cannot collide.
      
 
      - 
        etherscope -
        Ethernet traffic monitor on a STM32F746 board.
      
 
    
    Bindings
    
      - 
        svd2ada - An Ada
        binding generator from SVD descriptions for bare board ARM devices.
      
 
      - 
        ada-time - Ada
        binding for the Pebble Time smartwatch.
      
 
      - 
        wiring-pi-ada - Ada
        bindings for wiringPi.
      
 
    
    Applications
    Office
    
      - 
        azip - A free, portable
        Zip Archive Manager.
      
 
      - 
        texcad - TeXCAD is a
        program for drawing or retouching {picture}s in LaTeX.
      
 
      - 
        cbsg - The Corporate
        Bullshit Generator.
      
 
      - 
        hunter - Graphical
        (GtkAda) file manager for Linux.
      
 
    
    Mail
    
      - 
        trash-finder
        - 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
    
      - 
        ironsides -
        Authoritative DNS server verified by SPARK/Ada.
      
 
      - 
        wasabee - A Web
        browser with safety focus.
      
 
      - 
        yass
        - Yet Another Static Site Generator (like Jekyll or Hugo).
      
 
    
    
    
      - 
        eagle-lander
        - Apollo 11 lunar lander simulator (Ada/Gtk/Cairo).
      
 
      - 
        ada-3ds - A simple 3DS
        Max model renderer.
      
 
    
    Automation
    
      - 
        acnc - A G-code
        parser and CNC controller (in Ada).
      
 
    
    Simulation
    
      - 
        ghdl - VHDL 2008/93/87
        simulator.
      
 
      - 
        parallel-sim
        - Distributed Simulation of Transport Networks.
      
 
      - 
        covid-19-simulator
        - Multi engine/algorithms COVID-19 simulator. Ada, Qt code under the
        hood.
      
 
    
    Generators and Translators
    
      - 
        adabrowse
        - HTML generator for Ada95 library unit specs.
      
 
      - 
        pascal-to-ada
        - A Pascal to Ada translator.
      
 
      - 
        tiled-code-gen
        - Code generator for Tiled the map editor.
      
 
      - 
        cvsweb2git - This
        tool imports CVS repository shared on Ada Conformity Assessment
        Authority into the Git repository.
      
 
      - 
        j2ada - Translator for
        a Java valid source code in Ada source code.
      
 
      - 
        a2js -
        Ada2JS is experimental open source compiler, component of Matreshka.
      
 
      - 
        ada-magic -
        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.
      
 
      - 
        cappulada - Ada
        binding generator for C++.
      
 
      - 
        asis2xml -
        Converts Ada sources’ ASIS representation to XML, so as to make it
        easier to develop reporting and transformational tools using (for
        example) XSLT.
      
 
    
    
      Shells, Interpreters and Emulators
    
    
      - 
        sparforte - SPARforte programming
        language is an Ada-like scripting language, previously known as business
        user shell (bush). Can be used as interactive UNIX shell replacement.
      
 
      - 
        gsh - GSH is non
        interactive POSIX shell for Windows, aimed at GNU software builds. 2-3
        times faster than Cygwin.
      
 
      - 
        gnatcoll-scripts-shell
        - GNATCOLL.Scripts.Shell is a simple embeddable scripting language, part
        of GNATCOLL Core.
      
 
      - 
        analytical-engine
        - An Ada 2012 emulation of Charles Babbage’s Analytical Engine.
      
 
      - 
        a-shell - A component
        to aid in writing shell-like applications in Ada.
      
 
    
    Programming Languages
    
      - 
        para-sail - 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.
      
 
      - 
        ada-lua - Ada binding
        for Lua.
      
 
      - 
        coreland-lua-ada
        - Ada bindings to the Lua language.
      
 
    
    Misc
    
      - 
        dhondt - Ada
        implementation of D’Hondt electoral result calculator.
      
 
      - 
        septum - An
        interactive context-based text search tool for searching large
        codebases.
      
 
    
    Bindings
    
      - 
        pcsc-ada - 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.
      
 
      - 
        areadline - Ada
        interface to the readline library.
      
 
      - 
        tp7-ada-gtkada
        - Implementation of Turbo Pascal 7.0 units with GTKAda.
      
 
      - 
        tp7-ada-gnoga -
        Implementation of Turbo Pascal 7.0 units with Gnoga.
      
 
      - 
        ada-bfd - 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.
      
 
      - 
        boehmgc-ada - Ada
        binding to the Boehm-Demers-Weiser conservative garbage collector.
      
 
      - 
        tcl-ada-shell
        - Tcl Ada SHell (Tash) is an Ada binding to Tcl/Tk.
      
 
      - 
        tashy - Tashy is short
        from Tcl Ada SHell Younger. It is derivate of Tash, focused mostly on Tk
        binding.
      
 
      - 
        hungarian - Ada
        wrapper for the fast Stachniss’ Hungarian solver.
      
 
    
    License