Alire community mirror
Alire community index.
A daily shadow of the Alire community catalog, rendered with the same package, version, relationship, and JSON views as the Flyology index.
alr index --reset-community
793 packages
2161 manifests
681 source crates
v1.4.0 index format
Index activity
Recent changes.
Crates and versions recently added or updated in this index.
-
New crate
adalang_analyzer
Crate added to the index -
New version
zblib
2.0.1Version added to the index -
New version
covex
1.14.0Version added to the index -
New version
a0b_tools
0.3.0Version added to the index -
Manifest update
adsa
1.5.0Changed origin, website -
New version
adsa
1.5.1Version added to the index
Package list
Indexed packages.
Search by name, description, version, or tag. Each package includes its dependencies, origin, availability rules, and complete parsed manifest.
Showing all 793 packages
a0b_armv7m 0.4.0 ARMv7-M support (Cortex-M3, Cortex-M4, Cortex-M7)
0.4.0
a0b_armv7m_systick_clock 0.1.0 A0B Monotonic Clock by ARMv7M SysTick
0.1.0
a0b_armv7m_systick_clock_timer 0.1.0 A0B Monotonic Clock and Timer by ARMv7M SysTick
0.1.0
a0b_atsam3x8e 0.4.0 ATSAM3X8E base and SVD package
0.4.0
a0b_atsam3x8e_gpio 0.1.0 A0B ATSAM3X8E GPIO/EXTI
0.1.0
a0b_atsam3x8e_tc5_timer 0.1.0 A0B ATSAM3X8E High Resulotion Timer on top of TC5
0.1.0
a0b_atsam3x8e_twi_i2c 0.1.0 A0B ATSAM3X8E TWI I2C Driver
0.1.0
a0b_base 0.5.0 Fundamental types, GCC built-ins, and base packages for Ada projects
0.5.0
The a0b_base crate provides the root package hierarchy and foundational components tailored for embedded, bare-metal, and low-level Ada applications.
Key features include:
- Foundational Types:
Integer_*andUnsigned_*types of various sizes (1 to 64 bits) with shift and rotate operations.Unsigned_*_Arraytypes and "Enumerable" modular types (2 to 8 bits).
- Low-Level Utilities:
- Big-endian formatted types (
A0B.Types.Big_Endian) for low-level protocol specifications. - Type declarations specifically designed for use with the SVD2Ada code generator.
- Big-endian formatted types (
- Compiler Bindings:
- Direct bindings to GCC built-ins (such as
bswap,clz,ffs) inA0B.Types.GCC_Builtins.
- Direct bindings to GCC built-ins (such as
a0b_callbacks 0.2.0 A0B Callbacks
0.2.0
a0b_exti 0.1.0 A0B: EXTI API
0.1.0
a0b_gpio 0.1.0 A0B GIOP API
0.1.0
a0b_i2c 0.1.0 A0B I2C API
0.1.0
a0b_sensirion 0.1.0 A0B: Utilities for various Sensirion's sensors
0.1.0
The a0b-sensirion crate provides essential low-level utilities for interfacing with Sensirion sensors, specifically focusing on the data integrity requirements of their communication protocols. It offers specialized routines for CRC calculation and provides automated packet encoding and decoding logic that handles the insertion and deletion of CRC bytes. By abstracting these boilerplate tasks, the crate ensures reliable data transmission and simplifies the implementation of drivers for any Sensirion hardware utilizing checksum-protected packets.
a0b_stm32f2_generic_exti 0.1.0 A0B: STM32F2+ Generic EXTI
0.1.0
a0b_stm32f2_generic_gpio 0.1.0 A0B: STM32F2+ Generic GPIO
0.1.0
a0b_stm32f401 0.3.0 STM32F401 base and SVD package
0.3.0
a0b_stm32f401_dma 0.1.0 A0B: STM32F401 DMA
0.1.0
a0b_stm32f401_gpio 0.1.0 A0B: STM32F401 GPIO/EXTI
0.1.0
a0b_stm32f401_i2c 0.1.0 A0B: STM32F401 I2C
0.1.0
a0b_stm32f401_tim11_timer 0.1.0 A0B: Timer based on STM32F401 TIM11
0.1.0
a0b_stm32g4 0.1.0 A0B: STM32G4 base support
0.1.0
a0b_stm32g474 0.2.0 A0B: STM32G474 base support and SVD files
0.2.0
a0b_stm32g474_gpio 0.1.0 A0B: STM32G474 GPIO/EXTI
0.1.0
a0b_stm32g4_gpio 0.1.0 A0B: STM32G4 GPIO
0.1.0
a0b_stm32h723 0.1.0 STM32H723 base and SVD package
0.1.0
a0b_time 0.2.0 A0B Monotonic Time
0.2.0
a0b_timer 0.1.0 A0B Timer
0.1.0
a0b_tools 0.3.0 A0B Tools: Runtime Generator
0.3.0
The primary tool in this crate is the a0b-runtime generator.
While GNAT provides several standard runtimes (such as light, light-tasking, and embedded), these can be difficult to customize for specific project requirements.
a0b-tools solves this by allowing developers to generate a tailored, project-specific runtime from a single configuration file.
It also enables the creation of runtimes for hardware platforms and MCUs that do not have prebuilt GNAT runtimes available, providing full control over startup code, linker scripts, and Ada library components.
aaa 0.3.0 Alex's Ada Assortment (of miscellaneous utilities)
0.3.0
Alex's Ada Assortment of Utilities
- Text formatting (paragraphs, tables).
- Indefinite containers.
- Enumeration validity/conversions of string images.
- On-demand stack backtraces.
- String containers and utilities.
- Simple subprocess spawning.
- Write-through minimal cache for objects stored in files
aaa_texts 0.3.0 Utilities to deal with enriched human texts (ANSI, Unicode)
0.3.0
aarch64_baremetal_ada 1.0.0 AArch64 Baremetal Ada
1.0.0
ada_caser 0.1.0 Applies casing rules to Ada source code.
0.1.0
ada_fuse 1.0.1 Ada bindings for Fuse (Filesystem in Userspace)
1.0.1
ada_gui 20240224.0.1 An Ada-oriented GUI
20240224.0.1
Ada_GUI
An Ada-oriented GUI
Traditionally, GUIs have been implemented by the client registering callback operations, then giving up its thread of control to the GUI. This is a hack to address the inherent parallelism of a GUI in sequential languages. It results in code that is unnecessarily difficult to understand.
In a concurrent language like Ada, a better design for a GUI is for the GUI to have its own task, so it doesn't require that its client give up a thread of control. GUI events are communicated to the client through a protected queue of events. The client software can be written in the clearest way possible, unconstrained by the GUI.
Ada_GUI is such a GUI.
The purpose of Ada_GUI is to provide the specification, in hopes that multiple implementations will be created. Note that some of the comments in the specification are specific to the sample implementation, and should be removed or modified for other implementations. Especially interesting would be an implementation that is not GNAT specific.
Sample Implementation
A sample implementation of Ada_GUI is supplied, derived from Gnoga, but simplified, reorganized, and converted to put events on a protected queue rather than call callbacks. The name Gnoga has been retained for the name of the implementation hierarchy, located at Ada_GUI.Gnoga, in recognition. Those parts of Kazakov's Simple Components used by the implementation are provided as well, with some minor modifications. If you have your own version of the Simple Components, you may use it instead: Delete all Ada source files that do not begin with ada_gui.
The sample implementation is reasonably full-featured and useful. The implementation is more responsive than the former proof-of-concept directly on full Gnoga.
The Test directory contains boot.html, boot.js, and jquery.min.js. These files must be available to every Ada-GUI program. It also contains favicon.ico, an icon of Ada.
Show_All creates at least one of each widget. Visibility, playing audio, and responding to key-press events is demonstrated. Changing this program is the easiest way to experiment with the sample implementation. The audio file glass.ogg and image file rgb.jpg are used by Show_All.
Luhn_Gen calculates Luhn checksum digits. Enter the first 15 digits of your credit-card number and it will generate the 16th.
Random_Int is a Gnoga program that has been revised to use Ada GUI instead. It will generate random integers in a desired range.
Installation of the Sample Implementation
Gnoga and the Simple Components require a recent GNAT compiler, so Ada_GUI cannot be compiled with another compiler. The file gnat.adc is needed to compile the Simple Components extensions to GNAT.Sockets. The use of gnatmake is recommended, as gprbuild is for mixed-language or complicated builds, which this is not. After compiling, it is recommended that you write-protect the .ali files. Typically, you can use a command such as
gnatmake -m -j0 -gnat12 -gnatan -gnato2 -O2 -fstack-check Test/show_all.adb
If you keep the Ada-GUI source files in a single directory, including the Simple Components source files, and have the compiler put the object and .ali files in that directory, then you need only add -I/path/to/Ada_GUI/ to your program's gnatmake command to use Ada_GUI.
ada_language_server 26.0.0 An implementation of the Microsoft's Language Server Protocol for Ada
26.0.0
ada_lua 0.1.0 An Ada binding for lua
0.1.0
ada_pretty 1.0.0 Ada Pretty Printer Library
1.0.0
ada_sqlite3 0.1.1 Sqlite3 bindings for Ada with embedded SQLite engine
0.1.1
ada_toml 0.5.0 TOML parser for Ada
0.5.0
ada-toml: TOML parser for Ada
ada-toml is a pure Ada library for parsing and creating
TOML documents. It conforms to the
version 1.0.0 of the format standard.
Quick tutorial
All basic types and subprograms are in the TOML package. All "nodes" in a
TOML documents are materialized using the TOML.TOML_Value type. Since TOML
values make up a tree, this type has reference semantics. This means that
modifying a TOML node does not modify the corresponding TOML_Value value
itself, but rather the TOML value that is referenced.
Parsing a TOML file is as easy as using the TOML.File_IO.Load_File function:
declare
Result : constant TOML.Read_Result :=
TOML.File_IO.Load_File ("config.toml");
begin
if Result.Success then
Ada.Text_IO.Put_Line ("config.toml loaded with success!");
else
Ada.Text_IO.Put_Line ("error while loading config.toml:");
Ada.Text_IO.Put_Line
(Ada.Strings.Unbounded.To_String (Result.Message));
end if;
end;
Each TOML value has kind, defining which data it contains (a boolean, an integer, a string, a table, ...). To each kind, one or several primitives are associated to let one process the underlying data:
case Result.Kind is
when TOML.TOML_Boolean =>
Ada.Text_IO.Put_Line ("Boolean: " & Result.As_Boolean'Image);
when TOML.TOML_Integer =>
Ada.Text_IO.Put_Line ("Boolean: " & Result.As_Integer'Image);
when TOML.TOML_String =>
Ada.Text_IO.Put_Line ("Boolean: " & Result.As_String);
when TOML.TOML_Array =>
Ada.Text_IO.Put_Line ("Array of " & Result.Length & " elements");
when others =>
null;
end case;
There are also primitives to build TOML values:
declare
Bool : constant TOML.TOML_Value := TOML.Create_Boolean (False);
Int : constant TOML.TOML_Value := TOML.Create_Integer (10);
Str : constant TOML.TOML_Value := TOML.Create_String ("Hello, world");
Table : constant TOML.TOML_Value := TOML.Create_Table;
begin
Table.Set ("bool_field", Bool);
Table.Set ("int_field", Int);
Table.Set ("str_field", Str);
end;
And finally one can turn a tree of TOML nodes back in text form:
Ada.Text_IO.Put_Line ("TOML document:");
Ada.Text_IO.Put_Line (Table.Dump_As_String);
Contributing
The development of ada-toml happens on
GitHub. Everyone is welcome to
contribute to this project: please read our contribution
rules if
you consider doing so.
ada_voxel_space_demo 1.0.1 Voxel Space render engine demo in Ada
1.0.1
adabots 2.1.0 Learn Ada by programming Minecraft robots
2.1.0
adacl 7.2.0 Ada Class Library: Strings, Tracing, AUnit, Smart Pointers, Getopt
7.2.0
A versatile Ada 2022 class library for robust application development.
Features:
- Getopt: Command-line argument parser with wide character support
- Strings: Utilities for String, Wide_String, and Wide_Wide_String
- Calendar: Time and date utilities with wide character support
- Tracing: Diagnostic trace utility with wide character support
- Protected Queue: Supports finish, wait, and abort operations
- Smart Pointers:
- Reference-counted pointers
- Unique pointers (C++-style)
- Shared pointers (C++-style)
Related crates:
- AUnit: AUnit-Compatible Assertions for access, array, discrete, floating-point, fixed-point, decimal, and vector types
- EAStrings: Encoding-aware string utilities
- RegEx: SPITBOL-inspired pattern matching and regular expressions for String, Wide_String, and Wide_Wide_String
- SAR: Text search and replace for String, Wide_String, and Wide_Wide_String
Source: SourceForge Documentation: GNATdoc
adacl_aunit 7.2.0 Ada 2022 AUnit with readable asserts & paramerised test
7.2.0
A versatile Ada 2022 testing library, enhancing AUnit with readable assertions and parameterised tests.
Features
AUnit-Compatible Assertions
- Generic support for access, array, discrete, floating-point, fixed-point, decimal, vector types, and files.
- Readable Error Messages: Assertions provide detailed feedback.
Example for unbounded strings:
procedure Equal
(Actual : Ada.Strings.Unbounded.Unbounded_String;
Expected : String;
Name : String;
Source : String := GNAT.Source_Info.File;
Line : Natural := GNAT.Source_Info.Line)
is
use Ada.Strings.Unbounded;
begin
if not (Actual = Expected) then
Report_Assertion
(Message => "In string «" & Name & "» the " & Actual'Image & " is not equal to " & Expected'Image,
Source => Source,
Line => Line);
end if;
end Equal;
This yields clear, context-rich error messages, surpassing standard AUnit output.
Parameterised Tests
Run the same test with varied inputs and expected values, boosting coverage efficiently.
Example from hp41cx_tools:
overriding procedure Register_Tests (T : in out Test_Case) is
pragma Debug (AdaCL.Trace.Entering (In_Parameter => T.Name.all'Image));
begin
T.Parameter.Register_Routine (T, Test_To_HP_Duration_01'Access, "WAKE_UP", "2024-12-01 08:00:00", [3, 9, 4, 2, 0, 2, 8, 8, 0, 0, 0], 3942028800.0);
T.Parameter.Register_Routine (T, Test_To_HP_Duration_01'Access, "^LBLTEST", "2025-07-22 12:00:00", [3, 9, 6, 2, 1, 7, 4, 4, 0, 0, 0], 3962174400.0);
T.Parameter.Register_Routine (T, Test_To_HP_Duration_01'Access, "TONE", "2025-11-12 09:12:34", [3, 9, 7, 1, 9, 2, 7, 5, 5, 4, 0], 3971927554.0);
T.Parameter.Register_Routine (T, Test_To_HP_Duration_01'Access, "FRACTION", "2025-11-12 09:12:34.5", [3, 9, 7, 1, 9, 2, 7, 5, 5, 4, 5], 3971927554.5);
T.Parameter.Register_Routine (T, Test_To_HP_Duration_01'Access, "REPEAT24", "24:00:00", [0, 0, 0, 0, 0, 8, 6, 4, 0, 0, 0], 0000086400.0);
T.Parameter.Register_Routine (T, Test_To_HP_Duration_01'Access, "REPEAT'First", "0000:00:01.0", [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], 0000000010.0);
T.Parameter.Register_Routine (T, Test_To_HP_Duration_01'Access, "REPEAT'Last", "9999:59:59.9", [0, 0, 3, 5, 9, 9, 9, 9, 9, 9, 9], 0035999999.9);
pragma Debug (AdaCL.Trace.Exiting);
return;
end Register_Tests;
Registering tests multiple times with different data enhances test coverage without redundant code.
Source: SourceForge Documentation: GNATdoc
adacl_eastrings 7.2.0 AdaCL: Encoding-Aware String Utilities
7.2.0
Encoding-aware string utilities for Ada 2022, developed by Björn Persson for robust internationalization (i18n).
Supports text processing with the following encodings:
- Universal Character Set 4, Big-Endian (UCS-4 BE)
- Universal Character Set 4, Little-Endian (UCS-4 LE)
- Universal Character Set 2, Big-Endian (UCS-2 BE)
- Universal Character Set 2, Little-Endian (UCS-2 LE)
- Unicode Transformation Format 16, Big-Endian (UTF-16 BE)
- Unicode Transformation Format 16, Little-Endian (UTF-16 LE)
- Unicode Transformation Format 8 (UTF-8)
- American Standard Code for Information Interchange (ASCII)
- ISO/IEC 8859-1 (Latin-1)
- Code Page 850 (DOS Latin-1)
- Windows Code Page 1252
Additional features:
- Text I/O for encoding-aware input/output
- Basic command-line parsing for internationalized text
Licensed under GPL-3.0-or-later. Integrates with the Ada Class Library (AdaCL).
Source: SourceForge Documentation: GNATdoc
adacl_embedded 7.1.2 Ada Embedded Library
7.1.2
AdaCL Embedded - Lightweight Embedded Ada Library
AdaCL-Embedded focuses on embedded and real-time programming on the Raspberry Pi and similar platforms.
It favours predictability, minimal runtime overhead, and static data structures. Object-oriented programming, unbounded strings, and wide strings are avoided or kept to an absolute minimum.
Current Features
- AdaCL.Embedded.Trace - Interrupt-safe, lightweight tracing facility using a ring buffer.
- AdaCL.Embedded.Text_IO - Extended Ada.Text_IO.
Configuration Options
Variantno_tasking- for the lightest runtimes (no protected objects). Also works well with interrupt-driven runtimes.tasking- for runtimes with tasking support.
Event_Log_Buffer_Length- maximum length of each trace line (default: 200, min: 1, max: 1024)Event_Log_Buffer_Size- number of entries in the ring buffer (default: 0, max: 1024, min: 0 (buffer disabled))
A text length of 200 is the standart minimum used in the Ada Standart (i.E. Ada.Text_IO.Get_Line, exception messages,
etc.pp).
Memory needed is approximately (Event_Log_Buffer_Length + 4) * Event_Log_Buffer_Size bytes, plus some overhead for the
buffer management. For example: 1024 buffer size with 200 line lenght is about the maximum size that can be used with
the static memory of Raspberry Pi Pico. The buffer size can be set to 0 to disable the trace buffer and the related code
completely.
Source: SourceForge Documentation: GNATdoc
adacl_regexp 7.2.0 AdaCL: Regex and SPITBOL Patterns with Wide Character Support
7.2.0
Regular expression and SPITBOL pattern matching for Ada 2022, with wide character support.
Features:
- Regular Expressions:
- Generic implementation for any discrete element array
- Instantiations for String, Wide_String, and Wide_Wide_String
- SPITBOL Patterns:
- Pattern construction and matching, inspired by Macro-SPITBOL (Robert Dewar)
- Supports String, Wide_String, and Wide_Wide_String
- Forked from GNAT.Regexp and GNAT.Spitbol with enhanced wide and wide-wide character support
Licensed under GPL-3.0-or-later. Integrates with the Ada Class Library (AdaCL).
Source: SourceForge Documentation: GNATdoc
adacl_sar 7.2.0 AdaCL: Search and Replace with Wide/Wide-Wide Support
7.2.0
Powerful search-and-replace library for Ada 2022, developed by Martin Krischik, with wide and wide-wide character support.
Features:
- Load, transform, and store text
- Vector-based text transformations for efficient processing
- Supports standard, wide, and wide-wide characters for internationalisation
- Embedded transformations for internal text processing
- Extensible transformations via tagged types for complex operations
- Integrates with the Ada Class Library (AdaCL) for robust text handling
Licensed under GPL-3.0-or-later. Integrates with the Ada Class Library (AdaCL).
Source: SourceForge Documentation: GNATdoc
adagl_gtk3 0.0.1 OpenGL/Gtk3 binding
0.0.1
adalang_analyzer 1.0.0 A Libadalang-based static analyzer for Ada source code
1.0.0
adamodbus 1.0.1 SPARK-verified Ada 2022 Modbus library with SunSpec support and C API
1.0.1
adare_dilithium5 0.2.3 Post Quantum Computer Resistant Cryptograph Sign, Dilithium5 Ada bind.
0.2.3
Dilithium is a digital signature scheme that is strongly secure under chosen message attacks based on the hardness of lattice problems over module lattices. The security notion means that an adversary having access to a signing oracle cannot produce a signature of a message whose signature he hasn't yet seen, nor produce a different signature of a message that he already saw signed. Dilithium is one of the candidate algorithms submitted to the NIST post-quantum cryptography project.
Adare_Dilithium5 is a Ada 2012 bind to Dilithium5 C.
(C version at https://github.com/PQClean/PQClean)
How a Bonus all Ada packages in this lib is "Ada Pure"! :-)
adare_hqc256 0.2.3 Post Quantum Computer Resistant Cryptograph KEM, HQC 256 Ada bind.
0.2.3
HQC (Hamming Quasi-Cyclic) is a code-based public key encryption scheme designed to provide security against attacks by both classical and quantum computers. HQC has been submitted to the NIST's Post-Quantum Cryptography Standardization Project.
Adare_HQC256 is a Ada 2012 bind to HQC-256 C.
Adare_HQC256 has a 512 bits Shared Secret size.
(C version at https://github.com/PQClean/PQClean)
How a Bonus all Ada packages in this lib is "Ada Pure"! :-)
adasat 26.0.0 Implementation of a DPLL-based SAT solver in Ada.
26.0.0
Main features:
- [X] Conflict analysis and backjumping
- [X] Two-watched literals scheme
- [X] Built-in support for At-Most-One constraints
- [X] Custom theories
adayaml 0.3.0 Experimental YAML 1.3 implementation in Ada
0.3.0
adl_middleware 0.4.0 Middleware layer of the Ada Drivers Library project
0.4.0
adl_middleware
Middleware layer of the Ada Drivers Library project.
This crate is a snapshot of the middleware of Ada Drivers
Library.
Any bug report, issue, contribution must be adressed to the Ada Drivers Library repo.
admpfr 4.2.0 Ada bindings for MPFR
4.2.0
ado 2.5.0 Ada Database Objects (Core library)
2.5.0
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.
The ORM uses an YAML, XML mapping file or an UML model, a code generator and a runtime library for the implementation. It provides a database driver for Postgresql, MySQL, SQLite or SQLCipher. The ORM helps your application by providing a mapping of your database tables directly in the target programming language: Ada05 in our case. The development process is the following:
- You design your database model either using a UML tool or by writing a YAML or XML description,
- You generate the Ada05 mapping files by using the Dynamo code generator,
- You generate the SQL database tables by using the same tool,
- You write your application on top of the generated code that gives you direct and simplified access to your database.

You need at least one of these databases (or all of then). The configure script will now fail if no supported database was found. Check the Database Drivers section to install them and run the configure again after the installation.
Documentation
ado_all 2.5.0 Ada Database Objects (All drivers)
ado_mysql 2.5.0 Ada Database Objects (Mysql)
ado_postgresql 2.5.0 Ada Database Objects (PostgreSQL)
ado_sqlite 2.5.0 Ada Database Objects (SQLite)
2.5.0
This is the SQLite or SQLCipher driver for the Ada Database Objects library.
The choice between SQLite and SQLCipher is controlled by the ADO_USE_SQLCIPHER gpr external variable.
Use -XADO_USE_SQLCIPHER=yes if you want to use the SQLCipher support. The database encryption key
is configured by using a pragma key.
adsa 1.5.1 Ada Annex E (DSA) runtime + gnatdist replacement, backed by ZeroMQ
1.5.1
aDSA is a Partition Communication Subsystem (PCS) for Ada's Distributed
Systems Annex (Annex E), replacing the discontinued PolyORB/GLADE runtime.
alr build produces two ordinary tools:
pcs_gnatdist-- the gnatdist replacement: builds a distributed application from its.cfg, auto-assembling the GARLIC runtime (a--RTSoverlay of the toolchain's own runtime) on first use and re-assembling it when the toolchain changes;pcs_supervisor-- launches and restarts a built deployment per its.manifest.
System prerequisites beyond the toolchain: libzmq >= 4.x and zlib
(pacman -S zeromq, apt install libzmq3-dev, pkg install libzmq4;
Windows setup is in the README's Platforms section).
Start with docs/users-guide.md; examples/ holds runnable demos.
aflex 1.7 An Ada Lexical Analyzer Generator
1.7
Aflex is a lexical analyzer generating tool similar to the Unix tool lex.
The first implementation was written by John Self of the Arcadia project at the University of California, Irvine. The last version that was released appeared to be the aflex 1.4a released in 1994.
Aflex was used and improved by P2Ada, the Pascal to Ada translator. This version of Aflex is derived from the P2Ada aflex implementation released in August 2010.
This version brings a number of improvements:
- Aflex generates the spec and body files as separate files so that there is no need to use gnatchop to split the DFA and IO files.
- Aflex uses the lex file name to generate the package name and
it supports child package with the
%unitdirective. - Aflex supports reentrant scanner through the use of
%option reentrant,%yyvarand%yydecldirectives.
agpl 1.0.0 Ada General Purpose Library with a robotics flavor
1.0.0
aho_corasick 0.3.0 Aho-Corasick Implementation
0.3.0
aicwl 3.24.1 Ada Industrial Control Widgets Library
3.24.1
This crate provides a library for designing high-quality industrial control widgets for Ada applications. The software is based on GtkAda, Ada bindings to Gtk+, and cairo.
The key features of the library are:
- Widgets composed of transparent layers drawn by cairo
- Fully scalable graphics
- Support of time controlled refresh policy for real-time and heavy-duty applications
- Caching graphical operations
- Stream I/O support for serialization and deserialization
- Ready-to-use gauge, meter, oscilloscope widgets
- Editor widget for WYSIWYG design of complex dashboards
For further information, visit the AICWL website.
Maintainer's note:
This Alire crate is packaged in a rather minimalistic way to keep dependencies on external libraries at a minimum. The crate's definition covers the core functionality of AICWL, though, so it should be sufficient for most needs.
For example, the original distribution has references to Simple Components which are not strictly necessary for the core functionality of the library.
aion 1.0.0 Structured Asynchronous Runtime for Ada
1.0.0
Aion is a structured asynchronous runtime for Ada, built for reliable networking, deterministic concurrency, cancellation-safe tasks, futures, timers, channels, supervision, observability, and production-grade systems software.
ajunitgen 1.0.1 Generator of JUnit-compatible XML reports
1.0.1
akt 1.4.3 Ada Keystore Tool
1.4.3
Overview
AKT is a tool to store and protect your sensitive information and documents by encrypting them in secure keystore (AES-256, HMAC-256).
Create the keystore and protect it with a gpg public key:
akt create secure.akt --gpg <keyid> ...
Store a small content:
akt set secure.akt bank.password 012345
Store files, directory or a tar file:
akt store secure.akt notes.txt
akt store secure.akt contract.doc
akt store secure.akt directory
tar czf - . | akt store secure.akt -- backup
Edit a content with your $EDITOR:
akt edit secure.akt bank.password
akt edit secure.akt notes.txt
Get a content:
akt get secure.akt bank.password
akt extract secure.akt contract.doc
akt extract secure.akt -- backup | tar xzf -
Documents
ali_parse 1.0.0 ALI_Parse - parsing and processing GNAT's .ali files
1.0.0
ALI_Parse is a parser for the .ali files generated by the GNAT Ada compiler. ALI means Ada Library Information. You find the .ali files in the same directories as the object files (.o) containing the machine code produced by GNAT.
Currently, ALI_Parse is focused at cross-references within a set of Ada source files. Two command-line tools using the parser are provided:
- GNATHTML, which generates a set of Web pages from Ada sources
- ALI_Stats, which shows the list of entities, the list of cross-references, the count of references to each entity and the list of files.
ALI_Parse is pure Ada 2012 and doesn't depend on any other resource.
alr2appimage 1.0.0 Tool to create an AppImage executable from an Alire crate
1.0.0
There are two prerequisites for your project to work with this tool:
- It has to be an Alire crate with an
executablesfield. Its first value has to be the main application program. Otherwise, the executable program can be specified on the command line. - It must be installable using Alire, including all the needed resources.
alr2appimage will use the following command for installing it (this requires Alire 2.0):
alr install
Or it will run gprinstall inside alr exec, if the former fails (Alire 1.x).
If you simply run the tool inside an Alire crate, it will read the
metadata from your alire.toml file and create a default AppImage
from it.
NOTE: alr2appimage is an independent project; it is not
affiliated to, nor supported by, the Alire or AppImage projects.
amqp 0.3.1 AMQP 0-9-1 client library for Ada
0.3.1
anagram 1.0.0 Grammar handling and parser generation Ada library
1.0.0
ansiada 1.1.0 ANSI escape sequences
1.1.0
anteforth 0.1.1 A Forth virtual machine
0.1.1
aoa_22 20220720 Advent of Ada 22 Solutions
20220720
aoa_23 20230119 Some Advent of Ada 2023 solutions
20230119
aor_jsona 1.6.6 Typed extraction from JSON payloads via path-based, indexed navigation
1.6.6
apdf 9.0.0 Portable package for producing dynamically PDF documents
9.0.0
PDF_Out is an Ada package for producing easily and automatically PDF files, from an Ada program, with text, vector graphics and raster graphics.

- Ideal for the dynamic production of reports, invoices, tickets, labels, delivery notes, charts, maps etc.
- Vector graphics
- Inclusion of JPEG images
- Object oriented
- Task safe
- Endian-neutral
- Multi-platform, but native code build
- Unconditionally portable code: OS-, CPU-, compiler- independent code
- Pure Ada 2012: this package can be used in projects in Ada 2012 and later language versions
- Free, open-source
The creation of a PDF file is as simple as this small procedure:
with PDF_Out;
procedure Small_Demo is
pdf : PDF_Out.PDF_Out_File;
begin
pdf.Create ("small.pdf");
pdf.Put_Line ("This is a very small demo for PDF_Out...");
pdf.Close;
end Small_Demo;
are 1.5.2 Advanced Resource Embedder
1.5.2
The resource embedder allows to embed files in binaries by producing C, Ada or Go source files that contain the original files.
To generate a config.ads and config.adb Ada package with the resources, you may use:
are --lang=Ada -o src --resource=config --name-access --fileset='**/*.conf' config
Complex resource integrations are best described with and XML and are generated with:
are --lang=Ada -o src --rule=package.xml --name-access .
For Ada, it generates the following package declaration with the Get_Content function
that gives access to the files. The Ada body contains the content of each embedded file.
package Config is
function Get_Content (Name : in String)
return access constant String;
end Config;
asfml 3.0.0 Ada binding to SFML, the Simple and Fast Multimedia Library
3.0.0
ASFML is an Ada semi-thick binding to the SFML library. It uses Ada types and portable defined types which eliminates the inclusion of Ada interface libraries, but most of the functions are directly imported.
Documentation
Generated API documentation can be consulted online.
The Ada API follows the CSFML interface, but with some changes and additions for ease of use.
Applicability of the SFML documentation is usually straightforward.
ashell 1.3.0 Allows running and interacting with OS programs.
1.3.0
Useful for writing shell-like applications or applications which start, stop and interact with spawned OS programs.
asis 2019.0.0 Ada Semantic Interface Specification or ASIS (library part)
2019.0.0
astro 1.4.1 Library for astronomical calculations
1.4.1
atari_atr_tools 1.5.2 Cross-platform tool for ATR disk images for Atari 8-bit systems
1.5.2
Atari ATR Tools is a versatile, cross-platform utility written in Ada 2022 for managing ATR disk image files used by Atari 8-bit emulators (e.g., Altirra, Atari800) and hardware add-ons like SIO2PC. Unlike most existing tools, which are Windows-only, this tool runs seamlessly on macOS, Linux, and Windows, making it ideal for retro computing enthusiasts across all major platforms.
Key features include:
Header Analysis: Display detailed metadata of ATR files, including sector size, disk density, track count, and boot sector presence.
> atr_tools-main --print-header test-DD-DS-80.atr
File name : test-DD-DS-80.atr
Magic : 16#296#
Paragraphs : 46056
Sector size : 256
Flags : 2#1#
Bad Sectors : 0
Unused : 16#0#
Sectors : 2880
Bytes : 736896
Boot Sectors : true
Floppy disk double density, double sided, 80 track
Floppy Image Creation: Format and create ATR files for various disk configurations (e.g., single-sided, double-density, 80 tracks).
> atr_tools-main --verbose --format-floppy --density=DD --side=SS --track=80 test-DD-SS-80.atr
File created : test-DD-SS-80.atr
Sector size : 256
Sector per track : 18
Tracks per side : 80
Sides per disk : 1
The tool includes a comprehensive test suite to ensure reliability across platforms and configurations. Source code and tests are available on SourceForge. Detailed GNATdoc documentation can be found at 6502 Tutorial.
atari_exe_tools 1.5.2 Cross-platform tool for analysing and inspecting Atari 8-bit EXE files
1.5.2
Atari EXE Tools is a robust, cross-platform utility written in Ada 2022 for analysing Atari 8-bit executable (EXE) files, used in Atari 400/800 and XL/XE systems or emulators like Altirra and Atari800. Unlike most existing tools, which are typically Windows-only, this tool operates seamlessly on macOS, Linux, and Windows, making it an essential asset for retro computing enthusiasts and developers working across diverse platforms.
Key features include:
Header Analysis: Extract and display detailed metadata from EXE files, including memory start/end addresses, segment lengths, and init/run vectors.
> exe_tools-main --print-header ./test/share/atari_check_exe_test/HELLO_C.EXE
File: ./test/share/atari_check_exe_test/HELLO_C.EXE
Magic: $FFFF; Start: $2E00; End: $2EF5; Length: 246
Magic: $0000; Start: $02E2; End: $02E3; Length: 2; Init: $2E47
Magic: $0000; Start: $2400; End: $28DE; Length: 1247
Magic: $0000; Start: $02E0; End: $02E1; Length: 2; Run: $2401
Data Dumping: Output hexadecimal data from EXE files for inspection, with ATASCII portions omitted to ensure compatibility with non-UTF-8 environments.
> exe_tools-main --print-data ./test/share/atari_check_exe_test/HELLO_A.EXE
File: ./test/share/atari_check_exe_test/HELLO_A.EXE
2400: 60 60 A2 00 A9 0B 9D 42 03 A9 3F 9D 44 03 A9 24
2410: 9D 45 03 A9 2E 9D 48 03 A9 00 9D 49 03 20 56 E4
2420: A2 00 A9 07 9D 42 03 A9 6D 9D 44 03 A9 24 9D 45
2430: 03 A9 01 9D 48 03 A9 00 9D 49 03 20 56 E4 60 48
2440: 65 6C 6C 6F 20 57 6F 72 6C 64 21 9B 28 75 73 69
2450: 6E 67 20 61 20 65 78 65 63 75 74 61 62 6C 65 20
2460: 69 6E 20 61 73 73 65 6D 62 6C 65 72 29 9B 00
02E0: 02 24
Run: $2402
The tool includes a comprehensive AUnit test suite to ensure reliability across platforms and Atari 8-bit configurations. Source code and tests are available on SourceForge. Detailed GNATdoc documentation can be found at 6502 Tutorial.
atomic 1.1.0 Standalone Ada/SPARK bindings to GCC atomic built-ins
1.1.0
audio_base 1.0.0 Basic Ada packages for audio applications
1.0.0
Audio Base
This crate contains basic Ada packages for audio applications.
audio_wavefiles 2.0.0 Ada Wavefile Library
2.0.0
Ada Wavefile Library
This crate contains Ada packages for wavefile I/O.
aunit 26.0.0 Ada unit test framework
26.0.0
automate 3.0.0 Ada finite-state machine generator
3.0.0
avltrees 0.1.0 Threaded AVL trees library for Ada
0.1.0
avrada_examples 1.0.1 Sample applications in Ada for AVR microcontrollers
1.0.1
avrada_lib 2.1.0 Library of drivers for AVR microcontrollers
2.1.0
avrada_mcu 2.2.0 Device (MCU) specific definitions for AVR microcontrollers
2.2.0
avrada_rts 2.0.1 Minimal run time system (RTS) for AVR 8bit controllers
2.0.1
awa 2.5.0 Ada Web Application
2.5.0
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. It provides a complete blog, question and answers and a wiki module.
AWA simplifies the Web Application development by taking care of user management with Google+, Facebook authentication and by providing the foundations on top of which you can construct your own application. AWA provides a powerful permission management that gives flexibility to applications to grant access and protect your user's resources.

Documentation
The Ada Web Application programmer's guide describes how to setup the framework, how you can setup and design your first web application with it, and it provides detailed description of AWA components:
awa_unit 2.5.0 Ada Web Application (Testing framework)
2.5.0
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. It provides a complete blog, question and answers and a wiki module.
This library provides a testing framework on top of AWA top help implementing unit tests for AWA applications.
Documentation
The Ada Web Application programmer's guide describes how to setup the framework, how you can setup and design your first web application with it, and it provides detailed description of AWA components:
aws 25.2.0 Ada Web Server
25.2.0
axmpp 1.0.0 XMPP client library in Ada
1.0.0
ayacc 1.4.1 An Ada LARL(1) parser generator
1.4.1
Ayacc is an Ada parser generator in the style of yacc(1).
The first implementation was written by David Taback and Deepak Tolani at the University of California, Irvine. The last version that was released appeared to be the Ayacc 1.1 released in 1994.
Ayacc was used and improved by P2Ada, the Pascal to Ada translator. This version of Ayacc is derived from the P2Ada ayacc implementation released in August 2010.
This version brings a number of improvements:
- Ayacc now uses more standard options to configure the code generation
- The parser was improved to configure the parser stack size and support Ada child packages.
- The grammar supports the %unit directive to control the Ada child packages.
- Several options provide a better control of the generated code.
- Ayacc can generate a reentrant parser.
azip 2.7.1 AZip - A portable Zip Archive Manager
2.7.1
AZip is a free Zip Archive Manager with unique features such as: built-in content Search, smart archive Update, archive Recompression.
Features:
- In addition to usual archive management (Add / Remove / Extract files), AZip provides the following unique functions:
- Super-fast in-archive Search function: content and/or entry name search through a Zip archive. No temp files written!
- Smart archive Updater: changes only new, modified files
- Archive Recompression: makes Zip archives smaller
- Easy toggle from Flat view to Tree view, and back
- Multi-document
- Compression methods supported: Reduce, Shrink, Implode, Deflate, Deflate64, BZip2, LZMA
- Encryption
- Portable (no installation needed, no DLL)
- Can operate with a config file instead of the registry (stealth mode)
- Installable if desired (application is its own installer)
- Compatible with other Zip archivers, regardless of the Operating System
- Free, Open-Source
b2ssum 0.1.3 BLAKE2s file hash utility
0.1.3
bar_code_drawing 20240701 Creation of bar codes and qr codes
20240701
bar_codes 6.0.0 Generate various types of bar codes (1D or 2D) on various media
6.0.0
Some features:
- 1D bar codes supported: Code 128, EAN-13, MSI, UPC-A
- 2D bar codes supported: Data Matrix, QR Codes
- Task safe
- Endian-neutral
- Multi-platform, but native code build
- Standalone (no dependency on other libraires, bindings, etc.; no extra component needed for running)
- Unconditionally portable code: OS-, CPU-, compiler- independent code.
- Pure Ada 2012: this package can be used in projects in Ada 2012 and later versions of the Ada language
- Tests and demos included
- Free, open-source
The creation of a bar code is as simple as this small procedure:
with Ada.Text_IO, Bar_Codes, Bar_Codes_Media;
procedure Small_Demo is
use Ada.Text_IO;
svg : File_Type;
begin
Create (svg, Out_File, "qr_code.svg");
Put_Line
(svg,
Bar_Codes_Media.SVG_Bar_Code
(Bar_Codes.Code_QR_Low, (5.0, 5.0, 100.0, 100.0), "mm", "Hello"));
Close (svg);
end Small_Demo;
bare_runtime 14.0.0 Minimal Ada/SPARK run-time for embedded or other restricted targets
14.0.0
Usage
First edit you alire.toml file and add the following elements:
- Add
bare_runtimein the dependency list:[[depends-on]] bare_runtime = "*" - Add cross GNAT in the dependency list (e.g. gnat_arm_elf):
[[depends-on]] gnat_arm_elf = "*" - Set the architecture build switches, we use ARM Cortex-M4F as an example here:
[gpr-set-externals] BARE_RUNTIME_SWITCHES = "-mlittle-endian -mthumb -mfloat-abi=hard -mcpu=cortex-m4 -mfpu=fpv4-sp-d16"
Then edit your project file to add the following elements:
- "with" the run-time project file. With this, gprbuild will compile the run-time before your application
with "bare_runtime.gpr"; - Specify the
TargetandRuntimeattributes:for Target use "arm-eabi"; for Runtime ("Ada") use Bare_Runtime'Runtime ("Ada");
basalt 0.3.0 Collection of formally verified building blocks
0.3.0
base32 1.0.1 Simple base32 codec
1.0.1
base64 1.0.1 Base64 encoding/decoding routines
1.0.1
bb_pico_bsp 0.1.0 Ada BSP for the Keyboard Featherwing + RPI PICO
0.1.0
bbqueue 1.0.0 DMA friendly lock-free BipBuffer
1.0.0
An Ada/SPARK proved implementation of James Munns' BBQueue (https://github.com/jamesmunns/bbqueue)
bbs 0.1.0 Root package for other crates and contains some physical units
0.1.0
bbs_ansiterm 0.1.0 Generate Escape Sequences for ANSI terminals
0.1.0
Constants, functions, and procedures for generating ANSI escape sequences. If you need something that provides more than this, you should take a look at one of the curses/ncurses variants. Refer to the documentation for more information.
bbs_embed_common 0.2.0 Abstract hardware drivers and drivers for some i2c bus devices.
0.2.0
This crate contains base classes for some hardware devices such as Analog Inputs, GPIO pins, I2C bus, and SPI bus. It also contains drivers for devices that use, for example, an I2C bus.
By itself, this crate isn't much use. It will need to be used with the bbs_embed_linux crate which contains hardware drivers for the Raspberry Pi and BeagleBone Black.
bbs_embed_linux 0.2.0 Physical device drivers for Raspberry Pi and BeagleBone Black
0.2.0
This contains device drivers for unix-type systems. The physical devices are defined for the Raspberry Pi and BeagleBone Black, but it should compile on any unix-type environment.
bbs_lisp 0.2.2 Embedable tiny lisp interpreter
0.2.2
This is the core of a simple tiny lisp that is intended to be embedded in other applications. It can be extended with new commands specific to the application.
bbs_simcpu 0.5.0 CPU Simulator for multiple CPUs
0.5.0
This contains simulators for the 6502, 8080/8085/Z80, 680000/68008, and some of the PDP-11 (11/04, 11/05,10, and 11/15,20) processors.
For the PDP-11 processors, some of the DEC I/O is also simulated well enough to be able to run the RT-11 operating system.
More will probably be added with time.
bbs_webif 0.1.0 Simple web server to provide an interface to embedded instruments
0.1.0
bbt 0.3.0 Black box test runner
0.3.0
bfdada 1.3.1 Ada API for the GNU Binutils BFD library
1.3.1
The Ada-BFD is a library which provides Ada API for GNU Binutils BFD library. It works on any version of GNU Binutils (starting at 2.15). The recommended version for GNU Binutils is at least the 2.42.
The Ada-BFD library allows to:
- list and scan the ELF sections of an executable or object file,
- get the content of the ELF sections,
- get access to the symbol table,
- use the BFD disassembler
Documentation
bigints 0.2.0 Experimental SPARK Constant Time Big Integer library
0.2.0
SPARK Constant Time Big Integer library
Implementation of a constant time big integer library, inspired by crypto-bigint.
All functions are implemented in constant time, except those with an explicit _Vartime suffix. Overloaded operators are also constant time.
⚠️ The constant time choice primitives like
Ct_Eq,Ct_Gt,Cond_SelectandCSwaprely on best-effort optimisation barriers.
Usage
The implementations are generic over the size of the integer:
package U256 is new Bigints.Uint (256);
package U1024 is new Bigints.Uint (1024);
There is also a generic package to deal with modular integers (over a prime field):
P : U256.Uint := ... -- a big prime, like 2**255 - 19
package GF_P is new Bigints.Modular (U256, P);
It is up to the user of the library to ensure the chosen modulus is effectively prime. Otherwise, operations like field inversion become invalid (as it relies on Fermat's little theorem).
Formal proof
The preinstantations in the library (packages U256s and F25519), as well as the constant time primitives and basic limb primitives, are formally checked using GNATprove.
binary_trees 20240519 Ordered binary trees implemented without access types
20240519
Binary_Trees
Ordered binary trees implemented without access types
Demonstration of a technique to be presented at the Ada Developers Workshop of the 2024 Ada-Europe conference
bingada 1.0.0 Bingo application in GTKAda with sound in ASFML
1.0.0
bit_sets 1.0.0 A packed boolean array that saves space and is performant
1.0.0
blake2s 0.1.3 SPARK83 implementation of the BLAKE2s hash function
0.1.3
blake3 1.0.0 SPARK-proved BLAKE3 hash function (C2SP specification)
1.0.0
SPARK-proved BLAKE3 hash function for Ada 2022. Implements the C2SP BLAKE3 specification with hash, keyed_hash, and derive_key modes. Compression function, G function, byte conversions, chunk processing, and CV-stack Merkle assembly are formally verified at SPARK level 2: 482/482 proof obligations discharged, zero unproved VCs, zero pragma Assume. The BLAKE3 algorithm-level invariant relating CV-stack depth to the chunk counter (popcount bound) is a machine-checked theorem, and the 2**64-byte input cap is an enforced precondition (see SECURITY.md).
No heap allocation, pragma Pure, suitable for embedded and safety-critical systems. Extensible output, incremental API (Init/Update/Final), comprehensive official C2SP test vectors.
Constant-time execution is out of scope for this release. See SECURITY.md for the full threat model.
blink_led_arduino_due 0.1.0 Blink LED demo for Arduino Due
0.1.0
blink_led_blackpill_stm32f401 0.1.0 Blink LED demo for BlackPill STM32F401
0.1.0
blink_led_weact_stm32g474 0.1.0 Blink LED demo for WeAct STM32G474
0.1.0
blinkenlights 0.3.0 Project to blink LEDs in interesting patterns
0.3.0
This is a complex project involving 3D printing and soldering as well as software. Alr will take care of the software dependencies for you, but you will have to read the README and documentation to find the other parts.
This project is intended to replicate the look and feel of older computers with the switches and lights. It uses the simulators from bbs_simcpu to drive the LEDs and act on the switches. Using the Intel 8080 simulator, I was actually able to toggle a bootstrap program in using the panel and get it to boot CP/M. A boot loader (boot.ihx) is included. CP/M is not included. There are places on the web where you can find a disassembled CP/M 2.2. Then combine it with the BIOS from bbs_simcpu and add it to a disk image using the loadcpm tool. If you use the Motorola 68000 simulator, it will load and run a simple multitasking OS. The example simulator can be used to flash the lights in a variaty of ways.
There is a lamp test program in the lamp-test directory that may be useful for debugging the hardware.
Note that since each cycle of the simulator involves multiple I2C bus transactions to read switches and set LEDs, any CPU simulation will run rather slowly. The intention of this project is more for display than simulator usage.
There is also a web server that can be used to select the CPU variant. This is most useful with the example simulator to select the light pattern.
This project runs on a Raspberry Pi 2 (or later). It will build on most Unix or Unix-like systems, but unless the hardware interface matches the Raspberry Pi, it won't run. You are welcome to try porting it to other systems, if you like.
bme280 1.0.0 Driver for BME280 Humidity sensor
1.0.0
brackelib 0.0.2 Library which contains various utility packages.
0.0.2
Ada library which contains various utility packages. Currently only a few implementations of abstract data types.
braillart 0.1.0 Use Braille patterns as a dot-matrix printer
0.1.0
button_led_arduino_due 0.1.0 Key/LED demo for Arduino Due
0.1.0
button_led_blackpill_stm32f401 0.1.0 Key/LED demo for BlackPill STM32F401
0.1.0
button_led_weact_stm32g474 0.1.0 Key/LED demo for WeAct STM32G474
0.1.0
byteflippers 1.1.0 Signed/modular types for system, big and little endian reading/writing.
1.1.0
Modular and signed types to convert between big and little endian, such as 50 (0x00000032) to 838860800 (0x32000000). Currently supported are 16/24/[32/64/128]-bit sized signed/modular/fp numeric types for big/little endian respectively, as well as system-endian dependent base types for 8/16/24/[32/64/128]-bit signed/modular/fp numeric types (for both categories: numbers in square brackets indicate the supported sizes of floating-points (fp.)))
All types are compatible with Interfaces operators, such as Shift_Left, Shift_Right, Rotate_Left, Rotate_Right, as well as (where applicable) xor, and, or.
NOTE: This library depends on the GNAT compiler, as it depends on the Provide_Shift_Operators pragma. If you need support for another compiler, please let me know, and I'll try to support it.
Example Use
with Byteflippers;
with Ada.Text_IO;
with Ada.Streams.Stream_IO;
use Ada.Streams.Stream_IO;
procedure Scratch is
package Endians_u32 renames Byteflippers.Endians_Unsigned_32;
F : File_Type;
S : Stream_Access;
begin
Create (F, Name => "test.bin");
S := Stream (F);
Byteflippers.Signed_32'Write (S, 1234);
Endians_u32.Little_Endian'Write (S, 5678);
Endians_u32.Little_Endian'Write (S, 9101);
Endians_u32.Big_Endian'Write (S, 1213);
Endians_u32.Big_Endian'Write (S, 1415);
Close (F);
Open (F, In_File, "test.bin");
S := Stream (F);
Ada.Text_IO.Put_Line ("# System Endian Test");
Ada.Text_IO.Put_Line (Byteflippers.Signed_32'Input (S)'Image);
Ada.Text_IO.Put_Line ("# Little Endian Test (System / Little)");
Ada.Text_IO.Put_Line (Byteflippers.Signed_32'Input (S)'Image);
Ada.Text_IO.Put_Line (Endians_u32.Little_Endian'Input (S)'Image);
Ada.Text_IO.Put_Line ("# Big Endian Test (System / Big)");
Ada.Text_IO.Put_Line (Byteflippers.Signed_32'Input (S)'Image);
Ada.Text_IO.Put_Line (Endians_u32.Big_Endian'Input (S)'Image);
end Scratch;
c_strings 1.1.0 Manage Ada <-> C string conversions conveniently
1.1.0
cachelines 0.1.0 Cache-line-aligned storage and L1 cache information for Ada
0.1.0
canberra_ada 2.0.2 Ada 2012 bindings for libcanberra
2.0.2
cards 1.0.0 52-card deck playing card library
1.0.0
cashe 1.0.0 A fixed-point decimal money library written in Ada.
1.0.0
cbor_ada 0.3.0 CBOR (RFC 8949) encoding/decoding library with SPARK formal verification
0.3.0
SPARK-proved CBOR encoder/decoder for Ada 2022. The entire library is formally verified at SPARK Level 2: 1082/1082 proof obligations discharged, 0 unproved, 0 pragma Assume. Beyond absence of run-time errors, the encode/decode round trip is machine-proved -- Decode (Encode (x)) = x for every major-type head (integers, tags, array/map headers, simple values, booleans, null/undefined) and byte-exact float payload pass-through -- via a shared ghost denotation of the wire format.
No heap allocation, pragma Pure, suitable for embedded and safety-critical systems. Full RFC 8949 well-formedness validation including shortest-form checking, configurable nesting depth, string length limits, and optional UTF-8 validation.
cbsg 0.0.2 Corporate Bullshit Generator
0.0.2
The Corporate Bullshit Generator
When Artificial Intelligence meets Business Intelligence
Description
The Corporate Bullshit Generator is a high-performance random text generator that is focused on corporate language. It is able to produce, per second, 1000 full A4 pages of inspired and inspirational sentences like "Our turn-key branding strategy drives corporate, scalable, wide-ranging and profit-oriented idiosyncratic incentives."
Features
- 1700+ smart-sounding nouns, adjectives, adverbs, constructs
- context-sensitive
- includes a random boss title generator (e.g.: General President of Facilities Management, Executive Co-Head of Business Planning)
- the Delirium random English grammar framework can be used for various text generators
License
The Corporate Bullshit Generator is free, open-source and released under the MIT license.
ccsds_ada 0.1.0 CCSDS protocol suite with SPARK formal verification
0.1.0
SPARK-proved CCSDS protocol suite for Ada 2022. Implements Space Packet Protocol (133.0-B-1), Time Code Formats (301.0-B-4 CUC/CDS), AOS Transfer Frame (732.0-B-4) with FECF, Encapsulation Packet (133.1-B-3), CFDP PDU (727.0-B-5) with optional CRC, SLE identifiers (132.0-B-3), and the CRC-16-CCITT-FALSE primitive used by AOS and CFDP. 100% formally verified at SPARK Level 2 (440 proof obligations, 0 unproved). No heap allocation, pragma Pure, suitable for embedded flight software and safety-critical ground systems.
cgk 0.1.0 Computational Geometry Kernel
0.1.0
chacha20 0.1.0 ChaCha20 implementation in Ada.
0.1.0
checksum 0.1.0 Algorithms for error-checking
0.1.0
cheddar 3.3.0 Cheddar is a real time scheduling analysis tool.
3.3.0
To run cheddar you should set CHEDDAR_INSTALL_PATH or change current working directory to the crate root.
chests 0.2.0 Chests are bounded containers
0.2.0
chipmunk2d 0.1.0 Ada bindings for Chipmunk2D
0.1.0
clara 1.0.1 Type-safe CLI argument parsing with functional monads
1.0.1
clic 0.3.0 Command Line Interface Components
0.3.0
Command Line Interface Components:
- "git like" subcommand handling
- TTY color and formatting
- User input queries
- User configuration
cmd_ada 0.0.1 Command based text UI, inspired by Python cmd module
0.0.1
coap_client 0.10.0 Client program for the CoAP-SPARK library.
0.10.0
coap_spark 0.10.0 CoAP implementation formally verified with SPARK/Ada
0.10.0
CoAP-SPARK is a library implementing the Constrained Application Protocol (CoAP) as defined in RFC 7252, developed in the SPARK language, the formally verified subset of the Ada programming language.
This version implements client and server sides of the protocol with some limitations:
- It does not support block-wise transfers.
- It does not support retransmission of messages.
- It only supports NoSec and PreSharedKey security modes.
See LICENSING for licensing information.
cobs 1.1.0 Consistent Overhead Byte Stuffing (COBS) encoder/decoder
1.1.0
conic_fit 0.1.0 Least squares fitting of quadratic curves and surfaces
0.1.0
controlled_io 20240401.0.1 Files that are open while they exist and closed when they don't
20240401.0.1
Controlled_IO
Files that are open while they exist and closed when they don't
This is a draft response to a request for a library for Scope-based files. Both binary and text I/O is supported. Please comment on whether or not you find this useful.
The library is completely portable. It has been compiled and tested with GNAT and ObjectAda, on Linux and Windows.
Controlled_Test and Controlled_Text are test programs. Both are user-unfriendly file-copy programs. Controlled_Test performs a binary copy; the output should always be identical to the input. Controlled_Text performs a line-by-line copy of text files; the output may have different line terminators than the input.
Controlled_UTF is a user-unfriendly program to convert a native text file to a Universal Text File.
cortex_m 1.1.0 Drivers for Cortex-M micro-controllers (NVIC, SysTick, etc.)
1.1.0
cortex-m
Ada drivers for the peripherals of ARM Cortex-M micro-controllers (NVIC,\nSysTick, etc.)
This crate is a snapshot of the Cortex-M support in Ada Drivers
Library.
Any bug report, issue, contribution must be adressed to the Ada Drivers Library repo.
cose_ada 0.1.0 COSE (RFC 9052 / 9053) library for Ada 2022
0.1.0
COSE (CBOR Object Signing and Encryption, RFC 9052 / 9053) implementation for Ada 2022 with partial SPARK coverage. Supports the six COSE message types: COSE_Mac0, COSE_Mac, COSE_Sign1, COSE_Sign, COSE_Encrypt0, and COSE_Encrypt. Algorithms: HMAC-SHA-256, HMAC-SHA-512, EdDSA (Ed25519), and ChaCha20-Poly1305 AEAD. Uses cbor_ada for CBOR operations, hmac_ada for HMAC, and SPARKNaCl for Ed25519 and ChaCha20-Poly1305. No heap allocation, suitable for embedded and safety-critical systems.
covex 1.14.0 Ada/SPARK coverage, proof, multi-standard compliance tool
1.14.0
Zero-dependency Ada/SPARK CLI tool for coverage analysis, proof verification, test-result parsing, multi-standard safety-compliance assessment (DO-178C / ISO 26262 / IEC 62304), and interactive dashboards.
- Source scanning: walks .ads files, extracts subprogram declarations, docstring annotations (@param, @return, @field, @formal), and HLR traceability tags
- Proof analysis: parses GNATprove gnatprove.out summaries; assesses SPARK assurance levels (Stone through Platinum)
- Test parsing: reads markdown test results for pass/fail counts (native Ada or AUnit format)
- DAL compliance: assesses DO-178C DAL A-E criteria (HLR coverage, orphan tags, test status, minimum SPARK proof level), re-labelled for ISO 26262 (ASIL A-D/QM) and IEC 62304 (safety classes A-C) via --dal / --asil / --class
- Differential assessment: --compare-base / --coverage-delta snapshot a base revision on git, Mercurial, Subversion, Fossil, or jj without touching the working tree
- Multiple outputs: ANSI terminal report, SVG badges, Markdown reports, HTML dashboard, JSON API via a built-in HTTP/1.1 server, and a proof-aware SBOM (CycloneDX / SPDX / Markdown)
- Result caching: a content-addressed on-disk cache serves unchanged scan, proof, test, and manifest results without re-running the work
- Tooling:
statusreports the toolchain + VCS state,maninstalls a local man page, and theprovesubcommand resolves gnatprove at run time - Scalable: package/subprogram collections use Ada.Containers.Vectors (heap-allocated, no compile-time limits)
- Zero library dependencies: uses only the GNAT runtime library. gnatprove is NOT a declared dependency -- the prove subcommand resolves it at run time (per-project manifest, PATH, cached toolchain, or download), so the covex crate installs and builds with no toolchain beyond the GNAT compiler
- Self-assessment: 100% docstring coverage, Platinum SPARK (408/408 VCs proved), DAL-C / ASIL B / Class A Achieved, 666/666 native tests passing
crc_32 20240725.0.0 Cyclic Redundancy Check to verify data integrity (ISO 3309)
20240725.0.0
CRC-32
Cyclic Redundancy Check to verify data integrity (ISO 3309)
Derived, with extensive modifications, from Zip.CRC_Crypto by Gautier de Montmollin.
crdt 1.9.0 CRDT library for Ada/SPARK
1.9.0
CRDT (Conflict-Free Replicated Data Types) library for Ada/SPARK with SPARK Gold formal verification and DO-178C DAL-C targeting.
PN-Counters, LWW-Element-Sets, LWW-Clocked-Sets (generic over Lamport, Vector, or Matrix clock strategies), and RGA sequences with three backend engines (Yjs chunk-based, Naive flat list, Fugue anti-interleaving BST). State-based (CvRDT delta sync) and operation-based (CmRDT bounded op log) sync layers. Hybrid Logical Clock (HLC), versioned wire protocol (V1/V2/V3) with LEB128 encoding, and thread-safe protected wrappers.
Zero heap allocation -- all containers use pre-allocated bounded storage. Core packages SPARK-proven at Gold level (absence of runtime errors).
cre8or_generic_image_handling 1.0.0 Generic image file and data handling using stb_images
1.0.0
cre8or_generic_image_handling_example 1.0.0 Generic image handling example project
1.0.0
curl system Command-line tool for transferring data with URL syntax
system
czmq_ada 0.5.0 Ada bindings for CZMQ (high-level C API for ZeroMQ)
0.5.0
dashera 0.15.1 DASHER Terminal Emulator
0.15.1
db_maker 20240119 A generic for creating simple DBs (one table in an RDBMS)
20240119
DB_Maker
A generic for creating simple DBs (one table in an RDBMS) with PragmARC.Persistent_Skip_List_Unbounded and Ada GUI.
Searching does not use the O(log N) search of the underlying skip list, but instead does a linear search for fields that have the corresponding search text as a substring (case insensitive). This is much slower, but is still quite fast. If you have less than 100,000 records it should be fast enough. "Search" starts from the 1st record; "Search More" from the record after the last search. "Clear" clears the edit fields to make entering a new search easier.
Because searching is case insensitive and matches substrings, searching for "son" would match "Orson Welles", "Fowler De Johnsone", and "Son House".
Only about 7 fields will fit vertically in the typical browser window. This could perhaps be increased by making the font smaller. A vertical scroll bar will appear if needed.
Movies is a small demo program that could be used to catalogue a collection of films. DB_Strings is a non-limited replacement for PragmARC.B_Strings, since type B_String is limited in the Ada-12 version of the PragmARCs.
dcf 2.0.3 Ada 2012 library for document container files, Zip-based archive files
2.0.3
den 0.2.0 Directory Enumeration Softlink Aware
0.2.0
dependency_graph_extractor 22.0.0 Extract dependency information from Ada projects
22.0.0
df_box2d 0.1.0 Ada bindings to Box2D v3, Erin Catto's 2D physics engine (pure C)
0.1.0
df_ccv 0.1.0 Ada bindings to Liu Liu's CCV computer vision library
0.1.0
df_imgui 0.1.0 Ada bindings to Dear ImGui via cimgui
0.1.0
df_llama 0.1.0 Ada bindings to llama.cpp - run a local LLM on-device from Ada
0.1.0
df_stb 0.1.0 Ada bindings to Sean Barrett's STB header-only utility libraries
0.1.0
df_vulkan 0.1.0 Generated Ada binding to Vulkan, with a SPARK-verified safety layer
0.1.0
dg_loada 1.4.3 dg_loada loads (restores) legacy DG AOS/VS DUMP_II files
1.4.3
dg_loada loads (restores) backup files created by Data General's AOS/VS DUMP_II, and maybe DUMP_III, files on any modern system supported by GNAT Ada.
dir_iterators 0.0.5 Ways of moving around directory trees
0.0.5
Iterator-based directory walks
Provides convenient ways to walk directories based on Ada 2012 user-defined iterators.
Inspired by walkdir for Rust.
Walking a directory tree recursively
with Ada.Directories;
with Ada.Text_IO;
with Dir_Iterators.Recursive;
-- ...
Dir_Walk : constant Dir_Iterators.Recursive.Recursive_Dir_Walk
:= Dir_Iterators.Recursive.Walk (Dir);
for Dir_Entry of Dir_Walk loop
Ada.Text_IO.Put_Line(Ada.Directories.Full_Name(Dir_Entry));
end loop;
Walking a directory tree recursively with a filter
Use a filter to prune directories and files from the walk.
with Ada.Directories;
with Ada.Text_IO;
with Dir_Iterators.Recursive;
package AD renames Ada.Directories;
-- ...
procedure Foo (Include_Dot_Files : Boolean; Dir_Root : String) is
function Filter (E : Ada.Directories.Directory_Entry_Type) return Boolean is
Name : constant String := Ada.Directories.Simple_Name(E);
begin
return Include_Dot_Files
or else (not (Name'Length > 1 and then Name(1) = '.'));
end Filter;
Walk : constant Dir_Iterators.Recursive.Recursive_Dir_Walk :=
Dir_Iterators.Recursive.Walk (Dir_Root, Filter'Access);
begin
for Dir_Entry of Walk loop
Ada.Text_IO.Put_Line(Ada.Directories.Full_Name(Dir_Entry));
end loop;
end Foo;
dirty_booleans 0.1.0 Comparisons with 0/1, T/F, Y/N, Yes/No, etc.
0.1.0
distance 0.1.0 A formally verified library for calculating numeric, text distances
0.1.0
Distance
A formally verified Ada/SPARK library for computing distance and similarity metrics.
Features
- Numeric Distances: Euclidean, Manhattan, Minkowski, Chebyshev, Canberra
- Statistical Measures: Cosine Similarity
- Text Distances: Levenshtein, Damerau-Levenshtein, Hamming, Jaro-Winkler, Sørensen-Dice
Highlights
- Pure Ada 2012 with SPARK annotations
- Generic implementations for flexible type support
- No external dependencies (test suite uses AUnit)
- Comprehensive preconditions and postconditions
Usage
with Ada.Numerics.Elementary_Functions;
with Distance.Numeric.Signatures;
with Distance.Numeric.Euclidean_Generic;
procedure Example is
type Float_Vector is array (Positive range <>) of Float;
package Float_Math is new Ada.Numerics.Elementary_Functions (Float);
package Float_Sig is new Distance.Numeric.Signatures
(Element_Type => Float,
Zero => 0.0,
One => 1.0,
Sqrt => Float_Math.Sqrt,
"**" => Float_Math."**",
Max_Element => Float'Last);
function Euclidean is new Distance.Numeric.Euclidean_Generic
(Numeric_Ops => Float_Sig, Index_Type => Positive, Vector => Float_Vector);
D : Float := Euclidean ((0.0, 0.0), (3.0, 4.0)); -- D = 5.0
begin
null;
end Example;
For fixed-point and integer types, you can use Spark_Math to provide the required operations.
dotenv 1.0.0 Loads environment variables from .env for Ada projects.
1.0.0
dummyserver 1.0.0 DummyServer is a terminal program that serves dummy content
1.0.0
DummyServer is a terminal program that serves dummy content (resources). These resources are defined in a single JSON configuration and configuration is thus very simple and fast. The prime purpose of DummyServer is to serve content to test client applications.
dynamo 1.4.0 Dynamo Ada Generator
1.4.0
This Ada05 application is a code generator used to generate an Ada Web Application or database mappings from hibernate-like XML description, YAML doctrine model or UML models. It provides various commands for the generation of a web application which uses the Ada Web Application framework (https://gitlab.com/stcarrez/ada-awa/).
eagle_lander 1.2.0 Apollo 11 lunar lander simulator
1.2.0
easy_graphics 0.1.0 Very Simple Graphics Package
0.1.0
Overview
Easy_Graphics is a simple library for generating graphical output from your Ada program.
Typical use cases might be educational projects, prototyping, programming challenges, or simply when you want to visualise something quickly in a larger system.
edc_client 1.5.2 Client library for: github.com/hgrodriguez/embedded-dashboard-console
1.5.2
eeprom_i2c 8.0.1 EEPROM I2C drivers library for embedded platforms
8.0.1
elada 1.8.8 Expression Language Library (JSR245)
1.8.8
This Ada05 library provides the support for a simple Expression Language close to the Java Unified Expression Language (EL).
The API provided by the EL library is inspired from the Java Unified Expression Language shared by the JSP 2.1 and JSF 1.2 technologies. See Expression Language specification in JSR245 (https://jcp.org/en/jsr/summary?id=245)
The EL expression is intensively used in web development applications built on top of various Java technologies but also on top of Ada Web Application and Ada Server Faces.
elevator 1.0.0 A Simple Elevator System
1.0.0
elogs 1.3.4 Embedded logging, proven absent of runtime errors
1.3.4
emacs_ada_mode 8.1.0 Parser for Emacs ada-mode
8.1.0
emacs_gpr_mode 1.0.5 parser for Emacs gpr mode
1.0.5
Generalized LR error-correcting parser generated using WisiToken, interfaced to Emacs via the wisi package.
Provides semantic highlighting, indent, single-file navigation.
emacs_gpr_query 1.0.2 Emacs xref backend using information output by GNAT compiler.
1.0.2
emacs_wisi 4.3.2 Ada code for Emacs wisi ELPA package
4.3.2
emacs_wisitoken_grammar_mode 1.3.0 parser for Emacs wisitoken-grammar mode
1.3.0
Generalized LR error-correcting parser for WisiToken grammar source files, generated using WisiToken, interfaced to Emacs via the wisi package.
Provides semantic highlighting, indent, single-file navigation.
embedded_components 0.4.0 Platform agnostic drivers to interface external components
0.4.0
embedded-components
Platform agnostic drivers to interface external components.
This crate is a snapshot of the components of Ada Drivers
Library.
Any bug report, issue, contribution must be adressed to the Ada Drivers Library repo.
embedded_nrf52832 15.4.0 embedded runtime for the NRF52832 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
embedded_nrf52832in the dependency list:[[depends-on]] embedded_nrf52832 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project file. With this, gprbuild will compile the run-time before your application
with "$(runtime_proj_prefix)_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use $(runtime_proj_prefix)_build'Target; for Runtime ("Ada") use $(runtime_proj_prefix)_build'Runtime ("Ada");
embedded_nrf52833 15.4.0 embedded runtime for the NRF52833 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
embedded_nrf52833in the dependency list:[[depends-on]] embedded_nrf52833 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project file. With this, gprbuild will compile the run-time before your application
with "$(runtime_proj_prefix)_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use $(runtime_proj_prefix)_build'Target; for Runtime ("Ada") use $(runtime_proj_prefix)_build'Runtime ("Ada");
embedded_nrf52840 15.4.0 embedded runtime for the NRF52840 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
embedded_nrf52840in the dependency list:[[depends-on]] embedded_nrf52840 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project file. With this, gprbuild will compile the run-time before your application
with "$(runtime_proj_prefix)_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use $(runtime_proj_prefix)_build'Target; for Runtime ("Ada") use $(runtime_proj_prefix)_build'Runtime ("Ada");
embedded_nrf54l_app 15.4.0 embedded runtime for the nRF54L series
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
embedded_nrf54l_appin the dependency list:[[depends-on]] embedded_nrf54l_app = "*"
Then edit your project file to add the following elements:
- "with" the run-time project files:
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use Runtime_Build'Target; for Runtime ("Ada") use Runtime_Build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches & ("-Wl,--gc-sections"); end Linker;
Note that the linker switch -Wl,--gc-sections is optional, but its use is
recommended since it reduces the final size of the executable by removing
unused code.
embedded_rp2040 15.4.0 embedded runtime for the RP2040 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
embedded_rp2040in the dependency list:[[depends-on]] embedded_rp2040 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:
Note thatpackage Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches & ("-Wl,--gc-sections"); end Linker;--gc-switchesis recommended as it reduces flash and RAM usage by removing unused code and data, but it is not mandatory.
See the project website for details on configuring the runtime.
embedded_rp2350 15.4.0 embedded runtime for the RP2350 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
embedded_rp2350in the dependency list:[[depends-on]] embedded_rp2350 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:
Note thatpackage Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches & ("-Wl,--gc-sections"); end Linker;--gc-switchesis recommended as it reduces flash and RAM usage by removing unused code and data, but it is not mandatory.
See the project website for details on configuring the runtime.
embedded_stm32f0xx 15.4.0 embedded runtime for the STM32F0XX SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
embedded_stm32f0xxin the dependency list:[[depends-on]] embedded_stm32f0xx = "*" - if applicable, apply any runtime configuration variables (see below).
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches; end Linker;
The runtime is configurable via Alire crate configuration variables. See the project website for full details of the available options.
By default, the runtime is configured for the STM32F072RB. If your board has
a different MCU, then you will need to specify which MCU you are using via
the crate configuration. For example, to configure the runtime for the
STM32F030F4, add the following to your alire.toml:
[configuration.values]
embedded_stm32f0xx.MCU_Sub_Family = "F030"
embedded_stm32f0xx.MCU_Pin_Count = "F"
embedded_stm32f0xx.MCU_User_Code_Memory_Size = "4"
By default, the runtime configures the clock tree for a 48 MHz system clock from the high-speed internal (HSI) oscillator. If you want a different clock configuration, then use the crate configuration variables to specify the configuration you wish to use. For example, to configure the runtime to generate a 32 MHz system clock from a 16 MHz HSE crystal oscillator:
[configuration.values]
# Configure a 16 MHz HSE crystal oscillator
embedded_stm32f0xx.HSE_Clock_Frequency = 16000000
embedded_stm32f0xx.HSE_Bypass = false
# Use the PLL as the SYSCLK source
embedded_stm32f0xx.SYSCLK_Src = "PLL"
# Configure the PLL input for a 16 MHz input from the HSE
embedded_stm32f0xx.PLL_Src = "HSE_PREDIV"
embedded_stm32f0xx.PREDIV = 1
# Configure the PLL to output 32 MHz (16 MHz * 2)
embedded_stm32f0xx.PLLMUL = 2
# Configure the AHB an APB to also run at 32 MHz
embedded_stm32f0xx.AHB_Pre = "DIV1"
embedded_stm32f0xx.APB_Pre = "DIV1"
embedded_stm32g0xx 15.4.0 embedded runtime for the STM32G0XX SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
embedded_stm32g0xxin the dependency list:[[depends-on]] embedded_stm32g0xx = "*" - if applicable, apply any runtime configuration variables (see below).
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches; end Linker;
The runtime is configurable via Alire crate configuration variables. See the project website for full details of the available options.
By default, the runtime is configured for the STM32G0B1RE. If your board has
a different MCU, then you will need to specify which MCU you are using via
the crate configuration. For example, to configure the runtime for the
STM32G031J4, add the following to your alire.toml:
[configuration.values]
embedded_stm32g0xx.MCU_Sub_Family = "G031"
embedded_stm32g0xx.MCU_Flash_Memory_Size = "4"
By default, the runtime configures the clock tree for a 64 MHz system clock from the high-speed internal (HSI) oscillator. If you want a different clock configuration, then use the crate configuration variables to specify the configuration you wish to use. For example, to configure the runtime to generate a 64 MHz system clock from a 24 MHz HSE crystal oscillator:
[configuration.values]
# Configure a 24 MHz HSE crystal oscillator
light_tasking_stm32g0xx.HSE_Clock_Frequency = 24000000
light_tasking_stm32g0xx.HSE_Bypass = false
# Select PLLRCLK as the SYSCLK source
light_tasking_stm32g0xx.SYSCLK_Src = "PLLRCLK"
# Configure the PLL VCO to run at 128 MHz from the 24 MHz HSE (fVCO = fHSE * (N/M))
light_tasking_stm32g0xx.PLL_Src = "HSE"
light_tasking_stm32g0xx.PLL_N_Mul = 10
light_tasking_stm32g0xx.PLL_M_Div = 2
# Configure the PLLRCLK to run at 64 MHz from the 128 MHz VCO.
light_tasking_stm32g0xx.PLL_R_Div = 2
# Configure the AHB an APB to also run at 64 MHz
light_tasking_stm32g0xx.AHB_Pre = "DIV1"
light_tasking_stm32g0xx.APB_Pre = "DIV1"
The runtime will generate a compile time error when an invalid PLL configuration is set.
By default the PLL's Q and P clocks are enabled. If you don't need them, then you can disable them via the crate configuration:
[configuration.values]
embedded_stm32g0xx.PLL_Q_Enable = false
embedded_stm32g0xx.PLL_P_Enable = false
The runtime will enable the PLL only when either PLL_Q_Enable or PLL_P_Enable
is true, or when SYSCLK_Src = "PLLRCLK".
The interrupt stack sizes are also configurable:
[configuration.values]
embedded_stm32g0xx.Interrupt_Stack_Size = 1024
embedded_stm32g0xx.Interrupt_Secondary_Stack_Size = 128
embedded_stm32g4xx 15.4.0 embedded runtime for the STM32G4XX SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
embedded_stm32g4xxin the dependency list:[[depends-on]] embedded_stm32g4xx = "*" - if applicable, apply any runtime configuration variables (see below).
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches; end Linker;
The runtime is configurable via Alire crate configuration variables. See the project website for full details of the available options.
By default, the runtime is configured for the STM32G474RE. If you are using
a different MCU, then you will need to configure the runtime by adding the
following to your alire.toml. For example, to configure the runtime for the
STM32G431K6:
[configuration.values]
embedded_stm32g4xx.MCU_Sub_Family = "G431"
embedded_stm32g4xx.MCU_Flash_Memory_Size = "6"
By default, the runtime configures the clock tree for a 170 MHz system clock from the high-speed internal (HSI) oscillator. If you want a different clock configuration, then use the crate configuration variables to specify the configuration you wish to use. For example, to configure the runtime to generate a 170 MHz system clock from a 24 MHz HSE crystal oscillator:
[configuration.values]
# Configure a 24 MHz HSE crystal oscillator
embedded_stm32g4xx.HSE_Clock_Frequency = 24000000
embedded_stm32g4xx.HSE_Bypass = false
# Select PLLRCLK as the SYSCLK source
embedded_stm32g4xx.SYSCLK_Src = "PLLRCLK"
# Configure the PLL VCO to run at 340 MHz from the 24 MHz HSE (fVCO = fHSE * (N/M))
embedded_stm32g4xx.PLL_Src = "HSE"
embedded_stm32g4xx.PLL_N_Mul = 85
embedded_stm32g4xx.PLL_M_Div = 6
# Configure the PLLRCLK to run at 170 MHz from the 340 MHz VCO.
embedded_stm32g4xx.PLL_R_Div = 2
# Configure the AHB and APB to also run at 170 MHz
embedded_stm32g4xx.AHB_Pre = "DIV1"
embedded_stm32g4xx.APB1_Pre = "DIV1"
embedded_stm32g4xx.APB2_Pre = "DIV1"
The runtime will generate a compile time error when an invalid PLL configuration is set.
By default the PLL's Q and P clocks are enabled. If you don't need them, then you can disable them via the crate configuration:
[configuration.values]
embedded_stm32g4xx.PLL_Q_Enable = false
embedded_stm32g4xx.PLL_P_Enable = false
The runtime will enable the PLL only when either PLL_Q_Enable or PLL_P_Enable
is true, or when SYSCLK_Src = "PLLRCLK".
The interrupt stack sizes are also configurable:
[configuration.values]
embedded_stm32g4xx.Interrupt_Stack_Size = 1024
embedded_stm32g4xx.Interrupt_Secondary_Stack_Size = 128
emdee 0.2.2 Performance assistant for Musical Directors
0.2.2
Overview
eMDee is a live performance and rehearsal assistant for musical directors which removes the need to have folders of tracks and command-line windows open in order to play backing tracks for performance groups such as singers, choirs, and theatre-groups.
The MD can plan in advance the order of performance; later, eMDee will facilitate the playing of each track in the specfied order during the performance.
Additional controls may be added to specific tracks such as changing the volume level.
emojis 1.0.1 A library to replace names between colons with emojis
1.0.1
encryption_utilities 20220701 Utility programs for the encryption algorithms included in the PragmARC
20220701
Encryption utilities
The PragmAda Reusable Components (https://github.com/jrcarter/PragmARC) contain implementations of the Threefish-256 (implemented directly from the specification in Section 3.3 of the Skein paper V1.3 [https://www.schneier.com/skein.pdf]), Threefish-512, Threefish-1024, and XOR encryption algorithms. Threefish-512 and Threefish-1024 are provided by Daniel Norte de Moraes (https://github.com/danieagle).
Test cases specifically for Threefish are at https://sites.google.com/site/bartoszmalkowski/threefish and https://github.com/bmalkow/java-bc-threefish.
Tf_Test runs the test cases for Threefish-256 successfully (on a little-endian machine). It also encrypts certain blocks and presents the encrypted blocks, and shows that they decrypt correctly. Tf_Test uses PragmARC.Images from https://github.com/jrcarter/PragmARC. Tf_Test_512 and Tf_Test_1024, provided by Daniel Norte de Moraes (https://github.com/danieagle), do the same for Threefish-512 and Threefish-1024.
TF_Crypt is a command-line program for encrypting and decrypting files with Threefish-256. TF_Crypt uses Password_Line. Files encrypted with TF_Crypt built with GNAT and running on Linux are correctly decrypted by TF_Crypt build with ObjectAda and running on Windows, and vice versa.
Xcrypt is a command-line program for encrypting and decrypting files with XOR. It uses Password_Line. Since XOR is symmetrical, the same algorithm is used for encrypting and decrypting. One can encrypt twice with multiple keys, and decrypt with the keys in any order. This gives results equivalent to encrypting with a key length of the least common multiple of the lengths of the keys.
Password_Line is a function for obtaining secret input from a user without echoing it to the screen. It has been tested and works with GNAT on Linux and Windows and ObjectAda 10.3 on Windows.
Tf_Test*, TF_Crypt, and Xcrypt are GPL-3; Password_Line is GMGPL.
endianness 1.0.0 Convenience subprograms to convert between Big- and Little-endianness
1.0.0
enet 1.0.0 Ada Embedded Network Stack
1.0.0
enet_stm32 1.0.0 ENet driver for STM32
1.0.0
ephemeris 1.2.0 Library for reading astronomical ephemerides from JPL DE200 files
1.2.0
epoll 0.1.1 Linux epoll binding
0.1.1
esp_idf 5.0.2-1 Ada binding for the ESP-IDF SDK
5.0.2-1
espidf 0.1.0 Ada/ESP-IDF
0.1.0
This is the base crate for Ada bindings to the ESP-IDF (Espressif IoT Development Framework). It provides the foundational type definitions and root package hierarchy required to build Ada applications for Espressif SoC platforms.
espidf_driver_i2c 0.1.0 Ada/ESP-IDF I2C master/slave driver
0.1.0
Ada bindings for the ESP-IDF esp_driver_i2c component. This crate provides a native Ada interface for I2C master and slave operations, compatible with ESP-IDF v6.0 and later.
espidf_gnat_runtime 0.1.0 A0B: GNAT Runtime for ESP-IDF
0.1.0
The espidf_gnat_runtime provides the runtime support libraries required to develop Ada and SPARK applications for Espressif SoCs.
It serves as the foundational layer that enables the GNAT compiler to target Espressif's hardware, providing the essential infrastructure to bridge Ada language features with the underlying system.
By using this runtime, developers can leverage the safety, strong typing, and formal verification capabilities of Ada and SPARK on popular, low-cost microcontrollers.
Supported Architectures
- Xtensa: Full support for the ESP32-S3 series.
- RISC-V: Full support for the ESP32-C3 series.
Key Features
- Ada Language Support: Implements essential Ada features, including exception handling, controlled types, and secondary stacks.
- Real-Time Concurrency: Provides support for the Jorvik profile, enabling the use of Ada tasks and protected objects for safe, concurrent programming.
- Hardware Interoperability: Designed to support applications running alongside the ESP-IDF environment, allowing Ada code to coexist with Espressif's system services.
- Verified Quality: Validated using the ACATS (Ada Conformity Assessment Test Suite) to ensure language compliance and runtime stability on both Xtensa and RISC-V targets.
Target Audience
This crate is intended for embedded developers using GNAT cross-compilers who wish to build high-integrity applications on the ESP32-S3 or ESP32-C3. It is a vital component for any project aiming to bring Ada's rigorous safety standards to the Espressif ecosystem.
ethernet 1.0.0 Root crate for ethernet namespace and MDIO/SMI/MIIM interface
1.0.0
euler_tools 1.3.0 Assortment of mathematical functions to solve Project Euler problems.
1.3.0
evdev 2.0.2 Library for input devices and force-feedback using Linux' evdev API
2.0.2
ews 1.11.0 Embedded Web Server
1.11.0
EWS is a web server construction kit, designed for embedded applications using the GNAT Ada compiler.
The project is hosted at https://github.com/simonjwright/ews.
excel_writer 19.0.1 Produce Excel spreadsheets
19.0.1

Excel_Out is a standalone, portable Ada package for writing Excel spreadsheets with basic formattings and formulas, easily and programmatically.
- Enables the automatic production of reports
- Fast: 50 sheets per second, with 10,000 data cells each on a slow 1.66 GHz computer
- No interaction needed with Excel or MS Office
- Unconditionally portable (*)
- Endian-neutral
- Object oriented
- Task safe
- Pure Ada 95 (nothing compiler/system specific), can be used in projects in Ada 95, Ada 2005, Ada 2012 and later versions of the language
- Floating-point hardware neutral: no IEEE hardware required
- Tests and demos included
- Includes a CSV parser with related tools.
- Free, open-source
The creation of an Excel file is as simple as this small procedure:
with Excel_Out;
procedure Small_Demo is
xl : Excel_Out.Excel_Out_File;
begin
xl.Create ("small.xls");
xl.Put_Line ("This is a small demo for Excel_Out");
for row in 3 .. 8 loop
for column in 1 .. 8 loop
xl.Write (row, column, row * 1000 + column);
end loop;
end loop;
xl.Close;
end Small_Demo;
(*) within limits of compiler's provided integer types and target architecture capacity.
exsytrawo 2.0.0 Exception Symbolic Traceback Workaround for macOS
2.0.0
fastpbkdf2_ada 2.0.0 Binding and an Ada wrapper to fastpbkdf2
2.0.0
felix 0.2.0 X/Open Native Language System (NLS) for Ada
0.2.0
file_formats_java_class 7.0.0 File format reader for the Java programming language CLASS file format
7.0.0
file_formats_java_class provides the facilities for reading CLASS files defined
in the Java Virtual Machine Specification,
Java SE 7, CLASS major file version 51,
chapter 4.
Supported Elements (Java SE 7)
- Class Access Flags (Table 4.1)
ACC_PUBLICACC_FINALACC_SUPERACC_INTERFACEACC_ABSTRACTACC_SYNTHETICACC_ANNOTATIONACC_ENUM
- Constant Pool (Table 4.3)
CONSTANT_Class_infoCONSTANT_Fieldref_infoCONSTANT_Methodref_infoCONSTANT_InterfaceMethodref_infoCONSTANT_String_infoCONSTANT_Integer_infoCONSTANT_Float_infoCONSTANT_Long_infoCONSTANT_Double_infoCONSTANT_NameAndType_infoCONSTANT_Utf8_infoCONSTANT_MethodHandle_infoCONSTANT_MethodType_infoCONSTANT_InvokeDynamic_info
- Field Access Flags (Table 4.4)
ACC_PUBLICACC_PRIVATEACC_PROTECTEDACC_STATICACC_FINALACC_VOLATILEACC_TRANSIENTACC_SYNTHETICACC_ENUM
- Method Access Flags (Table 4.5)
ACC_PUBLICACC_PRIVATEACC_PROTECTEDACC_STATICACC_FINALACC_SYNCHRONIZEDACC_BRIDGEACC_VARARGSACC_NATIVEACC_ABSTRACTACC_STRICTACC_SYNTHETIC
- Attributes (Table 4.6)
ConstantValueCodeStackMapTableExceptionsInnerClassesEnclosingMethodSyntheticSignatureSourceFileSourceDebugExtensionLineNumberTableLocalVariableTableLocalVariableTypeTableDeprecatedRuntimeVisibleAnnotationsRuntimeInvisibleAnnotationsRuntimeVisibleParameterAnnotationsRuntimeInvisibleParameterAnnotationsAnnotationDefaultBootstrapMethodsOther- Used for unrecognized/private attributes- NOTE: All restrictions put in place of each attribute for determining the validity of a CLASS file may not be fully implemented at the current time.
Example Use
All pertinent types and subprograms are available within the package
File_Formats_Java_Class. Reading Class_File is done primarily through the Input aspect,
as shown below.
with Ada.Text_IO;
with File_Formats_Java_Class;
use File_Formats_Java_Class;
procedure Read_Class_File is
F : File_Type;
S : Stream_Access;
begin
Open (F, In_File, "Example.class");
S := Stream (F);
Ada.Text_IO.Put_Line (Class_File'Input (S));
Close (F);
end Read_Class_File;
Development Status
This crate does not yet define operations for writing to CLASS files, but this is a priority. After writing is complete, this crate will be updated to support CLASS files of Java SE 8+. You are free to report issues and contribute at the crate's GitHub repository.
florist system POSIX.5 Ada interface to operating system services
system
florist_blady 6.1.0 POSIX Ada Bindings
6.1.0
flux 1.0.0 Experimental data stream library for Ada
1.0.0
format_strings 1.0.0 Build formatted strings
1.0.0
freetypeada 0.1.0 Thick binding to the FreeType library
0.1.0
functional 4.1.1 Functional Programming Library for Ada 2022
4.1.1
gade 0.2.0 A Game Boy emulation library in Ada
0.2.0
Gade is Game Boy emulation library written in Ada. It is intended to be consumed by different front ends, for easy portability.
The library currently includes CPU emulation, joypad, timer, audio, background/window/sprite rendering, and plain ROM, MBC1, MBC2, and MBC3 cartridge support with save data and MBC3 RTC handling.
The project is primarily aimed at experimentation around emulator architecture, native-code performance, and cross-language integration. The repository also includes a C ABI bridge and C++ wrapper so alternate hosts can reuse the same core.
garlic 6.0.1 GNAT Library for Ada Distributed Environment (garlic)
6.0.1
geo_coords 1.0.0 Geo coordinates calculation for determining Location, Distance, Bearing
1.0.0
geo_mag 1.0.0 Library for magnetic declination calculation
1.0.0
geste 1.1.0 GEneric Sprite and Tile Engine
1.1.0
GESTE is a sprite and tile 2D render engine designed to run on micro-controllers low performance systems. GESTE also provides a basic math and physic engine using fixed point arithmetic.
Creating maps
GESTE is developed in parallel with tiled-code-gen, a tool that generates code from the Tiled Map Editor.
Examples
The crate geste_examples contains 3 examples of different game genre:
- platformer
- RPG
- racing
Design
Layers
In GESTE, a scene is made of layers. Native layers can be Sprite, Grid or
Text. You can implement you own type of layers if you want to.
Spritelayers display a single tile at a given positionGridlayers display a grid of tiles at a given positionTextlayers display a text at a given position
Layers have a priority which tells in which order they will be drawn on the screen.
Rendering
The rendering algorithm is somewhat similar to ray casting. Instead of taking each objects of the scene and drawing it on the screen, the engine takes each pixel and tries to find its color from the different objects of the scene.
For each pixel of the area that is being drawn, GESTE will go through the list of layers and see if the corresponding pixel inside the layer is transparent or not. When a non transparent pixel is found, the pixel is pushed to the screen and the procedure starts again for the next pixel. If all the layers have a transparent pixel, the background color is used.
The more layers to go through, the more time time it will take to render a pixel.
geste_examples 1.0.1 Example for the GESTE game engine
1.0.1
get_password 1.0.0-rc Read a string without echo, in password-like style
1.0.0-rc
This is a small Ada library that provides a procedure Get_Password that reads a string from the terminal replacing each character with a *. The input can be terminated both by the user pressing end-of-line or when the buffer is filled. Currently it works only on POSIX-based system. This version was checked with Spark
getada 1.0.1 The unofficial mac and linux installer for Alire.
1.0.1
getopt 2.0.0 POSIX getopt(3) for Ada
2.0.0
gettext 25.9.3 A wrapper library for gettext
25.9.3
A simple but hopefully complete Ada wrapper around gettext. It should run on linux and windows. Don't know for other OSes.
How to use
Before calling the gettext family translation functions:
- You must set the locale using
Gettexts.Locale.Set_Locale(even a call with no arguments is enough but required). - You should set the directory and the domain name with
Gettexts.Set_Domain_DirectoryandGettexts.Set_Domain_Name. - You should set the codeset with
Gettexts.Set_Domain_Codeset.
Function names
You can choose between:
- Standard names used in C language:
gettext,ngettext,pgettext,dgettext, etc. - More readable Ada names:
Get_Text,Get_Plural_Text,Get_Text_With_Context, etc.
Limits
There's no support for Ada in
xgettext.
But if your code doesn't have unbalanced tick marks (like in 'Class), you
can still use it to produce and update .po files (see update.sh in example
directory). As a workaround, you can balance tick marks with comments -- '.
gettext_runtime system System gettext-runtime on windows
system
gfx_core 0.1.0 Modular Portable Graphics Library, Core Components
0.1.0
gfx_rasteriser 0.1.0 Modular Portable Graphics Library, Primitive's Rasteriser
0.1.0
gid 14.0.0 Generic Image Decoder - decode a broad variety of image formats
14.0.0
The Generic Image Decoder (GID) is a low-level Ada package for decoding a broad variety of image formats, from any data stream, to any kind of medium, be it an in-memory bitmap, a GUI object, some other stream, floating-point data for scientific calculations, a browser element, a device, ...
Currently supported formats are: BMP, GIF, JPEG, PNG, PNM (PBM, PGM, PPM), QOI, TGA
Animations (GIF, PNG) are supported.
Some features:
- Fast! Up to 2.8 times faster than ImageMagick
- Task safe
- Endian-neutral
- Multi-platform, but native code build
- Standalone (no dependency on other libraires, bindings, etc.; no extra component needed for running)
- Unconditionally portable: OS-, CPU-, compiler- independent code (*)
- Pure Ada 2012: this package can be used in projects in Ada 2012 and later versions of the Ada language
- Tests, demos and tools included
- Free, open-source
(*) within limits of compiler's provided integer types and target architecture capacity.
globe_3d 2025.04.18 GLOBE_3D: GL Object Based Engine for 3D
2025.04.18
GLOBE_3D is a real-time 3D Engine written in Ada, based on OpenGL.
- Real-time rendering
- Full eye movements and rotations ("6D")
- Displays combinations of colours, materials, textures
- Multitexturing
- Transparency
- Portal rendering
- Binary space partition (BSP)
- Collision detection
- Screenshots (.bmp) and video captures (.avi)
- Input-output of 3D objects
- Import from 3D Studio Max, id Software Radiant, VRML, Wavefront formats
- Tests, tools and demos included
- License: MIT
- Free, Open-Source
glut system OpenGL Utility Toolkit
system
glyph 0.3.0 Portable graphics framework for embedded Ada systems
0.3.0
gnat_aarch64_elf 16.1.0 The GNAT Ada compiler - aarch64 cross-compiler
16.1.0
gnat_arm_elf 16.1.0 The GNAT Ada compiler - ARM cross-compiler
16.1.0
gnat_avr_elf 16.1.0 The GNAT Ada compiler - AVR cross-compiler
16.1.0
gnat_external system GNAT is a compiler for the Ada programming language
system
gnat_math_extensions 1.2.0 Eigenvalues, eigenvectors for non-symmetric, non-Hermitian matrices
1.2.0
gnat_native 16.1.0 The GNAT Ada compiler - Native
16.1.0
gnat_riscv64_elf 16.1.0 The GNAT Ada compiler - RISC-V cross-compiler
16.1.0
gnat_x86_64_elf 16.1.0 The GNAT Ada compiler - x86_64 cross-compiler
16.1.0
gnat_xtensa_esp32_elf 16.1.0 The GNAT Ada compiler - ESP32 cross-compiler
16.1.0
gnatcoll 26.0.0 GNAT Components Collection - Core packages
26.0.0
gnatcoll_gmp 26.0.0 GNAT Components Collection - GNU Multiple Precision Arithmetic binding
26.0.0
gnatcoll_iconv 26.0.0 GNAT Components Collection - iconv binding
26.0.0
gnatcoll_lzma 26.0.0 GNAT Components Collection - lzma binding
26.0.0
gnatcoll_minimal 26.0.0 GNAT Components Collection - Minimal
26.0.0
gnatcoll_omp 26.0.0 GNAT Components Collection - OpenMP binding
26.0.0
gnatcoll_postgres 26.0.0 GNAT Components Collection - postgres
26.0.0
gnatcoll_projects 26.0.0 GNAT Components Collection - Projects
26.0.0
gnatcoll_python 21.0.0 GNAT Components Collection - python2 binding
21.0.0
gnatcoll_python3 23.0.0 GNAT Components Collection - python3 binding
23.0.0
gnatcoll_readline 26.0.0 GNAT Components Collection - readline binding
26.0.0
gnatcoll_sql 26.0.0 GNAT Components Collection - sql
26.0.0
gnatcoll_sqlite 26.0.0 GNAT Components Collection - sqlite
26.0.0
gnatcoll_syslog 26.0.0 GNAT Components Collection - syslog binding
26.0.0
gnatcoll_xref 26.0.0 GNAT Components Collection - xref
26.0.0
gnatcoll_zlib 26.0.0 GNAT Components Collection - zlib binding
26.0.0
gnatcov 26.2.1 Coverage Analysis Tool
26.2.1
GNATcoverage is a code coverage analysis tool offering support for a range of coverage metrics and output formats associated with powerful consolidation features letting users assess the combined coverage achievements of multiple program executions. It supports Ada, C and C++, but this binary only has Ada support.
Simple use example:
- Ensure your test project is well formed by building it a first time:
gprbuild -f -p -Ptests.gpr - Setup the instrumentation context in a known location:
gnatcov setup --prefix=/path/to/gnatcov-rts - Let further commands know about the location of the RTS via the
GPR_PROJECT_PATHvariable: On UNIX systems,export GPR_PROJECT_PATH="$GPR_PROJECT_PATH:/path/to/gnatcov-rts/share/gpr" - In addition, when using shared libraries, make the runtime's shared libraries discoverable:
On UNIX systems,
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/gnatcov-rts/lib"; On Windows,set PATH=%PATH%;C:\path\to\gnatcov-rts\bin - Instrument the sources:
gnatcov instrument -Ptests.gpr --level=stmt - Build the instrumented sources:
gprbuild -f -p -Ptests.gpr --src-subdirs=gnatcov-instr --implicit-with=gnatcov_rts.gpr - Execute the tests normally; for each executable, a
.srctracefile will be produced in the current directory. - Analyze the coverage with:
gnatcov coverage --level=stmt --annotate=xcov *.srctrace -Ptests.gpr. This produces annotated sources in the projects' object directory, in the formatfilename.adb.xcov.
Further information can be found in the GNATcoverage User's Guide.
gnatcov_bin 26.2.1 Coverage Analysis Tool - Binary Release
26.2.1
GNATcoverage is a code coverage analysis tool offering support for a range of coverage metrics and output formats associated with powerful consolidation features letting users assess the combined coverage achievements of multiple program executions. It supports Ada, C and C++, but this binary only has Ada support.
Simple use example:
- Ensure your test project is well formed by building it a first time:
gprbuild -f -p -Ptests.gpr - Setup the instrumentation context in a known location:
gnatcov setup --prefix=/path/to/gnatcov-rts - Let further commands know about the location of the RTS via the
GPR_PROJECT_PATHvariable: On UNIX systems,export GPR_PROJECT_PATH="$GPR_PROJECT_PATH:/path/to/gnatcov-rts/share/gpr" - In addition, when using shared libraries, make the runtime's shared libraries discoverable:
On UNIX systems,
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/gnatcov-rts/lib"; On Windows,set PATH=%PATH%;C:\path\to\gnatcov-rts\bin - Instrument the sources:
gnatcov instrument -Ptests.gpr --level=stmt - Build the instrumented sources:
gprbuild -f -p -Ptests.gpr --src-subdirs=gnatcov-instr --implicit-with=gnatcov_rts.gpr - Execute the tests normally; for each executable, a
.srctracefile will be produced in the current directory. - Analyze the coverage with:
gnatcov coverage --level=stmt --annotate=xcov *.srctrace -Ptests.gpr. This produces annotated sources in the projects' object directory, in the formatfilename.adb.xcov.
Further information can be found in the GNATcoverage User's Guide.
gnatdist_garlic 6.0.1 The configuration tool gnatdist for GARLIC
6.0.1
gnatdoc 26.0.0 GNAT Documentation Generation Tool
26.0.0
gnatdoc_bin 26.0.0 GNAT Documentation Generation Tool - Binary Release
26.0.0
GNATdoc is a documentation tool for Ada which processes source files, extracts documentation from the sources, and generates either annotated HTML files or Restructured Text (.rst) files.
It relies on documentation comments that it extracts from the source code. The engine in charge of extracting these comments, coupled with a cross-reference engine, gives GNATdoc all the flexibility needed to generate accurate documentation, and report errors in cases of missing documentation.
Further information can be found in the GNATdoc User's Guide.
This is a binary release of GNATdoc, built from tha GNAT-FSF-builds repository.
gnatformat 26.0.0 Opinionated code formatter for the Ada language
26.0.0
gnatformat_bin 26.0.0 GNAT code formatter for the Ada language - Binary Release
26.0.0
GNATformat is a an opinionated code formatter for the Ada language.
For information on how to use it, check out the online GNATformat documentation.
This version of GNATformat is a binary release, built from GNAT-FSF-builds.
A Windows version is not included in this release. For CI usage, privilege the Linux version. For private usage, we recommend the GNATformat version bundled in the Ada Language Server's VSCode extension.
gnatprove 16.1.0 Automatic formal verification of SPARK code
16.1.0
GNATprove, which provides automatic formal verification of SPARK code, is based on the open-source SPARK Pro by AdaCore. The SPARK Pro User's Guide provides extensive documentation on how to use GNATprove. Note that because this version of GNATprove is built from an intermediate commit of SPARK Pro, it is not representative of any specific SPARK Pro release, and the SPARK Pro documentation may describe features or capabilities that are not yet available in this version of GNATprove.
To use GNATprove, simply add it to your Alire project using
alr with gnatprove
You will then be able to run GNATprove:
alr gnatprove
For more details on getting started using GNATprove, see Getting Started with SPARK from the SPARK Pro User's Guide.
To get started with the SPARK language, see the Introduction to SPARK course on learn.adacore.com.
gnattest 26.0.0 Ada unit testing framework and generator
26.0.0
gnattest_bin 26.2.0 GNAT unit testing framework and generator - Binary Release
26.2.0
The gnattest tool is a utility that creates unit-test skeletons as well as a test driver infrastructure (harness). gnattest creates a skeleton for each visible subprogram in the packages under consideration when they do not exist already.
gnattest is a project-aware tool. A project file is mandatory for test driver generation. The project file package that can specify gnattest switches is named gnattest.
This is a binary release of GNATtest, built from tha GNAT-FSF-builds repository.
gnoga 2.2.2 gnoga - The GNU Omnificent GUI for Ada
2.2.2
gpr_unit_provider 23.0.0 GNAT Project File Library
23.0.0
gprbuild 26.0.1 The GPRBuild Ada/multilanguage build tool
26.0.1
GPRbuild is a generic build tool designed for the construction of large multi-language systems organized into subsystems and libraries. It is well-suited for compiled languages supporting separate compilation, such as Ada, C, C++ and Fortran.
gprconfig_kb 26.0.0 GPRCONFIG Knowledge Database
26.0.0
grammaticus 0.1.0 A library for expressing context-free grammars in SPARK
0.1.0
gsl 0.1.0 Ada binding to Gnu Scientific Library 2.7
0.1.0
gtkada 26.0.0 An Ada graphical toolkit based on Gtk+
26.0.0
This crate requires Gtk3+ >= 3.24.24
gwindows 1.5.4 GWindows - Ada Framework for Windows Development
1.5.4
GWindows is a full Microsoft Windows Rapid Application Development framework for programming GUIs (Graphical User Interfaces) with Ada.
Key features of GWindows:
- Complete Windows framework
- Pure Ada code, standalone
- Object-Oriented
- Code generator (GWenerator)
- Builds to 32 bit and to 64 bit native Windows applications
- Works on both ANSI and Unicode character modes
- Includes GNATCOM, an ActiveX/COM framework
- Tests, demos, samples and tutorials included
- License: MIT
- Free, Open-Source
hac 0.42.0 HAC Ada Compiler: a small, quick Ada compiler covering a subset of Ada
0.42.0
HAC (HAC Ada Compiler) is a small, quickly compiling, open-source Ada compiler, covering a subset of the Ada language. HAC is perhaps the first open-source (albeit partial) Ada compiler fully programmed in Ada itself.
Features:
- Quick: short programming-compilation-run-test cycles.
- Perfect for scripting jobs.
- Compiles Ada sources from any stream - file, internet, editor data, Zip archive, ...
- Compilation leaves zero compilation temp file - all is done in memory!
- Portable, fully programmed in Ada.
- Can be embedded into another software - see the LEA editor - and even exchange data with it - see the
demo/data_exchange/exchange_native_side.adbdemo. - Free, open-source.
hal 1.0.0 Hardware Abstraction Layer (HAL)
1.0.0
hal
Hardware Abstraction Layer: interfaces definitions to abstract access to common hardware devices and protocols
This crate is a snapshot of the hal in Ada Drivers
Library.
Any bug report, issue, contribution must be adressed to the Ada Drivers Library repo.
hangman 1.0.0 Hangman game for the console
1.0.0
hello 1.0.2 'Hello, world!' demonstration project
1.0.2
hex_format 0.1.0 Hexadecimal string formatting for modular types
0.1.0
hex_string 0.1.0 Get a string of almost any type as hex with underscores
0.1.0
hexapod_simulation_telemetry 0.0.1 Phoenyx Hexapod Simulation/Telemetry GUI
0.0.1
hirtos 2.0.0 High-Integrity RTOS
2.0.0
hirtos_separation_kernel 2.0.0 High-Integrity RTOS Separation Kernel
2.0.0
hkdf_ada 0.1.0 SPARK-proved HKDF (RFC 5869) - HKDF_SHA256 proved at Level 2
0.1.0
SPARK-proved HKDF (RFC 5869) for Ada 2022, built on hmac_ada. The
HKDF-SHA-256 instantiation is fully proved at SPARK Level 2 (266 checks,
zero pragma Assume). Uses System.Storage_Elements.Storage_Array for
embedded and constrained-runtime (Light, ZFP) compatibility, no heap
allocation, pragma Pure. A separate generic HKDF package provides an
unproved convenience layer for other HMAC functions.
hmac 2.0.0 HMAC implemented in Ada
2.0.0
hmac_ada 0.2.0 SPARK-proved HMAC (RFC 2104) implementation for Ada/SPARK
0.2.0
SPARK-proved HMAC (RFC 2104) with standalone SHA-256 (FIPS 180-4) for Ada 2022.
175 proof obligations fully discharged at Level 2 with zero pragma Assume.
Constant-time digest comparison (the default = operator), secure wipe of
key material, no heap allocation, pragma Pure. Suitable for embedded and
safety-critical systems. Includes streaming and one-shot APIs, plus a generic
HMAC package for other hash functions.
hmc5883 1.0.0 Driver for HMC5883L magnetic sensor
1.0.0
hnumerics 1.0.0 Operations for dual numbers
1.0.0
honki_tonks_zivilisationen 0.05.5305 The Code of my 4X turn-based strategy game.
0.05.5305
Der Code meines 4X-Rundenstrategiespiels. Geschrieben in Ada 2022 unter Verwendung der Ada Standardbibliothek, der ASFML 2.5.4, der CSFML 2.5.1 und der SFML 2.5.1. Nur unter Linux intensiv getestet, sollte aber auch unter anderen Betriebssystemen problemlos funktionieren.
The Code of my 4X turn-based strategy game. Written in Ada 2022 using the Ada standard library, the ASFML 2.5.4, the CSFML 2.5.1 and the SFML 2.5.1. Only intensively tested under Linux, but should also work without problems under other operating systems.
hostarm 26.5.2 CGI provider for Ada Reference Manual (ARM)
26.5.2
HostARM is a CGI program providing
- Ada Reference Manual 2012
- Ada Reference Manual 2022
- Annotated Ada Reference Manual 202Y (Draft 5)
HostARM focuses on user friendliness and more modern look of the manuals.
Benefits
- Search not dependant on external hosts
- Keypress navigation
- Shorter URL: Remove two levels of the URL and no html ending
- Optional stripping of navigation bars
- Optional modernized navigation bar
- Alphabet navigation bar in index
hp41cx_tools 1.8.10 Cross-platform tools to supercharge your HP-41CX emulator experience
1.8.10
HP-41CX Emulator Tools
Step into the golden era of retro computing with hp41cx_tools, a versatile suite that turbocharges your HP-41CX emulator adventures! Unlike many tools shackled to Windows, this toolkit runs flawlessly on macOS, Linux, and Windows, making it the ultimate companion for enthusiasts using the iconic PX-41CX from Paxer or the sleek DM41X from SwissMicros. Channel your inner 1980s programming wizard and master memory dumps, FOCAL source code, and now encoding with ease - compiling any FOCAL straight into upload-ready dump files for the PX-41CY emulator.
Built with the precision of Ada 2022 for unshakeable reliability, these tools decode, convert, and encode data with the finesse of the HP-41CX's legendary keystrokes. Paired with intuitive ZShell scripts for macOS and Linux, the suite streamlines complex workflows, whether you're on a modern MacBook, a Linux workstation, or a Windows PC. This cross-platform prowess ensures every retro computing fan can join the fun, no matter their setup - grateful shoutout to Pierre Houbert's pioneering PX41CX_Interface.xls and its VisualBasic wizardry, which lit the fuse for this focused PX-41CX/DM41X journey.
Key Features
- Memory Dump Decoder: Transform raw HP-41CX emulator memory dumps into readable FOCAL source code with pinpoint accuracy.
- Source Code Converter: Seamlessly convert between PX-41CX and DM41X FOCAL code styles, bridging emulator ecosystems.
- FOCAL Encoder: Compile modern UTF-8 encoded FOCAL programs into precise dump files, ready for PX-41CY emulator upload - vintage vibes meet UTF-8 pipelines.
- Unicode Support: Convert Unicode-encoded FOCAL programs to PX-41CX or DM41X formats, blending vintage charm with modern workflows.
- Cross-Platform Power: Runs natively on macOS, Linux, and Windows - like a portable Ada generic, no OS exceptions.
- Open Source: Hosted on SourceForge, ready for you to hack, extend, and share with the retro computing community.
- Comprehensive Docs: Explore detailed guides via GNATdoc.
Why You'll Love It
Relive the thrill of programming the HP-41CX, the calculator that defined a generation of scientific and hobbyist triumphs. Whether you're decoding vintage memory dumps, converting code styles, or encoding fresh FOCAL scripts, hp41cx_tools brings the past to life with unmatched versatility. Join the retro computing revolution and make your emulator sing - on any desktop OS!
hungarian 1.0.0 Ada wrapper for the fast Stachniss' Hungarian solver
1.0.0
hybrid_app_ada 2.0.0 Hybrid DDD/Clean/Hexagonal architecture greeter application in Ada 2022
2.0.0
hybrid_lib_ada 2.0.0 Hybrid DDD/Clean/Hexagonal library starter for Ada 2022
2.0.0
ieee_ethernet 1.0.0 IEEE 802.3 Ethernet declarations, with the SMI and PHY interfaces
1.0.0
Declarations from the IEEE 802.3 standard: frame and MTU lengths, Ethernet and IPv4 addresses, subnet masks, and the MII and RMII signal names.
Also provided are two abstractions defined by clause 22 of the standard, and therefore not vendor-specific:
The Serial Management Interface (SMI, also known as MDIO), including the Basic Register Set indexes and record representations of the Basic Control and Basic Status registers
An abstract PHY transceiver, whose auto-negotiation, loopback, power, reset, and link-state operations are concrete because the standard specifies them
A target supplies the concrete SMI I/O driver, and a vendor supplies the concrete PHY. Nothing here is architecture-specific: the project file sets neither Target nor Runtime, taking both from the client project.
image_io 20240725.0.0 Output in BMP,PPM,QOI;input in BMP,GIF,JPG,PNG,PNM,QOI,TGA
20240725.0.0
Image_IO
Output in BMP, PNG, PPM, and QOI formats; input in BMP, GIF, JPG, PNG, PNM, QOI, and TGA formats
Package Image_IO.Operations provides the ability to input and output images.
PNG is a lossless compressed format that is widely supported. Uncompressed BMP is a universal format that is very large. PPM is intended to be a set of portable formats, but lacks support by default on some platforms. QOI is a lossless compressed format, but not widely supported.
Write_P3 uses PragmARC.Text_IO to obtain uniform line terminators across platforms. This can be easily changed to Ada.Text_IO if the line terminators are not a concern.
Write_PNG uses Z_Compression and CRC-32.
Read is a wrapper around Generic Image Decoder (GID) for the most common use: reading an image from a file. GID may be used to decode images from other sources, but that generality makes it complex to use. Read ignores transparency (Alpha channel) and only reads the first frame of an animation.
Pure_RGB is a demo program that reads an image using Read, modifies it to change all color components to the closest of 0 or 255, and outputs the result using Write_PNG. It is invoked with
pure_rgb <name>
The output name is the input name with ".png" appended. Pure_RGB does no error handling; if the input file name is omitted, doesn't exist, or is not a supported image format, the program will terminate with an unhandled exception.
Image_IO and Pure_RGB have been compiled and tested with GNAT 12.3.0 on Linux and ObjectAda 10.5U7 on Windows.
image_random 20200720 True random numbers from a digital camera
20200720
Image_Random
True random numbers from a digital camera
This works under Linux with the GNAT compiler; modification for other platforms or compilers is left as an exercise for the desperate
Ideally, the camera should have its lens cap on, or have a similar dark covering, so the image is of the camera sensor noise
However, another randomly changing scene, such as a lava lamp or aquarium, may also work
This is slow and only produces 64 random bytes; if you need more, it is probably best to use these bytes to seed a high-quality pseudo-random number generator, such as the Threefry generator
ini_files 11.0.0 A standalone, portable Ada package for configuration files
11.0.0
Config is an Ada package for parsing configuration files (.ini, .inf, .cfg, ...) and retrieving keys of various types. New values for single keys, or entire sections, can be set.
- Standalone and unconditionally portable code.
- Pure Ada 2005: nothing compiler- / system- specific.
- Can be used in projects in Ada 2005, Ada 2012 and later versions of the Ada language.
- Object oriented.
- Tests and demos included.
inotify 2.0.1 Monitor filesystem events using Linux' inotify API
2.0.1
intl 1.0.1 NLS thin Ada binding
1.0.1
This is a small Ada library that provides NLS support by using gettext (3), textdomain (3) and bindtextdomain (3).
When NLS is not supported or disabled, the Ada library implements the NLS operations by using empty suitable stubs that skip the NLS transformation and emit the English default message.
Using the library
The first step in using the NLS library is to call the Initialize procedure
that handles the setup of textdomain and bindtextdomain to configure the
language according to the user's locale. The program localized messages are
stored in a catalog file that is created by msginit (1) and msgfmt (1) tools.
In most cases catalog file are identified by a unique name that must be given
to the Initialize procedure (below, it will be mytool).
with Intl;
...
PROG_NAME : constant String := "mytool";
...
Intl.Initialize (PROG_NAME, "/usr/share/locale");
To localize a message, the "-" function is provided to encapsulate the call
to the gettext (3) method. If the message
is translated and the catalog contains it in the user's language, it will be
converted by gettext and the "-" function returns the localized message.
with GNAT.IO;
...
function "-" (Message : in String) return String is (Intl."-" (Message));
...
GNAT.IO.Put_Line (-("Hello world!"));
To build the message translation file (PO files), a tool can be used to extract
from the source code the default messages. This process is
explained in the GNU gettext documentation.
io_utils 1.0.0 A terminal IO library
1.0.0
iso 2.0.0 ISO Standard references for Ada such as 1366 & 4217 (Country & Currency)
2.0.0
iterators 0.2.0 Functional iterators a la Rust
0.2.0
itsybitsy_bsp 0.0.4 Board support package for Arduino ItsyBitsy
0.0.4
itsybitsy_rp2040_bsp 1.0.0 Board support package for Arduino ItsyBitsy RP2040
1.0.0
j2ada 1.4.2 Almost Java to Ada translator
1.4.2
jintp 1.0.1 Template parser in Ada based on Jinja2
1.0.1
journada 1.0.0 Simple and nice configurable logging
1.0.0
json 6.0.0 An Ada 2012 library for parsing JSON
6.0.0
jupyter_kernel 1.0.0 Jupyter Kernel for Ada
1.0.0
Jupyter Kernel for Ada
To run this kernel with Jupyter Notebook: alr get --build jupyter_kernel cd jupyter_kernel* ln -s ./alire/build/.objs . PATH=$PATH:$PWD/alire/build/.objs/driver JUPYTER_PATH=$PWD jupyter-notebook --debug
jwt 1.0.0 JSON Web Token (JWT) implementation in Ada
1.0.0
keypadder 0.3.0 Programmable virtual keypad for your Linux desktop
0.3.0
Overview
Keypadder runs on your desktop machine and provides a mobile/tablet-friendly web page that you use from a tablet or phone to send frequently-used, awkward, or difficult-to-remember key combinations to the currently-focused desktop application.
Amongst other things, the author uses it with Thunderbird and LibreOffice Writer for typing accented characters, with MuseScore to provide a keypad similar to a certain commercial score writing application, and with Firefox for accented characters and Emojis in social media.
It's a great use for one of those old smartphones or tablets you have lying in that drawer!
keystoreada 1.4.3 Ada Keystore
1.4.3
Overview
Ada Keystore is a tool and library to store information in secure wallets and protect the stored information by encrypting the content. It is necessary to know one of the wallet password to access its content. Ada Keystore can be used to safely store passwords, credentials, bank accounts and even documents.
Wallets are protected by a master key using AES-256 and the wallet master key is protected by a user password. The wallet defines up to 7 slots that identify a password key that is able to unlock the master key. To open a wallet, it is necessary to unlock one of these 7 slots by providing the correct password. Wallet key slots are protected by the user's password and the PBKDF2-HMAC-256 algorithm, a random salt, a random counter and they are encrypted using AES-256.
Values stored in the wallet are protected by their own encryption keys using AES-256. A wallet can contain another wallet which is then protected by its own encryption keys and passwords (with 7 independent slots). Because the child wallet has its own master key, it is necessary to known the primary password and the child password to unlock the parent wallet first and then the child wallet.
Documents
labs_radar 1.0.0 Introductory Ada exercises based around a fake radar codebase
1.0.0
labs_solar_system 1.2.0 A set of SDL-based exercises to learn Ada
1.2.0
labs_standalone 0.1.0 Ada exercices for training
0.1.0
lace 1.0.0 Contains a set of low level re-usable Ada components.
1.0.0
Contains:
- lace.Events : Provides a 'subject/oberver' 'event/response' facility.
- lace.Any : Provides an interface type to allow heterogenous containers.
- lace.fast_Pool : Provides a generic which allows fast allocation/deallocation.
- lace.Text : Provides a DSA friendly set of text operations.
lace_box2d 1.0.0 Provides a thin Ada binding to the 'box2d' C++ project.
1.0.0
lace_bullet 1.0.0 Provides a thin Ada binding to the 'bullet' C++ project.
1.0.0
lace_c_math 1.0.0 A binding to the C math code used by box2d & bullet bindings.
1.0.0
lace_collada 1.0.0 A Collada parser.
1.0.0
lace_gel 0.1.0 A 2D/3D game engine library (GEL).
0.1.0
lace_gel_animation_demo 0.1.0 A demo of GEL's human animation.
0.1.0
lace_gel_full_demo 0.1.0 A demo of most of GEL's features.
0.1.0
lace_math 1.0.0 Provides an Ada package family covering pure and applied mathematics.
1.0.0
Contains:
-
Pure
- Arithmetic (covers quantity)
- Algebra (covers structure)
- Geometry (covers space)
- Analysis (covers change)
-
Applied
- Statistics
- Computational
lace_opengl 1.0.0 Provides an openGL engine.
1.0.0
lace_physics 1.0.0 Provides 2D/3D rigid body dynamics simulation.
1.0.0
lace_shared 1.0.0 Default settings for GPR files in the Lace project.
1.0.0
lace_swig 1.0.0 Provides packages required by bindings produced by the 'swig4ada' tool.
1.0.0
lace_xml 1.0.0 Provides simple XML read/write support.
1.0.0
lal_highlight 21.0.0 Simple code highlighters based on Libadalang
21.0.0
lal_refactor 26.0.0 Source code refactoring utilities for the Ada language
26.0.0
langkit_support 26.0.0 Runtime support library for Langkit-generated libraries
26.0.0
lea 0.94.0 LEA is a Lightweight Editor for Ada
0.94.0
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.
Features:
- Quick start and reactivity
- Uses the Scintilla editor widget (like Notepad++)
- Multi-document
- Multiple undo's & redo's
- Multi-line, multi-point editing; rectangular selections
- Duplication of lines and selections
- Color themes
- Syntax highlighting, parenthesis matching
- Bookmarks
- Smart editor features (auto-completion, navigation, mouse-hover infos)
- Includes HAC, the HAC Ada Compiler
- Includes numerous examples of Ada programs, ready to be run
- Single executable, runs without installation
- Programmed in Ada
- Free, Open-Source
learnadainy 0.2.0 Learn Ada in Y Minutes
0.2.0
levenshtein_distance 1.0.0 Implementation of levenshtein distance.
1.0.0
libadalang 26.0.0 Ada semantic analysis library
26.0.0
libadalang2xml 1.0.2 Generates XML for Ada source, using libadalang.
1.0.2
Libadalang2XML is a tool to extract syntatic aspects of Ada source code into XML.
The Ada source is initially read using Libadalang. The resulting tree is then traversed, and its structure output in an XML form.
The document type definition isn't explicit; it's simply derived from the tree elements created by Libadalang. Note that Libadalang includes much more semantic information than the surface structure generated by this tool, but nevertheless there's enough there to --- for example --- create a scriptable body for a package spec.
Building on macOS
Using the standard langkit_support, libadalang crates, you must build with LIBRARY_TYPE set to relocatable.
You can obtain versions of those crates adjusted to not require those features, which can therefore build the (default) static libraries, by visiting https://github.com/simonjwright/alire-index.mac.
Example
As an example of the output, this code
package Demo is
procedure Square (X : in out Integer);
end Demo;
generates
<CompilationUnit>
<AdaNodeList/>
<LibraryItem>
<PrivateAbsent/>
<PackageDecl>
<DefiningName>
<Id>Demo</Id>
</DefiningName>
<PublicPart>
<AdaNodeList>
<SubpDecl>
<OverridingUnspecified/>
<SubpSpec>
<SubpKindProcedure>procedure</SubpKindProcedure>
<DefiningName>
<Id>Square</Id>
</DefiningName>
<Params>
<ParamSpecList>
<ParamSpec>
<DefiningNameList>
<DefiningName>
<Id>X</Id>
</DefiningName>
</DefiningNameList>
<AliasedAbsent/>
<ModeInOut>in out</ModeInOut>
<SubtypeIndication>
<NotNullAbsent/>
<Id>Integer</Id>
</SubtypeIndication>
</ParamSpec>
</ParamSpecList>
</Params>
</SubpSpec>
</SubpDecl>
</AdaNodeList>
</PublicPart>
<EndName>
<Id>Demo</Id>
</EndName>
</PackageDecl>
</LibraryItem>
<PragmaNodeList/>
</CompilationUnit>
libadalang_tools 26.0.0 Ada semantic analysis library extension and tools
26.0.0
libbfd system GNU Binutils BFD libraries
system
libblas system Basic Linear Algebra Subprograms
system
libbullet system Bullet physics library.
system
libcanberra system A simple library for playing event sounds
system
libchipmunk system A high-performance 2D rigid body physics library
system
libclntsh system Oracle Instant Client
system
libcmark system Cmark shared library
system
libcrc 1.0.0 Cyclic Redundancy Check (CRC) Library
1.0.0
libcsfml system Libraries for the C Binding of SFML - Development Files
system
libcurl system CURL C library for transferring data with URLs
system
libegl system EGL and GL Vendor-Neutral Dispatch library.
system
libexpat system Expat is a stream-oriented XML 1.0 parser library
system
libfbclient system Firebird DB client library
system
libfreetype system A freely available software library to render fonts
system
libftdi1 system FTDI USB driver with bitbang mode
system
libfuse system Interface for userspace programs to export a filesystem
system
libglfw3 system Portable library for OpenGL, window and input
system
libglib system libglib library
system
libgmp system The GNU Multiple Precision Arithmetic Library
system
libgnatdoc 26.0.0 GNAT Documentation Generation Tool (as a library)
26.0.0
libgnatformat 26.0.0 Opinionated code format library for the Ada language
26.0.0
libgnutls system GNU TLS library
system
libgomp system GNU OpenMP library
system
libgpiod system C library for interacting with Linux GPIO device
system
libgpr 26.0.0 GNAT Project File Library
26.0.0
libgpr2 26.0.0 Parser for GPR Project File
26.0.0
libgraph_easy_perl system Drawing of ASCII graphs
system
libgsl system The GNU Scientific Library (GSL)
system
libgtk3 system GObject-based multi-platform GUI toolkit (v3)
system
libhello 1.0.1 Basic library demonstration project
1.0.1
libhidapi system A simple library for communicating with USB and Bluetooth HID devices
system
libi2c system Userspace I2C programming library
system
libiconv system GNU libiconv
system
libkeccak 3.0.0 SHA-3 and related algorithms
3.0.0
liblal_refactor 26.0.0 Source code refactoring library for the Ada language
26.0.0
liblapack system Linear Algebra Package
system
liblua system Development files for the Lua language
system
liblzma system The GNU Readline Library
system
libmagic system Recognize the type of data in a file using 'magic' numbers
system
libmariadb system MariaDB client libraries
system
libmesa system Mesa openGL library.
system
libmpfr system The GNU Multiple Precision Floating-Point Reliable Library
system
libmysqlclient system MySQL client libraries
system
libopus system Opus codec library
system
libpcap system A system-independent interface for user-level packet capture
system
libpixman system Pixman is a pixel manipulation library for X and cairo.
system
libpq system Libraries for use with PostgreSQL
system
libpulse system PulseAudio client libraries
system
libpython2dev system Header files and a static library for Python2
system
libpython3dev system Header files and a static library for Python3
system
librabbitmq system RabbitMQ C client library development files
system
libraylib system Simple and easy-to-use game programming library
system
libreadline system The GNU Readline Library
system
librtmidi system Common API for realtime MIDI input/output across multiple platforms
system
libsap 0.3.0 Asynchronous message passing for protocol stacks
0.3.0
Provides utilities to create Service Access Points (SAP) for asynchronous, zero-copy message passing between tasks based on Service Primitive messages (request, confirm, indication, and response primitives).
libsdl2 system Simple DirectMedia Layer development files
system
libsdl2_image system Simple DirectMedia Layer development files - Image
system
libsdl2_mixer system Simple DirectMedia Layer development files - Mixer
system
libsdl2_ttf system Simple DirectMedia Layer development files - TTF
system
libsecret system FreeDesktop secret library
system
libsimpleio 2.24736.1 Linux Simple I/O Library
2.24736.1
Introduction
This crate provides an Ada binding to the Linux Simple I/O Library, aka libsimpleio.
Linux Simple I/O Library
libsimpleio is an attempt to encapsulate (as much as possible) the ugliness of Linux I/O device access. It provides services for the following types of I/O devices:
- Industrial I/O Subsystem A/D (Analog to Digital) Converter Devices
- Industrial I/O Subsystem D/A (Digital to Analog) Converter Devices
- GPIO (General Purpose Input/Output) Pins
- Raw HID (Human Interface Device) Devices
- I2C (Inter-Integrated Circuit) Bus Devices
- PWM (Pulse Width Modulated) Output Devices
- Remote I/O Protocol Devices
- Serial Ports
- SPI (Serial Peripheral Interface) Bus Devices
- Stream Framing Protocol Devices
- TCP and UDP over IPv4 Network Devices
- Watchdog Timer Devices
libsimpleio exports a small number of C wrapper or shim functions.
These shim functions present a more coherent API (Application
Programming Interface) than Linux kernel ioctl() services and the
myriad other different Linux device I/O API's. The libsimpleio shim
functions are designed to be easily called from Ada, C++, C#, Java, Free
Pascal and other programming languages.
The man pages specifying the libsimpleio API (Application
Programming Interface) are available for viewing at
https://repo.munts.com/libsimpleio/doc/libsimpleio.html.
Ada Binding for the Linux Simple I/O Library
The Ada binding consists of several software component layers.
The bottom software component layer consists of the C shim functions discussed in the previous section.
The next software component layer consists of binding packages that
declare the C shim functions as Ada procedures. Each of the binding
packages corresponds to a single C source file (e.g. package
libadc corresponds to libadc.c). Each of the C shim
functions are declared as external Ada procedures using
pragma Import. The Ada procedure names do not necessarily match
the C function names (e.g. the C function ADC_Open() is declared
as Ada procedure libadc.Open). Many of the binding packages also
declare constants as well (e.g. DIRECTION_INPUT in
libgpio.ads).
With very few exceptions, you will never need to directly call any of
the procedures nor reference any of the constants declared in the
libxxx binding packages.
The next software component layer consists of object packages that declare OOP (Object Oriented Programming) object types and methods for each of the I/O subsystems. This layer uses Ada interface types, access-to-interface types, and private tagged records extensively.
For example, the package GPIO defines an interface type
PinInterface, an access to PinInterface type named
Pin, and primitive operation subprograms Get and Put.
The child package GPIO.libsimpleio declares a private tagged
record type PinSubclass that implements GPIO.PinInterface,
subprograms Get and Put that are required to implement
GPIO.PinInterface, and a constructor function Create that
returns an GPIO.Pin access value.
Every package that implements GPIO.PinInterface will also declare
a constructor function Create that returns GPIO.Pin.
This architecture allows code similar to the following fragment:
MyPins : array (1 .. 3) of GPIO.pin;
GPIO(1) := GPIO.libsimpleio.Create(...);
GPIO(2) := GPIO.UserLED.Create(...);
GPIO(3) := GPIO.PWM.Create(...);
The three GPIO pins can be stored in the same array and manipulated in exactly the same manner even though the hardware implementation for each pin is radically different.
The topmost software component layer consists of device packages that implement support for particular I/O devices and are built upon the lower layers. Most of the device packages correspond to integrated circuits, such as the PCA9534 I2C GPIO Expander. A few implement support for boards or modules, such the Grove Temperature Sensor module.
libsqlite3 system A C library that implements an SQL database engine
system
libtcl system Tcl (Tool Control Language)
system
libtk system Tk (Tool Control Language Toolkit)
system
libtls system A new TLS library
system
libtree_sitter system Parser generator tool and incremental parsing library
system
libusb system A cross-platform library to access USB devices
system
libwayland system Wayland libraries and protocol
system
libx11 system X11 client-side library
system
libzmq system lightweight messaging kernel
system
light_arduino_due 0.3.0 Arduino Due Board Support Package for `light` GNAT Runtime
0.3.0
light_blackpill_stm32f401 0.3.0 BlackPill STM32F401 BSP for `light` GNAT Runtime
0.3.0
light_fk723m1_zgt6 0.2.0 FK723M1-ZGT6 BSP for `light` GNAT Runtime
0.2.0
light_nrf52832 15.4.0 light runtime for the NRF52832 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_nrf52832in the dependency list:[[depends-on]] light_nrf52832 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project file. With this, gprbuild will compile the run-time before your application
with "$(runtime_proj_prefix)_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use $(runtime_proj_prefix)_build'Target; for Runtime ("Ada") use $(runtime_proj_prefix)_build'Runtime ("Ada");
light_nrf52833 15.4.0 light runtime for the NRF52833 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_nrf52833in the dependency list:[[depends-on]] light_nrf52833 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project file. With this, gprbuild will compile the run-time before your application
with "$(runtime_proj_prefix)_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use $(runtime_proj_prefix)_build'Target; for Runtime ("Ada") use $(runtime_proj_prefix)_build'Runtime ("Ada");
light_nrf52840 15.4.0 light runtime for the NRF52840 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_nrf52840in the dependency list:[[depends-on]] light_nrf52840 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project file. With this, gprbuild will compile the run-time before your application
with "$(runtime_proj_prefix)_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use $(runtime_proj_prefix)_build'Target; for Runtime ("Ada") use $(runtime_proj_prefix)_build'Runtime ("Ada");
light_nrf54l_app 15.4.0 light runtime for the nRF54L series
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_nrf54l_appin the dependency list:[[depends-on]] light_nrf54l_app = "*"
Then edit your project file to add the following elements:
- "with" the run-time project files:
with "runtime_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use Runtime_Build'Target; for Runtime ("Ada") use Runtime_Build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches & ("-Wl,--gc-sections"); end Linker;
Note that the linker switch -Wl,--gc-sections is optional, but its use is
recommended since it reduces the final size of the executable by removing
unused code.
light_rp2040 15.4.0 light runtime for the RP2040 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_rp2040in the dependency list:[[depends-on]] light_rp2040 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:
Note thatpackage Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches & ("-Wl,--gc-sections"); end Linker;--gc-switchesis recommended as it reduces flash and RAM usage by removing unused code and data, but it is not mandatory.
See the project website for details on configuring the runtime.
light_rp2350 15.4.0 light runtime for the RP2350 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_rp2350in the dependency list:[[depends-on]] light_rp2350 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:
Note thatpackage Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches & ("-Wl,--gc-sections"); end Linker;--gc-switchesis recommended as it reduces flash and RAM usage by removing unused code and data, but it is not mandatory.
See the project website for details on configuring the runtime.
light_stm32f0xx 15.4.0 light runtime for the STM32F0XX SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_stm32f0xxin the dependency list:[[depends-on]] light_stm32f0xx = "*" - if applicable, apply any runtime configuration variables (see below).
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches; end Linker;
The runtime is configurable via Alire crate configuration variables. See the project website for full details of the available options.
By default, the runtime is configured for the STM32F072RB. If your board has
a different MCU, then you will need to specify which MCU you are using via
the crate configuration. For example, to configure the runtime for the
STM32F030F4, add the following to your alire.toml:
[configuration.values]
light_stm32f0xx.MCU_Sub_Family = "F030"
light_stm32f0xx.MCU_Pin_Count = "F"
light_stm32f0xx.MCU_User_Code_Memory_Size = "4"
By default, the runtime configures the clock tree for a 48 MHz system clock from the high-speed internal (HSI) oscillator. If you want a different clock configuration, then use the crate configuration variables to specify the configuration you wish to use. For example, to configure the runtime to generate a 32 MHz system clock from a 16 MHz HSE crystal oscillator:
[configuration.values]
# Configure a 16 MHz HSE crystal oscillator
light_stm32f0xx.HSE_Clock_Frequency = 16000000
light_stm32f0xx.HSE_Bypass = false
# Use the PLL as the SYSCLK source
light_stm32f0xx.SYSCLK_Src = "PLL"
# Configure the PLL input for a 16 MHz input from the HSE
light_stm32f0xx.PLL_Src = "HSE_PREDIV"
light_stm32f0xx.PREDIV = 1
# Configure the PLL to output 32 MHz (16 MHz * 2)
light_stm32f0xx.PLLMUL = 2
# Configure the AHB an APB to also run at 32 MHz
light_stm32f0xx.AHB_Pre = "DIV1"
light_stm32f0xx.APB_Pre = "DIV1"
light_stm32g0xx 15.4.0 light runtime for the STM32G0XX SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_stm32g0xxin the dependency list:[[depends-on]] light_stm32g0xx = "*" - if applicable, apply any runtime configuration variables (see below).
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches; end Linker;
The runtime is configurable via Alire crate configuration variables. See the project website for full details of the available options.
By default, the runtime is configured for the STM32G0B1RE. If your board has
a different MCU, then you will need to specify which MCU you are using via
the crate configuration. For example, to configure the runtime for the
STM32G031J4, add the following to your alire.toml:
[configuration.values]
light_stm32g0xx.MCU_Sub_Family = "G031"
light_stm32g0xx.MCU_Flash_Memory_Size = "4"
By default, the runtime configures the clock tree for a 64 MHz system clock from the high-speed internal (HSI) oscillator. If you want a different clock configuration, then use the crate configuration variables to specify the configuration you wish to use. For example, to configure the runtime to generate a 64 MHz system clock from a 24 MHz HSE crystal oscillator:
[configuration.values]
# Configure a 24 MHz HSE crystal oscillator
light_tasking_stm32g0xx.HSE_Clock_Frequency = 24000000
light_tasking_stm32g0xx.HSE_Bypass = false
# Select PLLRCLK as the SYSCLK source
light_tasking_stm32g0xx.SYSCLK_Src = "PLLRCLK"
# Configure the PLL VCO to run at 128 MHz from the 24 MHz HSE (fVCO = fHSE * (N/M))
light_tasking_stm32g0xx.PLL_Src = "HSE"
light_tasking_stm32g0xx.PLL_N_Mul = 10
light_tasking_stm32g0xx.PLL_M_Div = 2
# Configure the PLLRCLK to run at 64 MHz from the 128 MHz VCO.
light_tasking_stm32g0xx.PLL_R_Div = 2
# Configure the AHB an APB to also run at 64 MHz
light_tasking_stm32g0xx.AHB_Pre = "DIV1"
light_tasking_stm32g0xx.APB_Pre = "DIV1"
The runtime will generate a compile time error when an invalid PLL configuration is set.
By default the PLL's Q and P clocks are enabled. If you don't need them, then you can disable them via the crate configuration:
[configuration.values]
light_stm32g0xx.PLL_Q_Enable = false
light_stm32g0xx.PLL_P_Enable = false
The runtime will enable the PLL only when either PLL_Q_Enable or PLL_P_Enable
is true, or when SYSCLK_Src = "PLLRCLK".
The interrupt stack sizes are also configurable:
[configuration.values]
light_stm32g0xx.Interrupt_Stack_Size = 1024
light_stm32g0xx.Interrupt_Secondary_Stack_Size = 128
light_stm32g4xx 15.4.0 light runtime for the STM32G4XX SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_stm32g4xxin the dependency list:[[depends-on]] light_stm32g4xx = "*" - if applicable, apply any runtime configuration variables (see below).
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches; end Linker;
The runtime is configurable via Alire crate configuration variables. See the project website for full details of the available options.
By default, the runtime is configured for the STM32G474RE. If you are using
a different MCU, then you will need to configure the runtime by adding the
following to your alire.toml. For example, to configure the runtime for the
STM32G431K6:
[configuration.values]
light_stm32g4xx.MCU_Sub_Family = "G431"
light_stm32g4xx.MCU_Flash_Memory_Size = "6"
By default, the runtime configures the clock tree for a 170 MHz system clock from the high-speed internal (HSI) oscillator. If you want a different clock configuration, then use the crate configuration variables to specify the configuration you wish to use. For example, to configure the runtime to generate a 170 MHz system clock from a 24 MHz HSE crystal oscillator:
[configuration.values]
# Configure a 24 MHz HSE crystal oscillator
light_stm32g4xx.HSE_Clock_Frequency = 24000000
light_stm32g4xx.HSE_Bypass = false
# Select PLLRCLK as the SYSCLK source
light_stm32g4xx.SYSCLK_Src = "PLLRCLK"
# Configure the PLL VCO to run at 340 MHz from the 24 MHz HSE (fVCO = fHSE * (N/M))
light_stm32g4xx.PLL_Src = "HSE"
light_stm32g4xx.PLL_N_Mul = 85
light_stm32g4xx.PLL_M_Div = 6
# Configure the PLLRCLK to run at 170 MHz from the 340 MHz VCO.
light_stm32g4xx.PLL_R_Div = 2
# Configure the AHB and APB to also run at 170 MHz
light_stm32g4xx.AHB_Pre = "DIV1"
light_stm32g4xx.APB1_Pre = "DIV1"
light_stm32g4xx.APB2_Pre = "DIV1"
The runtime will generate a compile time error when an invalid PLL configuration is set.
By default the PLL's Q and P clocks are enabled. If you don't need them, then you can disable them via the crate configuration:
[configuration.values]
light_stm32g4xx.PLL_Q_Enable = false
light_stm32g4xx.PLL_P_Enable = false
The runtime will enable the PLL only when either PLL_Q_Enable or PLL_P_Enable
is true, or when SYSCLK_Src = "PLLRCLK".
The interrupt stack sizes are also configurable:
[configuration.values]
light_stm32g4xx.Interrupt_Stack_Size = 1024
light_stm32g4xx.Interrupt_Secondary_Stack_Size = 128
light_tasking_nrf52832 15.4.0 light-tasking runtime for the NRF52832 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_tasking_nrf52832in the dependency list:[[depends-on]] light_tasking_nrf52832 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project file. With this, gprbuild will compile the run-time before your application
with "$(runtime_proj_prefix)_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use $(runtime_proj_prefix)_build'Target; for Runtime ("Ada") use $(runtime_proj_prefix)_build'Runtime ("Ada");
light_tasking_nrf52833 15.4.0 light-tasking runtime for the NRF52833 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_tasking_nrf52833in the dependency list:[[depends-on]] light_tasking_nrf52833 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project file. With this, gprbuild will compile the run-time before your application
with "$(runtime_proj_prefix)_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use $(runtime_proj_prefix)_build'Target; for Runtime ("Ada") use $(runtime_proj_prefix)_build'Runtime ("Ada");
light_tasking_nrf52840 15.4.0 light-tasking runtime for the NRF52840 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_tasking_nrf52840in the dependency list:[[depends-on]] light_tasking_nrf52840 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project file. With this, gprbuild will compile the run-time before your application
with "$(runtime_proj_prefix)_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use $(runtime_proj_prefix)_build'Target; for Runtime ("Ada") use $(runtime_proj_prefix)_build'Runtime ("Ada");
light_tasking_nrf54l_app 15.4.0 light-tasking runtime for the nRF54L series
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_tasking_nrf54l_appin the dependency list:[[depends-on]] light_tasking_nrf54l_app = "*"
Then edit your project file to add the following elements:
- "with" the run-time project files:
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use Runtime_Build'Target; for Runtime ("Ada") use Runtime_Build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches & ("-Wl,--gc-sections"); end Linker;
Note that the linker switch -Wl,--gc-sections is optional, but its use is
recommended since it reduces the final size of the executable by removing
unused code.
light_tasking_rp2040 15.4.0 light-tasking runtime for the RP2040 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_tasking_rp2040in the dependency list:[[depends-on]] light_tasking_rp2040 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:
Note thatpackage Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches & ("-Wl,--gc-sections"); end Linker;--gc-switchesis recommended as it reduces flash and RAM usage by removing unused code and data, but it is not mandatory.
See the project website for details on configuring the runtime.
light_tasking_rp2350 15.4.0 light-tasking runtime for the RP2350 SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_tasking_rp2350in the dependency list:[[depends-on]] light_tasking_rp2350 = "*"
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:
Note thatpackage Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches & ("-Wl,--gc-sections"); end Linker;--gc-switchesis recommended as it reduces flash and RAM usage by removing unused code and data, but it is not mandatory.
See the project website for details on configuring the runtime.
light_tasking_stm32f0xx 15.4.0 light-tasking runtime for the STM32F0XX SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_tasking_stm32f0xxin the dependency list:[[depends-on]] light_tasking_stm32f0xx = "*" - if applicable, apply any runtime configuration variables (see below).
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches; end Linker;
The runtime is configurable via Alire crate configuration variables. See the project website for full details of the available options.
By default, the runtime is configured for the STM32F072RB. If your board has
a different MCU, then you will need to specify which MCU you are using via
the crate configuration. For example, to configure the runtime for the
STM32F030F4, add the following to your alire.toml:
[configuration.values]
light_tasking_stm32f0xx.MCU_Sub_Family = "F030"
light_tasking_stm32f0xx.MCU_Pin_Count = "F"
light_tasking_stm32f0xx.MCU_User_Code_Memory_Size = "4"
By default, the runtime configures the clock tree for a 48 MHz system clock from the high-speed internal (HSI) oscillator. If you want a different clock configuration, then use the crate configuration variables to specify the configuration you wish to use. For example, to configure the runtime to generate a 32 MHz system clock from a 16 MHz HSE crystal oscillator:
[configuration.values]
# Configure a 16 MHz HSE crystal oscillator
light_tasking_stm32f0xx.HSE_Clock_Frequency = 16000000
light_tasking_stm32f0xx.HSE_Bypass = false
# Use the PLL as the SYSCLK source
light_tasking_stm32f0xx.SYSCLK_Src = "PLL"
# Configure the PLL input for a 16 MHz input from the HSE
light_tasking_stm32f0xx.PLL_Src = "HSE_PREDIV"
light_tasking_stm32f0xx.PREDIV = 1
# Configure the PLL to output 32 MHz (16 MHz * 2)
light_tasking_stm32f0xx.PLLMUL = 2
# Configure the AHB an APB to also run at 32 MHz
light_tasking_stm32f0xx.AHB_Pre = "DIV1"
light_tasking_stm32f0xx.APB_Pre = "DIV1"
light_tasking_stm32g0xx 15.4.0 light-tasking runtime for the STM32G0XX SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_tasking_stm32g0xxin the dependency list:[[depends-on]] light_tasking_stm32g0xx = "*" - if applicable, apply any runtime configuration variables (see below).
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches; end Linker;
The runtime is configurable via Alire crate configuration variables. See the project website for full details of the available options.
By default, the runtime is configured for the STM32G0B1RE. If your board has
a different MCU, then you will need to specify which MCU you are using via
the crate configuration. For example, to configure the runtime for the
STM32G031J4, add the following to your alire.toml:
[configuration.values]
light_tasking_stm32g0xx.MCU_Sub_Family = "G031"
light_tasking_stm32g0xx.MCU_Flash_Memory_Size = "4"
By default, the runtime configures the clock tree for a 64 MHz system clock from the high-speed internal (HSI) oscillator. If you want a different clock configuration, then use the crate configuration variables to specify the configuration you wish to use. For example, to configure the runtime to generate a 64 MHz system clock from a 24 MHz HSE crystal oscillator:
[configuration.values]
# Configure a 24 MHz HSE crystal oscillator
light_tasking_stm32g0xx.HSE_Clock_Frequency = 24000000
light_tasking_stm32g0xx.HSE_Bypass = false
# Select PLLRCLK as the SYSCLK source
light_tasking_stm32g0xx.SYSCLK_Src = "PLLRCLK"
# Configure the PLL VCO to run at 128 MHz from the 24 MHz HSE (fVCO = fHSE * (N/M))
light_tasking_stm32g0xx.PLL_Src = "HSE"
light_tasking_stm32g0xx.PLL_N_Mul = 10
light_tasking_stm32g0xx.PLL_M_Div = 2
# Configure the PLLRCLK to run at 64 MHz from the 128 MHz VCO.
light_tasking_stm32g0xx.PLL_R_Div = 2
# Configure the AHB an APB to also run at 64 MHz
light_tasking_stm32g0xx.AHB_Pre = "DIV1"
light_tasking_stm32g0xx.APB_Pre = "DIV1"
The runtime will generate a compile time error when an invalid PLL configuration is set.
By default the PLL's Q and P clocks are enabled. If you don't need them, then you can disable them via the crate configuration:
[configuration.values]
light_tasking_stm32g0xx.PLL_Q_Enable = false
light_tasking_stm32g0xx.PLL_P_Enable = false
The runtime will enable the PLL only when either PLL_Q_Enable or PLL_P_Enable
is true, or when SYSCLK_Src = "PLLRCLK".
The interrupt stack sizes are also configurable:
[configuration.values]
light_tasking_stm32g0xx.Interrupt_Stack_Size = 1024
light_tasking_stm32g0xx.Interrupt_Secondary_Stack_Size = 128
light_tasking_stm32g4xx 15.4.0 light-tasking runtime for the STM32G4XX SoC
15.4.0
Usage
First edit your alire.toml file and add the following elements:
- Add
light_tasking_stm32g4xxin the dependency list:[[depends-on]] light_tasking_stm32g4xx = "*" - if applicable, apply any runtime configuration variables (see below).
Then edit your project file to add the following elements:
- "with" the run-time project files. With this, gprbuild will compile the run-time before your application
with "runtime_build.gpr"; with "ravenscar_build.gpr"; - Specify the
TargetandRuntimeattributes:for Target use runtime_build'Target; for Runtime ("Ada") use runtime_build'Runtime ("Ada"); - specify the
Linkerswitches:package Linker is for Switches ("Ada") use Runtime_Build.Linker_Switches; end Linker;
The runtime is configurable via Alire crate configuration variables. See the project website for full details of the available options.
By default, the runtime is configured for the STM32G474RE. If you are using
a different MCU, then you will need to configure the runtime by adding the
following to your alire.toml. For example, to configure the runtime for the
STM32G431K6:
[configuration.values]
light_tasking_stm32g4xx.MCU_Sub_Family = "G431"
light_tasking_stm32g4xx.MCU_Flash_Memory_Size = "6"
By default, the runtime configures the clock tree for a 170 MHz system clock from the high-speed internal (HSI) oscillator. If you want a different clock configuration, then use the crate configuration variables to specify the configuration you wish to use. For example, to configure the runtime to generate a 170 MHz system clock from a 24 MHz HSE crystal oscillator:
[configuration.values]
# Configure a 24 MHz HSE crystal oscillator
light_tasking_stm32g4xx.HSE_Clock_Frequency = 24000000
light_tasking_stm32g4xx.HSE_Bypass = false
# Select PLLRCLK as the SYSCLK source
light_tasking_stm32g4xx.SYSCLK_Src = "PLLRCLK"
# Configure the PLL VCO to run at 340 MHz from the 24 MHz HSE (fVCO = fHSE * (N/M))
light_tasking_stm32g4xx.PLL_Src = "HSE"
light_tasking_stm32g4xx.PLL_N_Mul = 85
light_tasking_stm32g4xx.PLL_M_Div = 6
# Configure the PLLRCLK to run at 170 MHz from the 340 MHz VCO.
light_tasking_stm32g4xx.PLL_R_Div = 2
# Configure the AHB and APB to also run at 170 MHz
light_tasking_stm32g4xx.AHB_Pre = "DIV1"
light_tasking_stm32g4xx.APB1_Pre = "DIV1"
light_tasking_stm32g4xx.APB2_Pre = "DIV1"
The runtime will generate a compile time error when an invalid PLL configuration is set.
By default the PLL's Q and P clocks are enabled. If you don't need them, then you can disable them via the crate configuration:
[configuration.values]
light_tasking_stm32g4xx.PLL_Q_Enable = false
light_tasking_stm32g4xx.PLL_P_Enable = false
The runtime will enable the PLL only when either PLL_Q_Enable or PLL_P_Enable
is true, or when SYSCLK_Src = "PLLRCLK".
The interrupt stack sizes are also configurable:
[configuration.values]
light_tasking_stm32g4xx.Interrupt_Stack_Size = 1024
light_tasking_stm32g4xx.Interrupt_Secondary_Stack_Size = 128
light_weact_stm32g474 0.1.0 WeAct STM32G474 BSP for `light` GNAT Runtime
0.1.0
lined 20240419 Ada Implementation of the Line Editor from Software Tools
20240419
Lined
Ada Implementation of the Line Editor from Software Tools
I did this to see how it would compare with the Ratfor original, and provide it here for anyone with a similar interest. I can't imagine anyone actually using this, unless they wanted a scriptable tool with the alternative regular-expression syntax it uses, since it's a simplified version of ed.
linenoise_ada 1.1.2 Bindings to the Linenoise line editing library
1.1.2
linux_hal 1.2.0 HAL drivers for Linux userspace
1.2.0
lispcli 0.1.1 Simple program for exploring tiny lisp
0.1.1
This is a simple example of embedding Lisp to provide a REPL where you can try various Lisp functions. It can also be modified to test out Lisp extensions.
list_image 1.0.0 helper to dump iterable containers with customizable style
1.0.0
littlefs 1.0.0 Ada/SPARK binding for the LittleFS flash embedded filesystem
1.0.0
lmdb_ada 1.2.0 Bindings to the Lightning Memory-Mapped Database
1.2.0
lml 0.1.0 Lightweight Markup Language conversions
0.1.0
loadcpm 0.2.1 Write CP/M (or other similar binary) to floppy disk image
0.2.1
Three basic functions are available. First, a CP/M image in Intel Hex format can be added to the first two track of an existing floppy disk image. Second, a floppy disk image can be created and initialized with the CP/M image on the first two tracks. Finally, a small bootstrap program can be created to load CP/M from the disk image into the simulator.
loga 1.0.0 Simple library for simple logging. Like npm package "debug", but for Ada
1.0.0
lsystem_editor 1.0.0 L-Systems editor in Ada
1.0.0
L-System Editor
A comprehensive graphical and command-line editor for creating, manipulating, and visualizing Lindenmayer systems (L-systems).
This project was initially developed as part of a university project.
What are L-Systems?
L-systems (Lindenmayer systems) are a type of formal grammar introduced by biologist Aristid Lindenmayer in 1968. They are particularly useful for modeling plant growth and generating fractals. An L-system consists of:
- An alphabet of symbols that can be used to make strings
- An axiom (initial string) to start with
- A set of production rules that expand each symbol into a larger string of symbols
Through recursive application of these rules, complex structures can be generated from simple initial conditions.
Features
- Interactive GUI for creating and editing L-systems
- Command-line interface for batch processing and automated workflows
- Real-time visualization of the L-system at different development levels
- Export capabilities to PS (PostScript) format for now
- Customizable rendering with adjustable parameters (colors, margins, dimensions)
- Save and load L-system definitions using
.lsfiles
Installation
Using Alire (recommended)
alr install lsystem_editor
From Source
- Ensure you have Ada and GtkAda installed. This project depends on GNAT Lib.
- Clone the repository:
git clone https://github.com/Heziode/lsystem-editor.git - Build with Alire:
alr buildor manually withmake
Usage
GUI Mode
Launch the graphical interface:
./bin/lsystem_editor
# Or
alr run
The GUI offers:
- A text editor area for defining L-system rules
- Controls to adjust the development level
- Real-time visualization of the L-system
- Export options
- Customization of colors and rendering parameters
Command-Line Mode
For automated processing or batch operations:
lsystem_editor --no-gui [OPTIONS]
Command-Line Options
| Option | Long Form | Description |
|---|---|---|
-i |
--input=FILE |
Input file containing an L-system definition |
-o |
--output=FILE |
Output file to store an L-system definition |
-e |
--export=FORMAT |
Export format for the L-system representation |
-p |
--export-file=FILE |
Output file for the exported representation |
-d |
--develop=N |
Number of development steps to apply |
-w |
--width=N |
Width of the output representation |
-h |
--height=N |
Height of the output representation |
-b |
--background-color=COLOR |
Background color in hex format (e.g., #AABBCC) |
-f |
--foreground-color=COLOR |
Foreground color in hex format (e.g., #AABBCC) |
-mt |
--margin-top=N |
Top margin for rendering |
-mr |
--margin-right=N |
Right margin for rendering |
-mb |
--margin-bottom=N |
Bottom margin for rendering |
-ml |
--margin-left=N |
Left margin for rendering |
L-System File Format
L-system definitions are stored in .ls files with the following syntax:
<angle> [angle in degrees]
<axiom> [initial string]
<rules>
[symbol] [replacement string]
[symbol] [replacement string]
...
</rules>
Example L-System: Koch Curve
60.0
-F++F++F
F F-F++F-F
Where:
Fmeans "draw forward"+means "turn left by angle"-means "turn right by angle"
Controls in GUI Mode
- Text Editor: Define and edit your L-system
- Validate Button: Check if your L-system definition is valid
- Level Spinner: Adjust the development level
- Color Controls: Change foreground and background colors
- Export Options: Save visualizations
License
L-System Editor is distributed under the MIT License.
Copyright (c) 2018 Quentin Dauprat (Heziode)
See the LICENSE file for full details.
ltp_305 1.1.0 Driver for Pimoroni LED
1.1.0
lvgl_ada 1.0.0 Bindings for the LVGL embedded GUI framework
1.0.0
lvgl_ada_examples 0.1.0 Examples for the LVGL embedded GUI framework Ada binding
0.1.0
lvgl_ada_simulator 1.0.0 Native simulator of an LVGL display
1.0.0
lwt 1.2.0 Light-weight Threading Library implementing Ada 2022 parallel features
1.2.0
lzmada 1.1.5 Ada LZMA Library Binding
1.1.5
A very thin Ada binding for the LZMA compression library. Roughly speaking, import some package:
with Lzma.Base;
with Lzma.Container;
with Lzma.Check;
Then declare the LZMA stream:
Stream : aliased Lzma.Base.lzma_stream := Lzma.Base.LZMA_STREAM_INIT;
Initialize the LZMA stream as decoder (or as encoder):
Result := Lzma.Container.lzma_stream_decoder (Stream'Unchecked_Access,
Long_Long_Integer'Last,
Lzma.Container.LZMA_CONCATENATED);
Setup the stream 'next_out', 'avail_out', 'next_in' and 'avail_in' and call the lzma_code operation with the action (Lzma.Base.LZMA_RUN or Lzma.Base.LZMA_FINISH):
Result := Lzma.Base.lzma_code (Stream'Unchecked_Access, Action);
Close the LZMA stream:
Lzma.Base.lzma_end (Stream'Unchecked_Access);
m4_tool system macro processor
system
mage 0.6.1 Mini Ada Game Engine - A very simple game engine written in Ada
0.6.1
mage_hat 0.3.0 A hat that jumps around and behaves magically
0.3.0
magicada 1.0.1 Magic Number Recognition Library Ada binding
1.0.1
Small Ada binding library to the libmagic (3) library which is used by the implementation of the file (1) command.
To simplify and help in the use of the magic Ada library, the
Magic.Manager package encapsulates the management of the libmagic library
and provides high level simple operations to hide the details of interacting
with the C library. The package defines the Magic_Manager tagged record
that takes care of the C library interaction and cleaning of the libmagic
library once the manager is no longer required. To use it, declare the
instance and initialize it with the Initialize procedure:
with Magic.Manager;
...
Mgr : Magic.Manager.Magic_Manager;
...
Mgr.Initialize (Magic.MAGIC_MIME, Magic.DEFAULT_PATH);
The first parameter defines a set of flags represented by the Magic.Flags
type to control various options of the libmagic library. The second
parameter indicates the default path to the magic file
(see magic (5)).
Once configured, the Identify functions can be used to identify a content.
For the first form, a path of the file is given:
Mime : constant String := Mgr.Identify ("file.ads");
With the second form, a Stream_Element_Array with the content to identify
is given to the function.
Example
make system Utility for directing compilation
system
mandelbrot_ascii 1.0.0 Mandelbrot renderer using Unicode glyphs
1.0.0
markdown 26.0.0 Markdown parser
26.0.0
mathpaqs 20260205.0.0 A collection of mathematical, 100% portable, packages
20260205.0.0

Various mathematical packages including algebra, finite elements, random variables, probability dependency models, unlimited integers.
Key features of the Mathpaqs library:
- Standalone
- Pure Ada
- Unconditionally portable (*)
- Tests and demos included
- Free, Open-Source
Some demos, graphical demos and test programs are included.
(*) within limits of compiler's provided integer types and target architecture capacity.
matreshka_amf 21.0.0 Implementation of OMG's Meta Object Facility (MOF)
21.0.0
matreshka_amf_dd 21.0.0 Diagram Definition (DD) specification support for AMF
21.0.0
matreshka_amf_mofext 21.0.0 The UML mofext for AMF
21.0.0
matreshka_amf_ocl 21.0.0 The UML OCL for AMF
21.0.0
matreshka_amf_uml 21.0.0 Unified Modeling Language support for AMF
21.0.0
matreshka_amf_utp 21.0.0 The UML Testing Profile for AMF
21.0.0
matreshka_fastcgi 21.0.0 FastCGI implementation (demo)
21.0.0
matreshka_league 21.0.0 League - universal string library. Part of Matreshka framework
21.0.0
matreshka_servlet 21.0.0 Servlet API
21.0.0
matreshka_soap 21.0.0 Framework for work with SOAP 1.2
21.0.0
matreshka_soap_wsse 21.0.0 WS-Security 1.1 implementation for SOAP 1.2
21.0.0
matreshka_spikedog_api 21.0.0 Web-application server. API library
21.0.0
matreshka_spikedog_awsd 21.0.0 Web-application server. API library
21.0.0
matreshka_spikedog_core 21.0.0 Web-application server. Implementation library
21.0.0
matreshka_sql 21.0.0 Common SQL Database API
21.0.0
matreshka_sql_firebird 21.0.0 Firebird SQL binding for Ada
21.0.0
matreshka_sql_mysql 21.0.0 MySQL binding for Ada
21.0.0
matreshka_sql_oracle 21.0.0 Oracle DB binding for Ada
21.0.0
matreshka_sql_postgresql 21.0.0 PostgreSQL binding for Ada
21.0.0
matreshka_sql_sqlite3 21.0.0 SQLite binding for Ada
21.0.0
matreshka_xml 21.0.0 Library to manipulate with XML streams and documents
21.0.0
mavlink_ardupilotmega 2.0.0 MAVLink, ardupilotmega dialect
2.0.0
mavlink_ardupilotmega_v2 1.0.0 MAVLink, ardupilotmega dialect
1.0.0
mavlink_common 2.0.0 MAVLink -- Micro Air Vehicle Message Marshalling Library.
2.0.0
mavlink_common_v2 1.0.0 MAVLink v2-- Micro Air Vehicle Message Marshalling Library.
1.0.0
mavlink_shared 1.0.0 MAVLink -- Micro Air Vehicle Message Marshalling Library (shared code).
1.0.0
mcp2221 2.22792.1 MCP2221 USB Raw HID I/O Expander Library for GNAT Ada
2.22792.1
This crate contains a subset of the Linux Simple I/O Library Ada packages that are relevant for building programs for the MCP2221 USB Raw HID I/O expander.
This crate can be built for Linux, MacOS, or Windows targets.
The MCP2221A is a
PIC16F1455
microcontroller that has been preprogrammed with firmware to implement
two USB devices: a USB serial port and a raw HID device that acts as
an I/O expander providing one I2C bus controller
(master only) and four
GPIO pins
(GP0, GP1, GP2, and GP3).
The GPIO pins GP1, GP2, and GP3 can be configured for
some alternate functions, including 10-bit A/D inputs or 5-bit D/A
outputs:
GP1 : GPIO ADC1
GP2 : GPIO ADC2 DAC1
GP3 : GPIO ADC3 DAC2
The MCP2221A replaces an earlier part, the MCP2221. The only difference between the older MCP2221 and the newer MCP2221A is that the latter supports some higher baud rates on the USB serial port device. Since this crate only deals with the raw HID I/O expander functions, it will work fine with either the older MCP2221 or the newer MCP2221A.
mcp9808_i2c 1.0.0 MCP9808 I2C library
1.0.0
mdshow 1.0.0 Markdown show on terminal
1.0.0
mdshow is a small command line utility to format and display a markdown file on the terminal.
The viewer supports several format including Markdown, MediaWiki, Creole, Dotclear and Textile.
It can display images in terminals that implement the Kitty Graphics Protocol (kitty, konsole)
or fallbacks to using unicode character blocks for images when Kitty Graphics Protocol is not supported.
meadowsweet 0.1.0 Simple Ada MVC web framework
0.1.0
meadowsweet_jintp 0.1.0 JinTP template renderer for Meadowsweet
0.1.0
metaphone 1.0.0 The Double Metaphone algorithm based off the Python version
1.0.0
microbit_bsp 0.2.1 Board Support Package for the BBC micro:bit v1
0.2.1
microbit BSP
Board Support Package for the BBC micro:bit https://microbit.org/
This crate is a snapshot of Ada Drivers Library.
Any bug report, issue, contribution must be adressed to the Ada Drivers Library repo.
microbit_examples 0.1.0 Examples and tutorials for Ada on the BBC micro:bit
0.1.0
microbit_examples
This crate is a snapshot of the micro:bit examples in Ada Drivers Library.
Any bug report, issue, contribution must be adressed to the Ada Drivers Library repo.
The Micro:Bit is a very small ARM Cortex-M0 board designed by the BBC for computer education. It's fitted with a Nordic nRF51 Bluetooth enabled microcontroller and an embedded programmer. You can get it at:
How to setup the Ada development environment for the Micro:Bit
GNAT Community now comes with micro:bit and pyOCD support built-in. So you only need to download the ARM ELF and the native package from here
pyOCD programmer
The Micro:Bit comes with an embedded programming/debugging probe implementing the CMSIS-DAP protocol defined by ARM.
To use it on Linux, you might need privileges to access the USB ports without which the flash program will say "No connected boards".
On Ubuntu, you can do it by creating (as administrator) the file /etc/udev/rules.d/mbed.rules and add the line:
SUBSYSTEM=="usb", ATTR{idVendor}=="0d28", ATTR{idProduct}=="0204", MODE="0666"
then restarting the service by doing
$ sudo udevadm trigger
Open one of example projects and build it
Start GNAT Programming studio (GPS) with Alire and one micro:bit example project:
alr edit analog_in/analog_in.gpralr edit follower/follower.gpralr edit digital_in/digital_in.gpralr edit accelerometer/accelerometer.gpralr edit buttons/buttons.gpralr edit BLE_beacon/BLE_beacon.gpralr edit digital_out/digital_out.gpralr edit servos/servos.gpralr edit neopixel/neopixel.gpralr edit text_scrolling/text_scrolling.gpralr edit analog_out/analog_out.gpralr edit music/music.gpr
Press F4 and then press Enter to build the project.
Program the board
Plug your micro:bit board with a USB cable, and wait for the system to recognize it. This can take a few seconds
In the GPS toolbar, click on the "flash to board" button to program the micro:bit.
After a few seconds, you should see a text scrolling on the LED matrix.
That's it, you are ready to hack the micro:bit with Ada!
midi 1.0.0 Library to encode and decode MIDI messages
1.0.0
mine_detector 20220720 The Gnoga/Ada-GUI version of Mine Detector
20220720
Mine_Detector
The Ada-GUI (https://github.com/jrcarter/Ada_GUI) version of Mine Detector, an intellectually-challenging game
minimal_containers 1.2.1 Much reduced version of Ada.Containers (bounded Maps, Vectors)
1.2.1
The motivation for these containers was use in ColdFrame, an open-source code generator backend for use with UML tools in a restricted environment (a BBC micro:bit).
In such an environment, it's normal to strip out unused code and data at link time (-gc-sections with GNU ld, -dead_strip with Apple ld).
Unfortunately, it turns out that no primitive subprograms of tagged types can be stripped (they are all referenced by the dispatch table).
These containers are still tagged, because (without compiler extensions) ColdFrame expects to use prefixed notation (object.primitive subprogram (...), as would users). However, the number of subprograms has been much reduced.
minirest 0.2 Minimalist Ada REST client library
0.2
minisamd51_bsp 0.1.0 Board Support Package for the MiniSAM D51
0.1.0
minisamd51_example 0.1.1 Example project for the MiniSAM D51
0.1.1
ml_dsa 1.0.0 SPARK-proved ML-DSA (FIPS 204) lattice-based digital signatures
1.0.0
SPARK-proved ML-DSA (Module-Lattice-Based Digital Signature Algorithm) implementing NIST FIPS 204. Verifies signing and verification under the Module Learning With Errors (M-LWE) assumption.
All three FIPS 204 parameter sets -- ML-DSA-44, ML-DSA-65, ML-DSA-87
-- are supported and selected at build time via the parameter_set
crate configuration variable; default is ML-DSA-65 (NIST Category III).
The 8-layer Cooley-Tukey NTT, Montgomery reduction, Power2Round / Decompose / MakeHint / UseHint rounding primitives, and bounded rejection-sampling loops for signing are all SPARK-checked. The signing rejection loop is bounded (Max_Retries = 1000) for proof termination; rejection probability per attempt is empirically ~2-4%, so the bound is reached only with negligible probability.
Built on sha3_ada for SHA-3/SHAKE. No heap allocation, pragma Pure, suitable for embedded and safety-critical systems. FIPS 140-3 validation is out of scope.
ml_kem 1.0.0 SPARK-proved ML-KEM (FIPS 203) lattice-based key encapsulation
1.0.0
SPARK-proved ML-KEM (Module-Lattice-Based Key-Encapsulation Mechanism) implementing NIST FIPS 203. Formally verified at SPARK level 2 with zero pragma Assume, zero unproved VCs. The 7-layer Cooley-Tukey NTT, BaseMul, IndCPA, and FO transform are all proved end-to-end with no escape hatches.
All three FIPS 203 parameter sets -- ML-KEM-512, ML-KEM-768, ML-KEM-1024
-- are supported and selected at build time via the parameter_set
crate configuration variable; default is ML-KEM-768 (NIST Category III).
Proof techniques are documented in PROOF_NOTES.md and reusable for similar lattice / ARX cryptography.
Built on sha3_ada for SHA-3/SHAKE. No heap allocation, pragma Pure, suitable for embedded and safety-critical systems. Constant-time execution empirically verified via cachegrind (LLd byte-identical). FIPS 140-3 validation is out of scope. See SECURITY.md for the full threat model.
mold 1.1.0 Meta-variable Operations for Lean Development (cli)
1.1.0
Welcome to Mold (cli)
MOLD: Meta-variable Operations for Lean Development
Mold is a Template Processor, or Template Engine, to work with repository templates. The main motivation of Mold is to have repositories in GitHub used as template repositories to create new, customized repositories for other users.
Main features supported in Mold include
-
variable replacement in mold files (*.mold)
-
for a given directory, variable replacement recursively for all mold files in all subdirectories
-
variable replacement in file names
-
inclusion of other templates
-
definition of variables with a simple TOML file
-
predefined and custom text filters to easy text transformations
-
predefined variables to use in templates
-
support for optional and mandatory variables
-
support for custom filter and variables
Variable replacement can be specified as normal, optional or mandatory.
For example, the variable foo = "bar" can be specified with {{foo}},
{{?foo}} (optional) or {{#foo}} (mandatory). The difference is the handling
of errors when an undefined variable is encountered.
All mold files must end with the extension .mold, for example
README.md.mold. Destination files (with variables replaced) have the same
name without the mold extension: README.md. This simplifies the work done in
large subdirectories with few templates.
This crate contains the Ada library and unit tests. For a CLI tool, please
take a look at the crate mold.
Reference Guide
Please visit Mold documentation for more information.
License
MIT (c) 2023-2025 Francesc Rocher
mold_lib 2.3.1 Meta-variable Operations for Lean Development (lib)
2.3.1
Welcome to Mold (lib)
MOLD: Meta-variable Operations for Lean Development
Mold is a Template Processor, or Template Engine, to work with repository templates. The main motivation of Mold is to have repositories in GitHub used as template repositories to create new, customized repositories for other users.
Main features supported in Mold include
-
variable replacement in mold files (*.mold)
-
for a given directory, variable replacement recursively for all mold files in all subdirectories
-
variable replacement in file names
-
inclusion of other templates
-
definition of variables with a simple TOML file
-
predefined and custom text filters to easy text transformations
-
predefined variables to use in templates
-
support for optional and mandatory variables
-
support for custom filters and variables
Variable replacement can be specified as normal, optional or mandatory.
For example, the variable foo = "bar" can be specified with {{foo}},
{{?foo}} (optional) or {{#foo}} (mandatory). The difference is the handling
of errors when an undefined variable is encountered.
All mold files must end with the extension .mold, for example
README.md.mold. Destination files (with variables replaced) have the same
name without the mold extension: README.md. This simplifies the work done in
large subdirectories with few templates.
This crate contains the Ada library and unit tests. For a CLI tool, please
take a look at the crate mold.
Reference Guide
Please visit Mold documentation for more information.
License
MIT (c) 2023-2025 Francesc Rocher
mos6502_create_led 1.5.2 Create ROM with little program
1.5.2
This is a tool to create a rom image with little program.
This program can be used to create a ROM immage for the MOS 6502 tutorial from Ben Eater.
Development versions available with:
alr index --add "git+https://github.com/krischik/alire-index.git#develop" --name krischik
Source code and testsuite available on SourceForge
mos6502_create_nop 1.5.2 Create NOP ROM
1.5.2
This is a tool to create a rom image with NOP commands.
This program can be used to create a ROM immage for the MOS 6502 tutorial from Ben Eater.
Development versions available with:
alr index --add "git+https://github.com/krischik/alire-index.git#develop" --name krischik
Source code and testsuite available on SourceForge
mos6502_create_reset 1.5.2 Create ROM with reset vector
1.5.2
This is a tool to create a rom image with reset vector.
This program can be used to create a ROM immage for the MOS 6502 tutorial from Ben Eater.
Development versions available with:
alr index --add "git+https://github.com/krischik/alire-index.git#develop" --name krischik
Source code and testsuite available on SourceForge
mqttlib 0.2.0 Ada binding to the mosquitto library for MQTT
0.2.0
msg_pack 0.1.0 Ada implementation of MessagePack serialization
0.1.0
msys2_runtime system POSIX emulation library for Windows
system
munts_rp2040_firmware_embedded 2.24840.1 Phil's RP2040 Microcontroller Embedded Profile Firmware Template
2.24840.1
Introduction
This crate provides a comprehensive template for developing Ada firmware
for the RP2040 ARM 32-bit
microcontroller, using the
GNAT Predefined Embedded
Runtime
implemented by the
embedded_rp2040
and rp2040_hal crates
and their dependencies.
Ada firmware for a microcontroller is realized as a main program
procedure that is called by otherwise invisible runtime startup code,
exactly as C firmware is realized by a function main() that is called
by otherwise invisible runtime startup code.
Post-Build Script
An Alire project directory created by
alr get munts_rp2040_firmware_embedded will include a post-build
script named postbuild.sh. This script will install the newly built
firmware to a mounted RP2040 ROM boot USB file system. The RP2040 ROM
boot code implements USB mass storage emulation, in a fashion first
popularized by the late and lamented Mbed
OS. To flash RP2040 firmware, you just
assert BOOTSEL and RESET hardware signals to force the RP2040 into
ROM boot mode, mount the USB mass storage device (usually done
automatically by the development machine operating system), and then
copy a UF2 firmware image file it.
postbuild.sh uses the elf2uf2
utility program to copy the firmware image to the RP2040.
You can explicitly specify the RP2040 mount point aka destination
directory with the RP2040_DESTDIR environment variable before running
alr build. Otherwise postbuild.sh will search for the RP2040 mount
point at expected locations for ChromeOS, Linux, macOS, and Microsoft
Windows.
If an RP2040 mount point cannot be found, postbuild.sh does nothing.
Makefile
An Alire project directory created by
alr get munts_rp2040_firmware_embedded will include an optional but
useful GNU Makefile (also available at
https://github.com/pmunts/alire-goodies) containing the following
goals or targets:
build-- Accomplished by the commandgmake build. Runsalr buildto build the firmware image. Result (upon success) is a 32-bit ARM ELF executable file in thebin/subdirectory.clean-- Accomplished by the commandgmake clean. Removes all generated working files. What is left will be suitable for checking into a source control system.distclean-- Accomplished by the commandgmake distclean. Removes all generated working files and removes Alire's crate download and build caches.
Note: make is often a synonym (symbolic link, shell alias, etc.) for
gmake on Linux machines, meaning that make build behaves exactly the
same as gmake build.
Visual Studio Code
An Alire project directory created by
alr get munts_rp2040_firmware_embedded will include an optional but
useful .vscode/tasks.json (also available at
https://github.com/pmunts/alire-goodies) which provides some build
tasks for Visual Studio Code.
You can invoke a Visual Studio build task from the application menu
Terminal => Run Task... or Terminal => Run Build Task...
The most straightforward way to build and install RP2040 firmware from
within Visual Studio Code is to simply press CONTROL + SHIFT + B.
This key code invokes the default build task which executes the command
make clean build which executes the command alr build which executes
script postbuild.sh.
Examples
Command line
alr -n get munts_rp2040_firmware_embedded
alire-rename munts_rp2040_firmware_embedded_2.24820.1_45796fc8 myfirmware # optional
cd myfirmware
alr -n with munts_rp2040_lib_embedded # optional
alr build
Visual Studio Code
alr -n get munts_rp2040_firmware_embedded
alire-rename munts_rp2040_firmware_embedded_2.24820.1_45796fc8 myfirmware # optional
cd myfirmware
alr -n with munts_rp2040_lib_embedded # optional
code .
Note: The Alire project rename script alire-rename is available at
https://github.com/pmunts/alire-goodies.
munts_rp2040_lib_embedded 2.24820.1 Phil's RP2040 Microcontroller Embedded Profile Library
2.24820.1
muntsos_aarch64 11.0.1 MuntsOS Embedded Linux support for AArch64 targets
11.0.1
Introduction
This crate modifies an Alire program project to build a cross-compiled program for a MuntsOS Embedded Linux AArch64 / ARMv8 / arm64 target computer.
The MuntsOS Embedded Linux cross toolchain packages must be installed on your development computer before you can use this crate. See:
Application Note
#1 for
Debian Linux distributions
Application Note
#2 for RPM
Linux distributions
Application Note
#24 for
x86-64 Windows 10 or 11.
Environment Variables
If ALIRE_DISABLESTYLECHECKS is set to yes, the postfetch
script will disable style checking in the project .gpr file.
If ALIRE_INSTALLMAKEFILE is set to yes, the postfetch script
will install an optional but useful Makefile to the project
directory.
You can add the following to ~/.bashrc or its equivalent to
permanently define these environment variables:
export ALIRE_DISABLESTYLECHECKS=yes
export ALIRE_INSTALLMAKEFILE=yes
Example
The following commands illustrate how to create an Alire program project that will cross-compile a program to run on a MuntsOS Embedded Linux target computer. The result is a pristine (i.e. all temporary, working and deliverable files removed) project, suitable for checking into a source code control repository.
alr -n init --bin myexample
cd myexample
alr -n with muntsos_aarch64
ALIRE_DISABLESTYLECHECKS=yes ALIRE_INSTALLMAKEFILE=yes alr action -r post-fetch
make reallyclean
See also Application Note #7.
muntsos_beaglebone 9.1.0 MuntsOS Embedded Linux support for BeagleBone targets
9.1.0
muntsos_dev_aarch64 system MuntsOS Embedded Linux AArch64 cross-toolchain metapackage
system
muntsos_dev_beaglebone system MuntsOS Embedded Linux BeagleBone ARMv7 cross-toolchain metapackage
system
muntsos_dev_raspberrypi1 system MuntsOS Embedded Linux RaspberryPi1 ARMv6 cross-toolchain metapackage
system
muntsos_dev_raspberrypi2 system MuntsOS Embedded Linux RaspberryPi2 ARMv7 cross-toolchain metapackage
system
muntsos_raspberrypi1 11.0.1 MuntsOS Embedded Linux support for ARMv6 Raspberry Pi 1 targets
11.0.1
Introduction
This crate modifies an Alire program project to build a cross-compiled program for a MuntsOS Embedded Linux ARMv6 Raspberry Pi 1 target computer.
The MuntsOS Embedded Linux cross toolchain packages must be installed on your development computer before you can use this crate. See:
Application Note
#1 for
Debian Linux distributions
Application Note
#2 for RPM
Linux distributions
Application Note
#24 for
x86-64 Windows 10 or 11.
Environment Variables
If ALIRE_DISABLESTYLECHECKS is set to yes, the postfetch
script will disable style checking in the project .gpr file.
If ALIRE_INSTALLMAKEFILE is set to yes, the postfetch script
will install an optional but useful Makefile to the project
directory.
You can add the following to ~/.bashrc or its equivalent to
permanently define these environment variables:
export ALIRE_DISABLESTYLECHECKS=yes
export ALIRE_INSTALLMAKEFILE=yes
Example
The following commands illustrate how to create an Alire program project that will cross-compile a program to run on a MuntsOS Embedded Linux target computer. The result is a pristine (i.e. all temporary, working and deliverable files removed) project, suitable for checking into a source code control repository.
alr -n init --bin myexample
cd myexample
alr -n with muntsos_raspberrypi1
ALIRE_DISABLESTYLECHECKS=yes ALIRE_INSTALLMAKEFILE=yes alr action -r post-fetch
make reallyclean
See also Application Note #7.
muntsos_raspberrypi2 9.1.0 MuntsOS Embedded Linux support for RaspberryPi2 targets
9.1.0
muntsos_raspberrypi3 9.1.0 MuntsOS Embedded Linux support for RaspberryPi3 targets
9.1.0
muntsos_raspberrypi4 9.1.0 MuntsOS Embedded Linux support for RaspberryPi4 targets
9.1.0
muntsos_raspberrypi5 9.1.0 MuntsOS Embedded Linux support for RaspberryPi5 targets
9.1.0
musicplayer 20210719 A Music Player
20210719
MP
A Music Player
Uses the Gnoga audio widget to create a music player.
This does what I want from a music player. Considering all the features that most music players have that this doesn't, I presume that most people will find MP lacking. However, it may serve someone as the basis for a more complex player.
The audio widget seems to require relative paths to the audio files. The file browser in this program will only choose audio files that are in the program's working directory, or in a directory under that.
MP uses the Gnoga File Selection widget, which has only been tested on Linux.
MP uses the PragmAda Reusable Components.
ncursesada 6.5.0 Ada binding to the ncurses text user interface library
6.5.0
nmea_0183 0.1.0 NMEA 0183 message decoder
0.1.0
noise_nugget_sdk 2.1.0 Ada Software Development Kit for the Noise Nugget
2.1.0
nrf5x_hal 0.1.0 Drivers and HAL for the Nordic nRF5X micro-controller family
0.1.0
nstd 0.3.0 Non-Standard Libraries
0.3.0
ocarina_lib 1.1.0-20070603 Ocarina is a stand-alone AADL model processor, written in Ada.
1.1.0-20070603
This is an old snapshot used in Cheddar!
octet_memory_stream 1.1.0 Provides a Root_Stream_Type wrapper over an array of octets in memory.
1.1.0
octet_memory_stream provides a standalone Ada.Streams.Root_Stream_Type
wrapper around an Octet_Array (array of 8-bit bytes,) primarily for the
purpose of protecting an over-arching stream from misalignment while reading
from, or writing to, e.g., a file format.
If the Memory_Stream detects an out-of-bounds error as the result of a read
or write operation, an Out_Of_Bounds_Error exception will be raised.
Example Use
All pertinent types and subprograms are available within the package
Octet_Memory_Stream. Wrapping an Octet_Array is done through the
To_Stream function.
pragma Ada_2022;
with Ada.Text_IO;
with Ada.Streams.Stream_IO;
use Ada.Streams.Stream_IO;
with Octet_Memory_Stream;
procedure TestDemo is
F : File_Type;
Protected_Stream : Stream_Access;
Memory_Stream : Octet_Memory_Stream.Stream_Access;
begin
Open (F, In_File, "example");
Protected_Stream := Stream (F);
declare
Data : Octet_Memory_Stream.Octet_Array (1 .. 50);
begin
Octet_Memory_Stream.Octet_Array'Read (Protected_Stream, Data);
Memory_Stream := Octet_Memory_Stream.To_Stream (Data);
end;
declare
OK_Data : Octet_Memory_Stream.Octet_Array (1 .. 25);
OOB_Data : Octet_Memory_Stream.Octet_Array (1 .. 26);
begin
Octet_Memory_Stream.Octet_Array'Read (Memory_Stream, OK_Data);
Ada.Text_IO.Put_Line (OK_Data'Image);
Octet_Memory_Stream.Octet_Array'Read (Memory_Stream, OOB_Data);
-- exception raised above
Ada.Text_IO.Put_Line (OOB_Data'Image);
end;
Close (F);
end TestDemo;
oherr 0.1.0 A Rust-style Result type for Ada (oh, error!).
0.1.0
openai 1.0.0 OpenAI client library
1.0.0
Ada OpenAI provides an Ada API to make requests on the OpenAI models allowing an Ada application to access the GPT-3, GPT-4, DALL.E and other AI models.
The library was generated by the OpenAPI code generator from the OpenAPI description of the OpenAI service and it uses the OpenAPI Ada library to make HTTP requests and perform JSON serialization and deserialization.
Alire setup
alr with openai
For the HTTP connection, you can either use AWS or CURL and run one of the following commands:
alr with utilada_curl
alr with utilada_aws
Links
- OpenAI API reference
- Ada example: OpenAI Image Generation
- Ada example: OpenAI Chat
- Ada example: OpenAI Completion
openapi 0.9.0 OpenAPI library to build REST client applications
0.9.0
OpenAPI Generator is a code generator that supports generation of API client libraries, server stubs and documentation automatically given an OpenAPI Spec.
The Ada client support has been integrated in OpenAPI Generator.
The OpenAPI Ada library is a small support library for the Ada code generator provided by OpenAPI Generator. The library provides support to serialize the data, make HTTP requests and support the OpenAPI Spec specific operations or types.
Alire setup
alr with openapi
For the HTTP connection, you can either use AWS or CURL and run one of the following commands:
alr with utilada_curl
alr with utilada_aws
Generation
Example of client generation with OpenAPI file my-api.yaml and use of CURL support:
alr exec -- openapi-generate-client -i my-api.yaml --additional-properties projectName=MyProject --additional-properties openApiName=OpenAPI --additional-properties httpSupport=Curl --model-package MyProject.MyModule -o .
openapi_server 0.9.0 OpenAPI library to build REST server applications
0.9.0
OpenAPI Generator is a code generator that supports generation of API client libraries, server stubs and documentation automatically given an OpenAPI Spec.
The Ada server support has been integrated in OpenAPI Generator.
The OpenAPI Ada library is a small support library for the Ada code generator provided by OpenAPI Generator. The library provides support to serialize the data, make HTTP requests and support the OpenAPI Spec. specific operations or types.
Alire setup
alr with openapi_server
For the server part, you must choose a servlet web container that will handle the requests. Two web server implementations are provided:
and you should run one of the following alr command depending on your choice:
alr with servletada_aws
alr with servletada_ews
Generation
Example of server generation with OpenAPI file my-api.yaml and use of CURL support:
alr exec -- openapi-generate-server -i my-api.yaml --additional-properties projectName=MyProject --additional-properties openApiName=OpenAPI --additional-properties httpSupport=Curl --model-package MyProject.MyModule -o .
openglada 0.9.0 Thick Ada binding for OpenGL
0.9.0
openglada_glfw 0.9.0 GLFW binding for use with OpenGLAda
0.9.0
openglada_images 0.9.0 Image loading library for OpenGLAda
0.9.0
openglada_text 0.9.0 Text rendering library for OpenGLAda
0.9.0
openssl system The Open Source toolkit for SSL and TLS
system
opentoken 6.0.3 facility for performing token analysis and parsing within Ada
6.0.3
optional 0.2.0 Optional values a la java.lang.Optional
0.2.0
orka 1.0.0 OpenGL 4.6 rendering kernel written in Ada 2012
1.0.0
orka_awt 1.0.0 Ada Window Toolkit
1.0.0
orka_egl 1.0.0 Ada 2012 bindings for EGL
1.0.0
orka_numerics 1.0.0 Tensors (multidimensional arrays) and integrators
1.0.0
orka_opengl 1.0.0 OpenGL 4.6 backend for the Orka rendering engine
1.0.0
orka_plugin_archives 1.0.0 Orka plug-in to load resources from Zip archives
1.0.0
orka_plugin_atmosphere 1.0.0 Orka plug-in for precomputed atmospheric scattering
1.0.0
orka_plugin_gltf 1.0.0 Orka plug-in for loading glTF models
1.0.0
orka_plugin_terrain 1.0.0 Orka plug-in for adaptive tessellated flattened spheroids
1.0.0
orka_simd 1.0.0 Bindings for x86 SIMD extensions like SSE, AVX2, FMA, F16C
1.0.0
orka_tensors_cpu 1.0.0 Tensors using SIMD instructions on the CPU
1.0.0
orka_tensors_gpu 1.0.0 Tensors using compute shaders on the GPU
1.0.0
orka_tools 1.0.0 Tools for the Orka rendering kernel
1.0.0
orka_transforms 1.0.0 Library to transform vectors, matrices, and quaternions using SIMD
1.0.0
orka_types 1.0.0 Data types for Orka
1.0.0
p256_ada 0.1.0 NIST P-256 / ECDSA (ES256) library for Ada with SPARK flow analysis
0.1.0
NIST P-256 (secp256r1) / ECDSA (ES256) for Ada 2022 with SPARK flow
analysis. Constant-time field, scalar, and point arithmetic; Jacobian
coordinates with a 4-bit fixed-window scalar multiply; deterministic
nonces per RFC 6979; low-S signature normalisation. Stack-resident
secrets are wiped at function exit. Suitable for embedded and
safety-critical systems. Tests and SPARK proofs live in the nested
prove/ crate; from the repo root:
cd prove && alr exec -- gnatprove -P ../p256_ada.gpr -j0 --mode=flow
pager2 2.0.1 Manipulate "paged files" found on the Ada Software Repository
2.0.1
parallelize 1.0.0 Execute multiple commands in parallel
1.0.0
parse_args 0.9.0 An Ada 2012 package to parse command line arguments and options
0.9.0
partord 1.0.0 Small library for sorting with partial orders
1.0.0
This is a generic library that exports a sorting function that can operate with partial ordering, that is, it can happen that for some A /= B neither A < B nor A > B hold.
password_gen 20220720 A password generator using Ada-GUI/Gnoga
20220720
Password_Gen
A password generator using Ada_GUI (https://github.com/jrcarter/Ada_GUI)
pbkdf2 3.0.0 PBKDF2 implemented in Ada
3.0.0
phcpack 2.4.88 Polynomial Homotopy Continuation
2.4.88
PHCpack is research software to solve systems of polynomial equations with homotopy continuation.
pico_ada_c01_blink 1.8.0 Chapter 1: Blinking LEDs - Getting Started on the Raspberry Pi Pico
1.8.0
My first steps into Ada programming on the Pico: from Jeremy Grosser's classic blink example through explicit pin control to using an external LED, plus thoughts on the elegant (but still experimental) Ravenscar profile.
Starting simple with LED blinking in Ada - internal LED, external LED with proper renaming, and a look at why Ravenscar looks so clean (even if it's not quite ready for everyday use yet).
Contained in Chapter 01 are:
- blink - Jeremy Grosser Ada sample
- sketch_01_1_blink - Chapter 1.1 Blink internal LED
- sketch_01_2_blink - Chapter 1.2 Blink external LED
pico_ada_c01_blink_e 1.8.0 Chapter 1 Reloaded: Blinking LEDs on Both Cores (embedded runtime)
1.8.0
Blinking LEDs on Both Cores Updated Chapter 1 using the new embedded_rp2040 runtime - now with proper multi-core support, Ada.Real_Time, and delay until for accurate, slippage-free LED blinking on Raspberry Pi Pico.
After quick community help, I rewrote Chapter 1 to use light tasking on both RP2040 cores. No more manual timers - clean, precise dual-LED blinking with zero slippage.
Contained in Chapter 01 reloaded are:
- blink - Jeremy Grosser Ada sample
- sketch_01_1_blink - Chapter 1.1 Blink internal LED
- sketch_01_2_blink - Chapter 1.2 Blink external LED
- double_blink-main - double blink using both cores.
Read the full tutorial at Chapter 1 Reloaded: Dual-Core Light Tasking - Blinking LEDs on Both Cores, GNATdoc documentation, SourceForge repository
pico_ada_c01_blink_lt 1.8.0 Chapter 1 Reloaded: Blinking LEDs on Both Cores (light tasking runtime)
1.8.0
Blinking LEDs on Both Cores Updated Chapter 1 using the new light_tasking_rp2040 runtime - now with proper multi-core support, Ada.Real_Time, and delay until for accurate, slippage-free LED blinking on Raspberry Pi Pico.
After quick community help, I rewrote Chapter 1 to use light tasking on both RP2040 cores. No more manual timers - clean, precise dual-LED blinking with zero slippage.
Contained in Chapter 01 reloaded are:
- blink - Jeremy Grosser Ada sample
- sketch_01_1_blink - Chapter 1.1 Blink internal LED
- sketch_01_2_blink - Chapter 1.2 Blink external LED
- double_blink-main - double blink using both cores.
Read the full tutorial at Chapter 1 Reloaded: Dual-Core Light Tasking - Blinking LEDs on Both Cores, GNATdoc documentation, SourceForge repository
pico_ada_c02_button_and_led 1.8.0 Chapter 2: Button controled LEDs
1.8.0
Controlling an LED with a button on the Raspberry Pi Pico using Ada - two simple but useful interaction examples.
In this chapter I combine a push button with an LED. We start with basic on/off control, then move to a toggle-style table lamp with software debounce.
Contained in Chapter 02 are:
- sketch_02_1_button_and_led - Chapter 2.1 Switch LED with Button
- sketch_02_2_table_lamp - Chapter 2.2 Simple table lamp
Read the full tutorial at Chapter 2 - Button & LED, GNATdoc documentation, SourceForge repository
pico_ada_c03_led_bar 1.8.0 Chapter 3: Cylon LED Bar: flowing light upgraded to a menacing scanner
1.8.0
Building a smooth flowing LED bar on the Raspberry Pi Pico with Ada - from a simple chasing light to a proper menacing Cylon scanner effect using real-time delays.
In this chapter we turn ten LEDs into a flowing light bar. We start with the basic Freenove example using an array of RP.GPIO.GPIO_Point (aliased limited tagged types). We then improve it with a pre-calculated sine-harmonic timing table to create a realistic Cylon scanner - all done with Ada.Real_Time and zero floating-point at runtime for perfect jitter-free movement.
Contained in Chapter 03 are:
- Sketch_03_1_Flowing_Light - straight port of the classic flowing light
- Cylon_Light - the final dramatic Cylon scanner with organic easing
- Cylon_Light_Float - Floating point version of Cylon_Light
Read the full tutorial at Chapter 3 - Cylon LED Bar: flowing light upgraded to a menacing scanner, GNATdoc documentation, SourceForge repository
(The Cylons did nothing wrong. Humans created the perfect companion species and then completely messed it up.)
pico_ada_c04_pwm 1.8.0 Chapter 4: Analog LED with PWM
1.8.0
Building smooth breathing LEDs and flowing light bars with hardware PWM on the Raspberry Pi Pico using Ada. From jittery duty cycles to perfect linear dimming - guided by the Voltcraft MSO-5102B oscilloscope and a deep dive into PWM slice mapping on both Pico 1 and Pico 2.
In this chapter we create a reusable Pico.Analog package for PWM-based analogue output. We start with a classic breathing light, then move on to a flowing light bar. Along the way the MSO-5102B reveals the real behaviour of our code, and we discover (and fix) a subtle bug in the experimental RP2350 HAL.
Contained in Chapter 04 are:
- Pwm - Original PWM sample from Jeremy Grosser
- sketch_04_1_breathing_light - Chapter 4.1 Blink internal LED
- sketch_04_2_flowing_light_2 - Chapter 4.1 Project Meteor Flowing Light
Read the full tutorial at Chapter 4: Analog & PWM, GNATdoc documentation, SourceForge repository
pico_ada_c05_rgb 1.8.0 Chapter 5: Controlling an RGB LED with PWM
1.8.0
Learn how to drive a common-cathode RGB LED using the RP2040's PWM peripherals. This chapter introduces a reusable Ada package for colour control and demonstrates both random colours and a smooth colour-wheel gradient.
Extend the simple LED examples to full-colour control with an RGB LED. Create a reusable Pico.Analog.RGB_LED package
and explore two sketches: random colours (using the embedded runtime) and a smooth colour-wheel transition.
Contained in Chapter 05 are:
- sketch_05_1_random_color_light.adb - Chapter 5.1 Random Color Light
- sketch_05_2_gradient_color_light.adb - Chapter 5.2 Gradient Color Light
Read the full tutorial at Chapter 5: Controlling an RGB LED with PWM, GNATdoc documentation, SourceForge repository
pico_ada_c06_neopixel 1.8.0 Chapter 6: Controlling 8 NeoPixel RGB LED
1.8.0
Learn how to drive WS2812 (NeoPixel) LEDs on the Raspberry Pi Pico using the RP2040 PIO in Ada. Includes a square-wave diagnostic, fixes for the official ws2812_demo, and two complete animation sketches.
From understanding the WS2812 protocol to writing our own PIO code and creating colourful animations - everything you need to make NeoPixels dance with Ada on the Pico.
Contained in Chapter 06 are:
- square_wave-main.adb - Simple Square Wave test using PIO (for timing reference)
- ws2812_demo.adb - Jeremy Grosser's WS2812 demo adapted for the RP2040 and Ada 2022
- sketch_06_1_led_pixel.adb - Chapter 6.1 NeoPixel LED Pixel
- sketch_06_2_rainbow_light.adb - Chapter 6.2 NeoPixel Rainbow Light
Read the full tutorial at Chapter 6: Controlling an NeoPixel LED with PWM, GNATdoc documentation, SourceForge repository
pico_ada_c07_buzzer 1.8.0 Chapter 7: Controlling active and passive Buzzer
1.8.0
Learn how to drive active and passive buzzers with the Raspberry Pi Pico using Ada. From simple doorbell switches to PWM-generated sweeping alert tones - including hardware tips with flyback diodes and oscilloscope measurements.
In this chapter we connect both active and passive buzzers to the Pico. We start with a simple button-controlled doorbell, improve the passive buzzer with bit-banging, and finally create a clean sweeping alert tone using the Pico's PWM hardware. We also look at inductive-load protection and why a diode is essential.
Contained in Chapter 07 are:
- sketch_07_1_doorbell.adb - Chapter 7.1 Doorbell with active buzzer
- sketch_07_2_alert.adb - Chapter 7.2 Alert with passive buzzer
- pwm_alert.adb - Use PWM to drive an passive buzzer
- buzz_and_blink-main.adb - Use tasks to drive both a buzzer and an LED
Read the full tutorial at Chapter 7: Controlling a Buzzer, GNATdoc documentation, SourceForge repository
pico_ada_c08_serial_communication 1.8.0 Chapter 8: Serial Communication (UART, USB, SWD)
1.8.0
Learn three different ways to perform serial communication with the Raspberry Pi Pico using Ada - SWD semihosting, UART and USB CDC-ACM.
Three practical serial output methods together with complete example programs for sending and receiving data.
Contained in Chapter 08 are:
- sketch_08_1_serial_print.adb - Chapter 8.1 Print on all three destinations
- sketch_08_2_serial_rw.adb - Chapter 8.2 Read data from all three destinations
Read the full tutorial at Chapter 8: Serial Communication (UART, USB, SWD), GNATdoc documentation, SourceForge repository
pico_bsp 2.2.0 Board support package for Raspberry Pi Pico
2.2.0
pico_examples 2.2.0 Examples for Ada on the Raspberry Pi Pico
2.2.0
pico_st7789 0.1.2 ST7789 display driver for RP2040 (PIO parallel + SPI)
0.1.2
pico_ultrasonic_ranger 0.1.0 Driver for the Grove ultrasonic ranger. Depends on the RP Pico HAL.
0.1.0
pico_xbsp 1.8.0 Extended board support package for Raspberry Pi Pico
1.8.0
Extended board support package (XBSP) for the Raspberry Pi Pico.
This crate builds upon Jeremy Grosser's official pico_bsp and adds a growing set of clean, reusable components for Ada developers targeting the RP2040. It is developed alongside the Pi Ada Tutorial but is equally suitable for any standalone embedded Ada project.
Current components:
- Pico.Analog - Analogue GPIO using PWM
- Pico.Analog.RGB_LED - Analogue RGB LED control using PWM
- Pico.Debug_IO - Multi output interface for debug output
- Pico.Tone - Square-wave tone generation using PWM
- Pico.UART_IO - Simple UART text I/O for the Debug Probe (115200 8N1 on GP0/GP1)
- Pico.USB_IO - Simple USB text I/O for direct connection to a PC terminal
- Pico.Utils - Miscellaneous utilities
The crate is available in two variants:
-
no_tasking(default) - small, fast, and compatible with the light runtime -
tasking- thread-safe using protected objects (requires a tasking runtime) -
Event_Log_Output
- "none" - deactivate output entirely.
- "swd" - use Ada.Text_IO which uses semihosting to output to GDB. Don't forget to activate with
arm semihosting enable. - "usb" - use
Pico.USB_IOwhich in turn usesUSB.Device.Serialfor output. You will need a serial terminal to read the output. - "uart" - use
Pico.UART_IOwhich in turn usesRP.UARTfor output. You will need a Debug Probe or a RS232C to USB interface as well as a serial terminal to read the output.
-
USB_TX_Buffer_Size & USB_RX_Buffer_Size Read and write buffers can be configured separately for greater flexibility. The default value of 128 bytes equals two USB block sizes and enables reliable bulk transfers. The minimum supported size is 64 bytes (one USB block). Larger multi-block transfers may fail if the buffer is set too small.
All packages include full GNATdoc annotations.
Useful links:
The library will continue to grow with each new tutorial chapter while remaining a clean, independent crate.
pkg_config system
system
pla_util 2.1.3 A power line adapter utility
2.1.3
play_2048 1.0.0 2048 game: merge tiles with the same number until you add up to 2048
1.0.0
plplot system A plotting library
system
portable_minimal_ada_rts 1.0.0 Portable Minimal Ada Runtime Library
1.0.0
postgresql system PostgreSQL relational database management system
system
powerjoular 1.0.4 Monitoring the power consumption of multiple platforms and processes
1.0.4
ppa_gtkada 1.0.0 Tutorials for GTKAda
1.0.0
ppag 2.1.1 First steps with Gnoga
2.1.1
pragmarc 20240810 The PragmAda Reusable Components
20240810
press_utils 1.0.0 Some utilities and a pretty complete argparse framework
1.0.0
prettier_ada 26.0.0 Port of the Prettier formatter to Ada
26.0.0
printer_toolkit 0.3.0 Printer toolkit to write reports
0.3.0
Printer toolkit provides support to write reports on console or to produce SVG files with almost the same Ada code. It can display simple bar charts as well as images on the console.
The core library is provided by printer_toolkit and the SVG support implemented by the printer_toolkit_svg.
Run one of the following Alire commands or both:
alr with printer_toolkit
alr with printer_toolkit_svg
program_proofs_in_spark 0.1.1 Programs from the book Program Proofs in SPARK
0.1.1
progress_indicators 0.0.2 Ways of displaying progress in command line tools.
0.0.2
prolog 1.0.0 Simple Prolog library
1.0.0
protobuf 1.0.0 Google Protocol Buffers implementation in Ada
1.0.0
proven_components 1.2.0 Reusable components in SPARK/Ada developed since 1980.
1.2.0
These are components developed over the past 45+ years of Ada work, updated as Ada evolved, and formally proven when within the SPARK subset. Most are proven to the Gold or Platinum level, but when necessary they are proven to the Silver level, i.e., absence of run-time errors. They have been used in both host and embedded projects, many professional and a few for fun.
Sample contents: Sequential Bounded Buffers Sequential Bounded Stacks (i.e., not thread-safe) ... Protected types providing synchronization protocols PI and PID Controls Image functions for floating- and fixed-point types, in standard (i.e., not scientific) notation Gaussian, Categorical, and Scaled Uniform Random Number Generators Recursive Moving Average (RMA) filters for signal processing Sorting and Searching routines ...
ptf 1.2.2 Portable Text Formatter
1.2.2
pygamer_bsp 1.0.0 Board Support Package for the AdaFruit PyGamer
1.0.0
pygamer_simulator 1.0.0 SDL simulator of the AdaFruit PyGamer console
1.0.0
qmc5883 1.0.0 Driver for QMC5883L magnetic sensor
1.0.0
qoi 0.1.0 Ada/SPARK implementation of the Quite Ok Image format
0.1.0
qplt 20230720 An Ada-GUI program to quickly produce a plot of a data set
20230720
Qplt
Quick Plot: an Ada-GUI program to quickly produce a plot of a data set
Usage
type
qplt -?
for usage instructions, or read the code that outputs them.
Dependencies
Qplt requires Ada GUI (https://github.com/jrcarter/Ada_GUI) and the PragmAda Reusable Components (https://github.com/jrcarter/PragmARC). Those unfamiliar with Ada GUI should install it, run the test programs, and be familiar with its Readme before running Qplt.
Sample Input
The files qplt_sine.txt, qplt_sombrero.txt, and qplt_wpop.txt contain sample data for Qplt.
qplt_sine.txt contains a sine curve. Suggested use:
qplt np -t Sine qplt_sine.txt
qplt_sombrero.txt contains the "Sombrero" curve, sin x / x (with the limit of 1 plotted for x = 0). Suggested use:
qplt np -t Sombrero qplt_sombrero.txt
qplt_wpop.txt contains values of world population since 1600. Suggested use:
qplt -t "World Population" -x Year -y "Population in billions" qplt_wpop.txt
The sample input files are proveded under the CC BY-SA license (https://creativecommons.org/licenses/by-sa/4.0/).
rabbitmq 0.1.0 Ada bindings for the librabbitmq C client library
0.1.0
raiden 1.0.0 An Ada implemenetation of a block cipher called Raiden.
1.0.0
rand 0.1.0 Random number generation toolkit
0.1.0
Random number generation toolkit for Ada
Design principles mostly inspired by the rand Rust crate.
The project is split into several subcrates. rand_core, rand_chacha, rand_xoshiro256 and rand_distributions can be used on embedded; However, rand_sys (and its dependent rand, the main crate) pull entropy from system sources, using the system_random Alire crate.
Usage examples
Get a thread local instance of a secure Random Number Generator (RNG), seeded with system entropy:
with Rand;
R : Rand.Rng := Rand.Thread_Rng;
-- alternatively:
R : Rand.Rng := Rand.Small_Rng;
-- a fast, unsecure RNG seeded with system entropy
R : Rand.Rng := Rand.Sys.Get;
-- RNG based on system randomness sources
-- (OS-dependent)
Use convenience methods on the RNG to generate basic types:
V1 : Float := R.Gen; -- a float in the range [0, 1)
V2 : Long_Integer := R.Gen; -- a long integer over the whole range
You can also define your own random number generators by implementing the Rand.Core_Rng interface (alias for Rand_Core.Rng).
Use Next and Next_Bytes to get the raw output of any RNG:
Buf : Rand.Core.Bytes (1 .. 256);
R.Next_Bytes (Buf);
X : Rand.Core.U64 := R.Next;
Use a predefined random distribution to get finer random value selection:
use Rand.Distributions;
D1 : Uniform_Nat.Distribution := Uniform_Nat.Create (8, 27);
S : Natural := D1.Sample (R);
-- sample in the inclusive range [8, 27]
D2 : Bernoulli := Bernoulli.Create (0.25);
S : Boolean := D2.Sample (R);
-- a boolean that is True 25% of the time
Or define your own distributions:
use Rand.Distributions;
type Gaussian is new Long_Float_Distr.Distribution with record
Sigma : Long_Float;
end record;
overriding
function Sample (D : Gaussian; R : in out Rand.Rng) return Long_Float
is (...); -- sampling the custom distribution
Even on your own types:
with Rand_Distributions; use Rand_Distributions;
type My_Rec is record
A : Integer;
B : Float;
end record;
package I is new Generic_Distribution (My_Rec);
-- define the interface distributions over your type must implement
type My_Distr is new I.Distribution with null record;
overriding
function Sample (D : My_Distr; R : in out Rand.Rng) return My_Rec
is (A => 4, -- chosen by fair dice roll
B => R.Gen);
rand_bigints 0.2.0 Random big integer generation
0.2.0
rand_chacha 0.1.0 ChaCha20/12/8 based PRNG
0.1.0
rand_core 0.1.0 Core interfaces for random number generation
0.1.0
rand_distributions 0.1.0 Collection of standard random distributions
0.1.0
rand_sys 0.1.0 Random number generator from system entropy
0.1.0
rand_xoshiro256 0.1.0 Xoshiro256 style PRNG
0.1.0
raspberry_bsp 1.0.0 Board Support package for Raspberry PI v1, v2 and B+
1.0.0
raylib 2.0.0 Ada bindings for Raylib
2.0.0
Using raylib-ada
This project is available in the Alire package manager.
To use it, just add raylib in your dependencies:
$ alr with raylib
And add the following linker switches for executable projects to link against Raylib and libmath:
package Linker is
for Switches ("Ada") use ("-lraylib", "-lm");
end Linker;
Raylib dependencies on Ubuntu/Debian
When Raylib is available in the system distributions (Arch, Fedora, Msys2, Macports, Brew, etc.), Alire will install it for you so there's nothing to do here.
For Ubuntu/Debian on the other hand, you have to download a Raylib release from GitHub (or build from source if you want).
Alire will let you know with a message like this:
warn: The following external dependencies are unavailable within Alire:
warn: libraylib^6
warn: They should be made available in the environment by the user.
Download the 6.0 release from this address:
$ wget https://github.com/raysan5/raylib/releases/download/6.0/raylib-6.0_linux_amd64.tar.gz
Extract it:
$ tar xf raylib-6.0_linux_amd64.tar.gz
Set the environment variables like so:
$ export C_INCLUDE_PATH=${PWD}/raylib-6.0_linux_amd64/include/:${C_INCLUDE_PATH}
$ export LIBRARY_PATH=${PWD}/raylib-6.0_linux_amd64/lib/:${LIBRARY_PATH}
rclada 0.1.0 ROS2 Ada Client Library
0.1.0
rclada_examples 0.1.0 ROS2 Ada Client Library - Examples
0.1.0
re2c system re2c lexer generator
system
rejuvenation 23.0.0 Analysis and manipulation of Ada code based on concrete patterns
23.0.0
remoteio 2.23808.1 Remote I/O Protocol Client Library for GNAT Ada
2.23808.1
This crate contains a subset of the Linux Simple I/O Library Ada packages that are relevant for building Remote I/O Protocol client programs.
This crate can be built for Linux, MacOS, or Windows targets.
The Remote I/O Protocol is a lightweight message protocol for performing remote I/O operations. The protocol is implemented using a request/reply pattern, where the master device (e.g. a Linux computer) transmits an I/O request in a 64-byte message to the slave device (e.g. a single chip microcontroller). The slave device performs the requested I/O operation and returns an I/O response in a 64-byte message back to the master device.
The protocol is kept as simple as possible (exactly one 64-byte request message and one 64- byte response message) to allow using low end single chip microcontrollers such as the PIC16F1455 for the slave device. Although particularly suited for USB raw HID devices, this protocol can use any transport mechanism that can reliably transmit and receive 64-byte messages.
resources 0.1.0 Utility library to handle project resources at run-time
0.1.0
rewriters 23.0.0 Easy, yet advanced manipulation of Ada code
23.0.0
ros2_foxy system ROS2 Foxy distribution
system
rp2040_hal 2.7.1 Drivers and HAL for the RP2040 micro-controller family
2.7.1
rpio 1.0.0 Driver for the BCM2835's GPIO, as seen on the Raspberry Pi
1.0.0
rsfile 1.0.1 Randomly pick a file with probability proportional to its size
1.0.1
rtmidi 0.1.0 Ada "middleweight" binding for the rtMIDI library
0.1.0
rxada 0.1.1 Experimental implementation of ReactiveX in Ada
0.1.1
saatana 2.0.2 SPARK/Ada Algorithms Targeting Advanced Network Applications
samd51_hal 0.3.0 Drivers and HAL for the SAMD51 micro-controller family
0.3.0
scatcdsk_lib 1.0.0 Reusable software components extracted from the SCATC DSK
1.0.0
sciada 0.4.0 Collection of Scientific Operations
0.4.0
SCI Ada provides a collections of algorithms commonly used for data analysis:
- SCI.Correlations.* computes correlations between values,
- SCI.Occurrences.* helps in identifying occurrences of items,
- SCI.Similarities.* provides metrics to compute similarities between sets.
- SCI.Sparse.* defines sparse arrays.
- SCI.Statistics.* defines some classical statistics operations.
- SCI.Vectorizers.* transforms a list of tokens to a vector.
Documentation
scripted_testing 2.0.0 Integration testing
2.0.0
To set the scene, the Ada software under test (SUT) forms part of a system. Generally, the system will be constructed using a layered approach, and the other parts of the system that interact with the SUT are higher-level (which can call interface subprograms presented by the SUT) or lower-level (whose interfaces can be called by the SUT, or which can provide callbacks to the SUT).
This package is intended for testing at a level between unit testing (using, for example, AUnit) and integration testing (using real hardware). Unit testing tends to be fragile, requiring a lot of rework for even minor functional changes in the requirements.
The scripting language supported is Tcl, and specifically the Ada binding Tash. The reason for choosing Tcl rather than Python or Lua is that Tcl's interface is entirely string-based; this is important, considering the need to specify values of enumerated types.
The package provides facilities to write new commands in Tcl to
-
call the interface subprograms presented by the SUT,
-
set up values to be returned by calls the SUT makes to lower-level system components,
-
call callbacks provided by lower-level system components,
-
delay for appropriate periods, and
-
check that the proper calls have been made to lower-level system components, with the required values.
It's assumed that the interface subprograms of the lower-level subsystems are stubbed so that:
-
inandin outparameters can be recorded for later checking, -
out(andin out) parameter values and functionreturnvalues can be provided to be returned to the SUT, -
exceptions can be raised when required,
-
the number of calls to the subprogram can be checked.
sdlada 2.5.20 Ada 2012 SDL 2.x bindings.
2.5.20
secretada 1.0.0 Secret service Ada binding
1.0.0
The libsecret is a library for storing and retrieving passwords and others secrets. The library uses the Secret Service API provided by Gnome Keyring or KDE Wallet. This library provides an Ada binding to the Secret Service API.
You can store a secret by using the following code extract:
with Secret.Services;
with Secret.Attributes;
with Secret.Values;
...
Service : Secret.Services.Service_Type;
List : Secret.Attributes.Map;
Value : Secret.Values.Secret_Type;
...
Service.Initialize;
List.Insert ("secret identification key", "secret identification value");
Value := Secret.Values.Create ("the-secret-to-store");
Service.Store (List, "The secret label (for the keyring manager)", Value);
And you will retrieve it with:
Value := Service.Lookup (List);
if not Value.Is_Null then
Ada.Text_IO.Put_Line (Value.Get_Value);
end if;
security 1.6.0 Security Library for HTTP client and server with OAuth2 support
1.6.0
Ada Security provides a security framework which allows applications to define and enforce security policies. This framework allows users to authenticate by using OpenID Authentication 2.0 as well as OAuth 2.0 protocol. It allows a web application to integrate easily with Yahoo!, Gitlab, Github, Facebook and Google+ authentication systems. The Ada05 library includes:
- An OpenID client authentication,
- An OAuth 2.0 client authentication,
- An OpenID Connect authentication framework,
- An OAuth 2.0 server authentication framework,
- A policy based security framework to protect the resources
The Ada Security library is used by the Ada Web Application to provide authentication and access control to users within the web applications.
Documentation
semantic_versioning 2.1 Semantic Versioning in Ada
2.1
septum 0.2.1 An interactive context-based text search tool for large codebases.
0.2.1
serverfaces 1.6.1 Web Server Faces JSR 252, JSR 314 and JSR 344
1.6.1
Ada Servlet allows to create web applications using the same pattern as the Java Servlet (See JSR 154, JSR 315).
The Ada Servlet library is used by the Ada Server Faces framework and Ada Web Application to provide server web requests.
Documentation
serverfaces_unit 1.6.1 Web Server Faces JSR 252, JSR 314 and JSR 344 (Testing framework)
1.6.1
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).
This library provides a unit test framework that helps in building unit tests on top of Ada Server Faces.
Documentation
servletada 1.8.2 Web Servlet Library following JSR 154, JSR 315 (Core)
1.8.2
Ada Servlet allows to create web applications using the same pattern as the Java Servlet (See JSR 154, JSR 315).
The Ada Servlet library is used by the Ada Server Faces framework and Ada Web Application to provide server web requests.
servletada_aws 1.8.2 Web Servlet Library following JSR 154, JSR 315 (AWS)
servletada_ews 1.8.2 Web Servlet Library following JSR 154, JSR 315 (EWS)
servletada_unit 1.8.2 Web Servlet Library following JSR 154, JSR 315 (Testing framework)
sh1107 1.2.2 Driver for the SH1107/OLED 128x128 monochrome display
1.2.2
sha1 2.0.0 Secure Hash Algorithm 1 implemented in Ada
2.0.0
sha2 2.0.0 Secure Hash Algorithm 2 implemented in Ada
2.0.0
sha3 1.0.0 SPARK-proved SHA-3/SHAKE (FIPS 202) hash functions
1.0.0
SPARK-proved SHA-3 and SHAKE implementations for Ada 2022. Implements FIPS 202 with SHA3-256, SHA3-512, SHAKE128, and SHAKE256. Keccak-f[1600] permutation and sponge construction are formally verified at SPARK level 2: 159/159 proof obligations discharged, zero pragma Assume, zero unproved VCs, termination verified via Always_Terminates aspects on every public subprogram.
No heap allocation, pragma Pure, suitable for embedded and safety-critical systems. Incremental API (Init/Absorb/Squeeze) and one-shot convenience functions. Tested against NIST Known Answer Test vectors.
Constant-time execution and FIPS 140-3 validation are out of scope for this release. See SECURITY.md for the full threat model.
shoot_n_loot 1.0.0 Platform game for the AdaFruit PyGamer console
1.0.0
si_units 0.2.0 Pretty print physical values in properly scaled metric (SI) units.
0.2.0
Provides generic conversion (Image) functions that convert values into human
readable strings with appropriate SI prefixes. This is especially convenient
when you have to deal with printing values from a potentially large interval,
and you need to represent such values as something an average human will
easily be able to read. Then you can use SI_Units to take care of the
conversion into an appropriate string representation for you.
Converting values into a string is supported with all SI prefixes which are a power of 1000 (yocto .. Yotta), additionally there is a generic that can deal with binary prefixes (i.e. prefixes that denote powers of 1024).
Scaling (i.e. conversion between different prefixes, like from kilo(meter) to centi(meter)) between all defined SI prefixes is also supported, similar for binary prefixes.
See the project's website for more details.
Version 0.2.0 is source code identical to the previous 0.1.3 release, but adds
full support for Alire integration. In the process, the provided gnat project
files have been streamlined, so if you upgrade to this version from a previous
release, you will need to adjust your own project files accordingly.
simcpucli 0.5.0 CLI for CPU simulator
0.5.0
This provides a simple command line interface to the CPU simulator library. It has commands for setting and reading memory, reading registers, and executing instructions. It also uses the Tiny-Lisp library so that many of these actions can be scripted.
simh_tapes 0.1.1 Library to handle SimH Standard magnetic tape image files
0.1.1
simple_components 4.81.0 Simple Components - A collection of support packages
4.81.0
simple_logging 3.0.0 Simple logging to console
3.0.0
simple_regex 0.1.0 Port of Rob Pike's simple regex from the Practice of Programming.
0.1.0
Provides a simple regular expression match function for Latin-1 strings, and supports *, ., ^ and $.
slip 0.0.1 SLIP Protocol Implementation
0.0.1
snow 1.0.0 Console output utilities
1.0.0
socketcan 1.0.0 An Ada language binding to SocketCAN for GNU/Linux systems
1.0.0
softdev 1.2.0 Serial protocols implemented in software
1.2.0
spark_math 0.1.0 Formally verified mathematical library in SPARK
0.1.0
Spark_Math
A formally verified mathematical library written in SPARK/Ada, providing common mathematical functions for both integer and fixed-point types with compile-time proof of correctness.
Features
Integer Math (Spark_Math.Integer)
| Function | Description | Complexity |
|---|---|---|
Sqrt |
Integer square root (floor of sqrt N) | O(log N) |
Power |
Exponentiation with overflow protection | O(Exp) |
GCD |
Greatest common divisor (Euclidean algorithm) | O(log min(A,B)) |
Max |
Maximum of two values | O(1) |
Min |
Minimum of two values | O(1) |
Fixed-Point Math (Spark_Math.Fixed)
| Function | Description | Complexity |
|---|---|---|
Sqrt |
Square root approximation (within 'Small) |
O(log(N/Small)) |
Max |
Maximum of two values | O(1) |
Min |
Minimum of two values | O(1) |
Roadmap
The goal is to provide SPARK-verified equivalents of Ada.Numerics.Generic_Elementary_Functions for fixed-point and integer types.
Planned Functions
| Category | Functions | Status |
|---|---|---|
| Basic | Sqrt |
Implemented |
| Exponential | Log, Log(Base), Exp, ** |
Planned |
| Trigonometric | Sin, Cos, Tan, Cot |
Planned |
| Inverse Trig | Arcsin, Arccos, Arctan, Arccot |
Planned |
| Hyperbolic | Sinh, Cosh, Tanh, Coth |
Planned |
| Inverse Hyperbolic | Arcsinh, Arccosh, Arctanh, Arccoth |
Planned |
Implementation Notes
Unlike floating-point implementations, fixed-point math requires:
- CORDIC algorithms for trigonometric functions (no FPU dependency)
- Polynomial approximations with bounded error analysis
- Range reduction techniques proven correct in SPARK
- Cycle parameter support for degree/radian flexibility
Contributions for any of these functions are welcome!
Usage
Integer Math Example
with Spark_Math.Integer;
procedure Example is
-- Instantiate for your integer type
package My_Math is new Spark_Math.Integer (Integer);
Result : Integer;
begin
-- Square root (floor)
Result := My_Math.Sqrt (17); -- Returns 4
-- Exponentiation
Result := My_Math.Power (2, 10); -- Returns 1024
-- Greatest common divisor
Result := My_Math.GCD (48, 18); -- Returns 6
-- Max and Min
Result := My_Math.Max (5, 3); -- Returns 5
Result := My_Math.Min (5, 3); -- Returns 3
end Example;
Fixed-Point Math Example
with Spark_Math.Fixed;
procedure Example is
-- Define your fixed-point type
type Voltage is delta 0.001 range 0.0 .. 100.0;
-- Instantiate for your type
package Voltage_Math is new Spark_Math.Fixed (Voltage);
Result : Voltage;
begin
-- Square root (approximation within 'Small)
Result := Voltage_Math.Sqrt (4.0); -- Returns ~= 2.0
Result := Voltage_Math.Sqrt (2.0); -- Returns ~= 1.414
-- Max and Min
Result := Voltage_Math.Max (3.5, 2.1); -- Returns 3.5
Result := Voltage_Math.Min (3.5, 2.1); -- Returns 2.1
end Example;
SPARK Verification
This library is designed for formal verification with SPARK. All functions include:
- Preconditions (
Pre): Specify valid input constraints - Postconditions (
Post): Guarantee output properties - Loop invariants: Enable proof of loop correctness
- No runtime exceptions: All potential issues are caught at proof time
Verification Status
SPARK defines five proof levels:
| Level | Description |
|---|---|
| Stone | Valid SPARK code |
| Bronze | Initialization and correct data flow |
| Silver | Absence of run-time errors (AoRTE) |
| Gold | Proof of key integrity properties |
| Platinum | Full functional proof of requirements |
| Package | Level |
|---|---|
Spark_Math.Numerics_Core |
Gold |
Spark_Math.Integer |
Gold |
Spark_Math.Fixed |
Gold |
Contributing
Contributions are welcome!
License
This project is licensed under the Apache-2.0 WITH LLVM-exception license. See LICENSE for details.
spark_unbound 0.2.1 Unbound data structures in Ada-Spark
0.2.1
Spark_Unbound is a take on providing generic unbound data structures in Spark.
In addition to proving general absence of runtime errors, the heap allocation is done in a non-Spark function to catch a possible Storage_Error.
This further increases the security and confident use of this library.
The following packages are currently available:
Spark_Unbound.Safe_Alloc: Providing formally proven safe heap allocation functionalitySpark_Unbound.Arrays: Providing a formally proven alternative toAda.Containers.Vector
Note: If you use this library, starring the repository on GitHub helps me a lot to see if it is even useful for someone else.
sparkfun_qwiic_motor_driver 0.1.0 Interface to the SparkFun Qwiic motor driver.
0.1.0
sparklib 16.1.0 Companion libraries for SPARK programming
16.1.0
SPARKlib is meant to provide users of SPARK libraries to use in SPARK code. SPARKlib contains various libraries, such as a wide range of containers, as well as lemmas to use directly in user code.
This version of SPARKlib is made for use with GNATprove FSF 16. Unlike what is specified in the AdaCore SPARK User's guide, you do not need to copy the sources to your project to use it - and in fact, it's not recommended when developing with Alire. This crate is usable as-is without special manipulations.
The SPARKlib is configurable through GPR external definitions:
SPARKLIB_MODEcan be configured tolightorfull, defaults tofull.SPARKLIB_BUILDcan be configured toProduction,AssertionsorDebug, defaults toProduction.
You can set these with the [gpr-set-externals] section in your Alire manifest. Only set them as an end user of the crate (that is, when testing locally, or when developing a binary).
sparknacl 4.0.1 Verified SPARK 2014 re-implementation of TweetNaCl cryptographic library
4.0.1
SPARK 2014 re-implementation of TweetNaCl cryptographic library, with fully automated proofs of type safety and some correctness properties
spat 1.3.0 SPAT - SPARK Proof Analysis Tool
1.3.0
SPAT - SPARK Proof Analysis Tools
Helper tool to obtain, analyse, sort, and filter timing information about
gnatprove runs (SPARK tools).
spawn 26.0.0 A simple library to spawn processes and communicate with them.
26.0.0
This is Glib independent implementation of a spawn processes interface.
spawn_glib 26.0.0 A simple library to spawn processes and communicate with them.
26.0.0
This is Glib integrated implementation of a spawn processes interface.
spdx 26.0.0 SPDX License Expression Validator
26.0.0
spdx_tool 1.0.0 SPDX license detection and management tool
1.0.0
spdx-tool scans the source files to identify licenses and allows to update them in order to use the SPDX license format. It can be used to:
- identify the license used in source files of a project,
- produce a JSON/XML report for the licenses found with the list of files,
- replace a license header by the SPDX license tag equivalent.
Identify licenses used in a project:
spdx-tool
Identify files matching a given license:
spdx-tool --only-licenses=Apache-2.0 -f
Check the license header before replacing it:
spdx-tool --only-licenses=Apache-2.0 --print-license --line-number src
Replace the license header by the SPDX-License-Identifier header:
spdx-tool --only-licenses=Apache-2.0 --update=spdx src
Build an XML or JSON report of files with their licenses:
spdx-tool --output-xml=report.xml
Documentation
- Man page: spdx-tool (1)
specfun 1.0.0 Native Ada library of special functions (e.g., beta, gamma)
1.0.0
This is a small native Ada library that provides few special functions like Beta, Gamma and Beta Incomplete. I wrote this because I needed those functions, therefore at the moment only the functions that I needed are present. This is a pure native Ada library and there is no dependence on external FORTRAN libraries.
splitter 1.0.2 A function to emulate "split" as implemented in Ruby
1.0.2
spoon 1.0.1 Use posix_spawn() to spawn processes without forking
1.0.1
ssh_protocol 0.0.2 SSH protocol (RFC4251) core library
0.0.2
The ssh_protocol library is an implementation of the SSH protocol version 2. It is designed as a protocol engine, without I/O, cryptography, or RNG in the core library.
The library implements the SSH transport layer (RFC 4253), user authentication (RFC 4252), and connection layer (RFC 4254), following the overall architecture defined in RFC 4251. It supports a modern, security-hardened algorithm set, which is supported by the cryptography backends such as libsodium and OpenSSL libcrypto.
The core library only uses static allocation, and does not use exceptions.
ssl system SSL library
system
st7789 0.1.0 SPI based driver for the ST7789 TFT display
0.1.0
standard_atomic_ops 1.0.0 Language-defined atomic operation packages for GNAT runtimes.
1.0.0
This crate supplies the GNAT source files for the Ada 2022 language-defined units for atomic operations:
- System.Atomic_Operations
- System.Atomic_Operations.Exchange
- System.Atomic_Operations.Modular_Arithmetic
- System.Atomic_Operations.Integer_Arithmetic
They are provided for use with those bare-board GNAT runtimes that do not (yet) include them, for example Arm-elf (the only target tested to date). The sources here are verbatim copies taken from a native runtime. As such, the implementations are GNAT-specific so their use with other compilers will not work. Once the shipped GNAT runtimes include them you can simply remove any references to this crate. Note that the license includes the GCC Runtime Library Exception.
startup_gen 26.0.0 Generates startup files (crt0 and linker script)
26.0.0
stephes_ada_library 3.7.3 Stephe's Ada library; miscellaneous useful stuff.
3.7.3
stm32f0x2_hal 0.1.0 Drivers and HAL for stm32f0x2 mcu family
0.1.0
stopwatch 0.1.0 Keep track of elapsed time
0.1.0
strategy 0.1.0 Property-based testing framework
0.1.0
suika_programing 0.1.0 Suika game clone with programing languages
0.1.0
svd2ada 0.1.0 Ada binding generator from CMSIS-SVD hardware descriptions files
0.1.0
swan 0.2.0 Stuff We All Need - utilities collection for ada
0.2.0
system_random 1.0.0 Minimal library to retrieve random data from system sources
1.0.0
tash 8.7.2 Binding to Tcl/Tk
8.7.2
Tash (previously known as Tcl Ada Shell) is an Ada binding to Tcl/Tk.
Its purpose is to
-
allow a Tcl program to use Ada in place of C to implement Tcl commands where additional execution speed, more complex data structures, or better name space management is needed, and
-
support the rapid development of Platform-Independent Graphical User Interfaces via Tk.
Please note that, on macOS, tash assumes that Tcl/Tk is provided via Homebrew.
task_coroutines 0.1.0 Coroutines and generators using only standard tasking features
0.1.0
tb6612_driver 0.1.0 Driver for the TB6612 dual DC motor driver IC.
0.1.0
templates_parser 26.0.0 Templates Parser: File generation from templates in Ada
26.0.0
termicap 1.0.0 Cross-platform terminal capability detection (color, TTY, ...)
1.0.0
Terminal capability detection for Ada/SPARK. Cross-platform, dependency-light, no rendering layer attached.
Termicap exists to answer the handful of questions almost every CLI or TUI program has to ask before printing a single byte: is the stream a TTY, how many colors can the terminal handle, how wide is the window, can the locale render Unicode, which terminal is this (iTerm, kitty, WezTerm, Windows Terminal, ConPTY, tmux, screen, ...), does it speak OSC 8 hyperlinks or Sixel graphics or the Kitty keyboard protocol, and the question that overrides all the others, did the user already pass NO_COLOR or FORCE_COLOR or --color=never. The answers come back as plain Ada records and enums. Termicap does not emit escape sequences, render styled text, or pretend to be a TUI framework. It is meant to sit underneath whatever rendering layer you already have.
What it detects
The base API gives you per-stream TTY booleans (stdin, stdout, stderr), the four canonical color levels (None, Basic_16, Extended_256, True_Color) via an 11-step cascade modelled on supports-color, termenv, and rich, terminal dimensions (ioctl(TIOCGWINSZ) on POSIX, GetConsoleScreenBufferInfo on Windows) with SIGWINCH resize notification via a self-pipe and protected object on POSIX, a Unicode support level (None / Basic / Extended) from locale, CI and terminal heuristics, terminal identity (multiplexers included) with a program name, the DA1 primary device attributes (VT level, capability flags), DECRPM mode reports through a batched single-sentinel probe, OSC 10/11 background and foreground color with a COLORFGBG fallback and a SPARK Gold dark/light classifier, and a passive OSC 8 hyperlink classification. Color responses are normalised to RGB; theme detection runs on luminance.
The full API adds the active probes: XTVERSION terminal name and version, Kitty / XTerm-CSI / Legacy / Win32 keyboard protocol, SGR_Pixels / SGR / URXVT / X10 mouse encoding (DECRPM-driven), Sixel and Kitty graphics flags (seeded by DA1 Ps=4 and XTVERSION name tokens), and OSC 52 clipboard support (Read / Write / Read_Write / None). Hyperlinks classification is refined when XTVERSION confirms the terminal.
A couple of standalone helpers come in the box: wcwidth / cell width with Unicode 3 / 13 / 16 tables and binary search (SPARK Gold, no FFI in the table layer); a Terminfo parser for header plus boolean / numeric / string entries (bounded, pure); and a process-wide Override_Mode (Auto / Force_None / Force_Basic / Force_256 / Force_True_Color) with a Scoped_Override controlled type for wiring --color=auto | never | always | 256 | truecolor straight into the detection engine.
Color downsampling
Detection only tells you what the terminal can show. Picking a color the terminal can actually display is a separate problem, and that's what the companion Termicap.Downsampling package handles: it maps any color you want to emit down to the level the terminal supports (TrueColor -> 256-color -> ANSI 16, or strip to none). One overloaded Downsample dispatches on RGB or Color_Index_256; the primitive conversions (Downsample_True_To_256, Downsample_True_To_16, Downsample_256_To_16) are also exposed for the cases where the dispatch wrapper is overkill. The whole package is pure SPARK Gold with idempotency and monotonicity postconditions, no FFI, no allocation.
Architecture notes
The detection logic is written against SPARK Silver (Gold for downsampling and cell width); FFI and tasking boundaries are isolated behind clearly marked SPARK_Mode => Off packages and C wrappers. The codebase has not yet been verified end-to-end with gnatprove. Running the prover and discharging the remaining VCs is on the to-do list, not a finished claim.
There are two API tiers. Get and Detect give you a fast snapshot (sub-50 ms in the worst case). Get_Full and Detect_Full add the active probes; worst case is around 6 s if every probe times out, but a local PTY usually answers in well under 50 ms. Get is cached per stream and thread-safe; Detect always re-runs every sub-detector, which is the version you want after SIGWINCH, after the override changes, or anywhere a long-running process can't trust a stale snapshot.
Linux, macOS, BSD, and Windows are all supported. Platform-specific bodies are dispatched via GPR Source_Dirs. The Windows layer classifies the console (Legacy_Conhost, ConPTY_VT_Enabled, Not_A_Console) and gates active probes accordingly; Cygwin / MSYS2 PTY handles are detected by inspecting the underlying named-pipe name through NtQueryObject.
No exceptions are raised by library code. Errors come back as Result variants or safe defaults. Dependencies stay minimal: sparklib for the SPARK formal containers, plus win32ada on Windows only.
Quick start
with Ada.Text_IO;
with Termicap.Capabilities;
with Termicap.Color;
procedure Hello is
Caps : constant Termicap.Capabilities.Terminal_Capabilities :=
Termicap.Capabilities.Get;
begin
if Caps.TTY_Stdout
and then Caps.Color >= Termicap.Color.Extended_256
then
Ada.Text_IO.Put_Line
(ASCII.ESC & "[38;5;208mHello, 256-color world"
& ASCII.ESC & "[0m");
else
Ada.Text_IO.Put_Line ("Hello, monochrome world");
end if;
end Hello;
The repository ships with a couple of dozen runnable demos in examples/, arc42-lite architecture docs in docs/architecture/, a Diátaxis-style user guide in docs/guide/, MADR-format ADRs in docs/adr/, StrictDoc-format requirements in docs/requirements/, and a cross-language conformance harness in tools/conformance/ that cross-checks Termicap against reference shims in C, Go, Rust, Python, Node.js, Java, Haskell, Ruby, C#, and Swift.
Licensed Apache-2.0 WITH LLVM-exception, which keeps it safe for static linking into closed-source binaries without forcing license propagation.
testlog 1.0 Log test activity to support unit testing of Ada packages
1.0
texcad 4.5.3 TeXCAD is a program for drawing or retouching {picture}s in LaTeX
4.5.3
TeXCAD is a program for drawing or retouching {picture}s in LaTeX. It extends the original {picture} capabilities, even without any obligatory LaTeX package, class or style sheet. The core of TeXCAD is totally portable.
Features:
- Supports plain LaTeX
- Extends LaTeX picture objects through emulation or use of special styles
- Special styles are only optional
- Parametric curves
- Free, Open-Source
texts 0.1.0 A no-frills library to deal with Unicode texts in Ada 2012
0.1.0
tiled_code_gen 0.1.0 Generate GESTE data from Tiled maps and tilesets
0.1.0
tiny_rp2040_bsp 1.0.0 Board support package for Pimoroni Tiny RP2040
1.0.0
tiny_text 1.5.1 Low resolution bitmap font with a small memory footprint
1.5.1
tinyaml 0.2.0 A strict YAML subset parser for Ada, inspired by StrictYAML
0.2.0
tlsada 2.5.2 Bindings for libtls
2.5.2
toml_slicer 0.1.2 Edit TOML files directly without parsing
0.1.2
tp7_gnoga 11.0.0 Turbo Pascal 7 units in Ada
11.0.0
tp7_gnoga_examples 11.0.0 Examples for Turbo Pascal 7 units in Ada
11.0.0
trendy_terminal 0.0.7 Terminal options, setup, tab completion and hinting.
0.0.7
trendy_test 0.0.4 Minimal Effort Ada Unit Testing Library
0.0.4
trendy_test
Minimum Effort Ada Unit Testing Library
Features
- Minimum setup
- Parallelization of tests
- Randomization of test order to find dependencies between tests
- No generated code or scripts needed
Example
with Trendy_Test.Assertions.Integer_Assertions;
with Trendy_Test.Reports;
with my_tests;
use Trendy_Test.Assertions;
use Trendy_Test.Assertions.Integer_Assertions;
procedure My_Test_Main is
begin
Trendy_Test.Register (My_Tests.All_Tests);
Trendy_Test.Reports.Print_Basic_Report(Trendy_Test.Run);
end My_Test_Main;
----------------------------------------------------------------
with Trendy_Test;
package My_Tests is
function All_Tests return Trendy_Test.Test_Group;
end My_Tests;
----------------------------------------------------------------
package body My_Tests is
procedure Test_Sample (T : in out Trendy_Test.Operation'Class) is
begin
-- Don't put anything above here you don't want run during listing/other ops.
T.Register;
Assert (T, Some_Expression);
end Test_Sample;
procedure Test_Is_Disabled (T : in out Trendy_Test.Operation'Class) is
begin
T.Register(Disabled => True); -- Disabled, don't run this test.
Assert (T, Some_Expression);
end Test_Is_Disables;
procedure Test_Is_Not_Run_In_Parallel (T : in out Trendy_Test.Operation'Class) is
begin
T.Register(Parallelize => False); -- There's some dependency, so don't run it in parallel.
Assert (T, Some_Expression);
end Test_Is_Not_Run_In_Parallel;
function All_Tests return Trendy_Test.Test_Group is
begin
return
(Test_Sample'Access,
Test_Is_Disabled'Access
);
end All_Tests;
end My_Tests;
Example Output
D:\dev\ada\trendy_command_line\bin\trendy_command_line_test_main
[ PASS ] shared_pointers_tests.test_multiple_oracles 0.000105300
[ PASS ] shared_pointers_tests.test_single_oracle 0.000052700
[ PASS ] trendy_command_line.context_free.tests.test_is_long_option 0.000002300
[ PASS ] trendy_command_line.context_free.tests.test_is_option_terminator 0.000007200
[ PASS ] trendy_command_line.context_free.tests.test_is_short_option 0.000005000
[ PASS ] trendy_command_line.context_free.tests.test_is_short_option_or_group 0.000009200
[ PASS ] trendy_command_line_tests.flags.test_boolean_option_defaults 0.000149400
[ FAIL ] trendy_command_line_tests.flags.test_boolean_option_short_option_group 0.000185600
Assertion Failed: (Condition false) at D:\dev\ada\trendy_command_line\src\trendy_command_line_tests-flags.adb: 110[D:\dev\ada\trendy_command_line\bin\trendy_command_line_test_main.exe]
0x453530 Trendy_Test.Report_Failure at trendy_test.adb:88
0x4535a4 Trendy_Test.Assert at trendy_test.adb:102
0x425338 Trendy_Command_Line_Tests.Flags.Test_Boolean_Option_Short_Option_Group at trendy_command_line_tests-flags.adb:110
0x451ff1 Trendy_Test.Run_Test at trendy_test.adb:237
0x452d4c Trendy_Test.Run.Parallel_Test_TaskTB at trendy_test.adb:277
0x4601a2 system__tasking__queuing__select_protected_entry_call at ???
[C:\Windows\System32\KERNEL32.DLL]
0x7ffd7d1f7032
[C:\Windows\SYSTEM32\ntdll.dll]
0x7ffd7e08264f
[ FAIL ] trendy_command_line_tests.flags.test_boolean_option_short_options 0.001984800
Assertion Failed: (Condition false) at D:\dev\ada\trendy_command_line\src\trendy_command_line_tests-flags.adb: 93[D:\dev\ada\trendy_command_line\bin\trendy_command_line_test_main.exe]
0x453530 Trendy_Test.Report_Failure at trendy_test.adb:88
0x4535a4 Trendy_Test.Assert at trendy_test.adb:102
0x425a43 Trendy_Command_Line_Tests.Flags.Test_Boolean_Option_Short_Options at trendy_command_line_tests-flags.adb:93
0x451ff1 Trendy_Test.Run_Test at trendy_test.adb:237
0x452d4c Trendy_Test.Run.Parallel_Test_TaskTB at trendy_test.adb:277
0x4601a2 system__tasking__queuing__select_protected_entry_call at ???
[C:\Windows\System32\KERNEL32.DLL]
0x7ffd7d1f7032
[C:\Windows\SYSTEM32\ntdll.dll]
0x7ffd7e08264f
[ PASS ] trendy_command_line_tests.flags.test_boolean_option_toggles 0.000153600
[ PASS ] trendy_command_line_tests.flags.test_boolean_option_too_many_occurrences
0.003517400
[ PASS ] trendy_command_line_tests.test_long_option_with_argument 0.000013000
[ PASS ] trendy_command_line_tests.test_one_operand 0.000006700
[ PASS ] trendy_command_line_tests.test_short_option_with_argument 0.000193600
Results: Passed: 12 / 14
tresses 4.0.0 Synth library inspired by Mutable Instruments Braids
4.0.0
tzif 3.0.3 Parsing and querying of IANA's Timezone Information File Library (tzif)
3.0.3
uhppoted_lib 0.2.0 Library for the UHPPOTE access controllers
0.2.0
ulid 20240921.0.0 Universally Unique Lexicographically Sortable Identifier
20240921.0.0
In a nutshell, a ULID code (Universally Unique Lexicographically Sortable Identifier) is a combination of a 48-bit time stamp (most significant part, with a millisecond accuracy), and a 80-bit random number (least significant part), totalling 128 bits, that is 16 bytes (octets).
The ULID code generation is sort of UUID (Universally Unique Identifier) system, also know as GUID (Globally Unique Identifier). The characteristic of ULID numbers is that they can be compared and sorted by their timestamps.
The package ULID provides a Generate function using the method described above, plus a Generate_Monotonic function that enables the production of a monotonically increasing sequence of ULID numbers within the same millisecond.
The preferred (canonical) representation of a ULID is a certain version of the Base32 encoding (example of output: 01J80P3NJDN0Y5YX7D05421X0G).
The ULID package also provides a function Encode_as_8_4_4_4_12 that outputs a text representation in the usual UUID 8-4-4-4-12 format (like: 01920161-d64d-5a3e-589e-c45df155547b).
Both formats are also recognized by the Decode function.
umwi 0.1.0 Unicode Monospace Width Information
0.1.0
universal_text_file 20220720 Proposed universal format for Unicode text files
20220720
Universal Text File Format
Proposed universal format for Unicode text files
Here I propose a universal format for Unicode text files, specified by its Ada implementation. Some features of the format are
- ASCII code points are encoded as themselves
- At most three bytes are used to encode a code point
- All code points may occur in a line
- Lines may be any length (though the implementation is limited to Integer'Last)
I have called this format Universal Text File format, with the acronym UTF. Like GNAT Programming Studio (GPS), this result is an acronym collision. Suggestions for alternative names are welcome.
Combined Specification and Ada Implementation
The format is specified here by its Ada implementation in package UTF, which is short and straightforward.
Tools
Three simple tools are provided:
- To_UTF, to convert an Ada.Text_IO file to UTF
- From_UTF, to convert a UTF file into an Ada.Text_IO file
- Umore, a simple
moreprogram for UTF files
Suitability
Most tools for processing text files on the major platforms work with native text files from other platforms, and UTF-8 has been widely adopted for encoding Unicode text files, so it seems unlikely that an alternative will gain much traction. However, having done this, I thought I would share it should anyone be interested.
Standard Software-Engineering Practice
Encodings should normally only be used externally to a program. Encoded input data should be decoded immediately upon input, and output data encoded immediatly before output.
unixodbc system Open Database Connectivity drivers for UNIX platforms
system
uri_ada 2.0 Processing of URI strings
2.0
uri_mime 1.4.0 URI & MIME Type Parsing and Manupulation
1.4.0
usb_embedded 1.0.1 An Ada USB stack for embedded devices
1.0.1
utf8test 0.1.0 Test the terminal behavior when outputting Latin-1 and UTF-8 strings
0.1.0
utilada 2.9.0 Utility Library with streams, processes, logs, serialization, encoders
2.9.0
This Ada library contains various utility packages for building Ada applications. This includes:
- A logging framework close to Java log4j framework,
- Support for INI and property files,
- A serialization/deserialization framework for XML, JSON, CSV, Forms
- Ada beans framework,
- Encoding/decoding framework (Base16, Base32, Base64, SHA, HMAC-SHA, AES-256),
- A composing stream framework (raw, files, buffers, pipes, sockets, encryption, decryption, LZMA compression, LZMA decompression),
- 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.
Documentation
utilada_aws 2.9.0 Utility Library REST support on top of AWS
2.9.0
This small library provides an HTTP backend on top of AWS.
It can be used by the Util.Http package.
An alternate HTTP backend is provided by CURL with utilada_curl.
Documentation
utilada_curl 2.9.0 Utility Library REST support on top of CURL
2.9.0
This small library provides an HTTP backend on top of CURL.
It can be used by the Util.Http package.
An alternate HTTP backend is provided by AWS with utilada_aws.
Documentation
utilada_lzma 2.9.0 Utility Library streams with LZMA support
2.9.0
utilada_unit 2.9.0 Utility Library testing framework with Ahven
utilada_xml 2.9.0 Utility Library serialization with XML/Ada
2.9.0
This library provides a serialization framework on top of XML/Ada for Ada Utility Library.
Documentation
uuids 1.0.0 Implementation of RFC 9562 Universally Unique IDentifiers (UUIDs)
1.0.0
This library is an attempt to implement UUIDs to the RFC 9562 standard located here: https://www.ietf.org/rfc/rfc9562.html
As of this writing it can identify any UUID's version or variant and create any kind of UUID in the spec:
- UUIDv1: Gregorian Timestamp with constant data
- UUIDv3: MD5-hashed
- UUIDv4: Randomly-generated
- UUIDv5: SHA1-hashed
- UUIDv6: Gregorian Timestamp with constant data with better database locality
- UUIDv7: UNIX Timestamp with random data, optimized for database locality
- UUIDv8: Custom UUIDs
All of my unit tests are passing, but am open to more tests plus additional validation on other platforms, especially big endian.
Refer to the UUIDs Readme for full description.
You can also read the full API documentation which has been generated with ROBODoc.
uxstrings 0.9.4+alpha-20260718 Unicode Extended Strings utilities
0.9.4+alpha-20260718
vanilla 0.9.8 Simple replace in character stream
0.9.8
Library of simple substitution of tags into strings in character streams and strings.
Tags could be $A, $B, $3 etcetera.
vaton 0.1.0 Verified Ascii To Number conversion written in Ada/SPARK
0.1.0
This library offers formally verified functions to convert character streams into the smallest standard type representation the resulting number may fit in. The allowed formats are based on the JSON-Number format, with the addition to allow single underscores between digits.
Note: Only decimal based numbers are supported!
Examples:
-10_000 -> Standard.Integer
1.0 -> Standard.Float
1e4 -> Standard.Float
virtapu 0.2.0 A virtual Audio Processing Unit to simulate 8-bit era game sounds
0.2.0
VirtAPU
A virtual Audio Processing Unit to simulate 8-bit era game sounds
- Arbitrary number of voice(s)
- 4 sounds:
- Pulse
- Triangle
- Noise1 (LFSR 1)
- Noise2 (LFSR 6)
- Pulse witdth modulation
- Decay
- Frequency sweep
- Sequencer
vss 25.0.0 Advanced string and text manipulation with Unicode support
25.0.0
vss_extra 26.2.0 Extra features for VSS
26.2.0
Warning - Work in Progress
This crate is based on VSS (Virtual
String System). VSS has been split into two crates:
vss_text: a library for Unicode text processing.vss_extra(this crate): libraries for handling JSON, Regexp, XML and other features based onvss_text.
Significant API changes are planned in vss_text which will likely have an
impact on this crate.
Moreover, vss_extra is planned to be further split into more focused
projects (e.g. JSON, Regexp, XML, etc.) and might ultimately disappear once all
features find a new home.
vss_text 26.2.0 A high level Unicode text processing library
26.2.0
This crate is based on VSS (Virtual
String System). VSS has been split into two crates:
vss_text(this crate): a library for Unicode text processing.vss_extra: libraries for handling JSON, Regexp, XML and other features based onvss_text.
Significant changes are planned in vss_text with the goal to make it a
high-quality, high-performance library suitable for a wide range of
applications.
The changes include the following (non-exhaustive list):
- API Changes
- Introduce an immutable string type.
- Repurpose the mutable
Virtual_Stringtype to a string builder type. - Possibly rename the root package
VSSto a new more appropriate name. Alire crate, GPR project and repository names might change accordingly.
- (done) Drop the support of multiple internal encodings in favor of a single internal encoding (likely UTF-8) for improved performance.
wayland_ada_info 1.0.0 A tool to display information about supported Wayland interfaces
1.0.0
wayland_ada_scanner 1.0.0 A tool to generate thick Ada 2012 bindings for Wayland protocols
1.0.0
wayland_client_ada 1.0.0 Ada 2012 bindings for libwayland-client and the Wayland protocol
1.0.0
wayland_cursor_ada 1.0.0 Ada 2012 bindings for libwayland-cursor
1.0.0
wayland_egl_ada 1.0.0 Ada 2012 bindings for libwayland-egl
1.0.0
wayland_protocols_ada 1.0.0 Ada 2012 bindings for various Wayland protocols
1.0.0
webdriver 1.0.0 Web Browser control API
1.0.0
webif_example 0.1.0 Example usage of simple web interface library.
0.1.0
An example simple web server built using the bbs_webif library. Once you build it, you can run it and connect to it using port 31415.
weechat_ada 3.0.1 Ada 2012 library for WeeChat plug-ins
3.0.1
whitakers_words 0.20240801.0 William Whitaker's WORDS, a Latin dictionary
0.20240801.0
wi2wic 1.1.0 Wiki to Wiki translator
1.1.0
Wi2wic is a small server that allows to convert HTML in Wiki text such as Markdown, MediaWiki, Dotclear or Creole. It can also convert one Wiki syntax to another. It can be used to:
- Migrate HTML page in Markdown or another Wiki,
- Convert Wiki page in HTML,
- Convert HTML documentation in Markdown or another Wiki,
- Cleanup a complex and noisy HTML page
The server is written in Ada and provides the following REST operations:
- import some HTML content and convert it in a Wiki syntax,
- convert a Wiki text from one syntax to another,
- render a Wiki text in HTML.
wikiada 1.5.0 Parser and renderer for Markdown and other wiki syntaxes
1.5.0
Ada Wiki is a small library that provides a parser and renderer for Markdown and several other Wiki syntaxes. The library allows to:
- Parse a Markdown text but other Wiki such as Mediawiki, Creole, PhpBB, Dotclear and Google Code,
- Parse HTML content in embedded wiki text,
- Filter out the wiki, HTML or text through customizable filters,
- Render the wiki text in HTML, text or another wiki format
The Ada Wiki library is used by Ada Web Application for the implementation of the blog and wiki online plugins and by mdshow a terminal based Markdown viewer.
wikibook 1.0.1 WikiBook Ada Programing
1.0.1
WikiBook Ada Programing
Follwing crates are incuded:
basic: Chapter Basic Ada pragmas_restrictions: Chapter Pragmas Restrictions
win32ada 26.0.0 Ada API to the Windows library
26.0.0
Due to a subpar integration of Win32Ada in Alire, any project using Win32Ada specs must also have the Win32Ada pre-processing switches.
Do this edit your GPR project file to:
- With the "shared" project from Win32Ada:
with "shared.gpr"; - Add the following switches for Ada:
(Shared.Prep, "-gnateG");
Here's what it looks like in an example project:
with "config/test_win32_config.gpr";
with "shared.gpr";
project Test_Win32 is
for Source_Dirs use ("src/", "config/");
for Object_Dir use "obj/" & Test_Win32_Config.Build_Profile;
for Create_Missing_Dirs use "True";
for Exec_Dir use "bin";
for Main use ("test_win32.adb");
package Compiler is
for Default_Switches ("Ada") use
Test_Win32_Config.Ada_Compiler_Switches &
(Shared.Prep, "-gnateG"); -- See this line here
end Compiler;
package Binder is
for Switches ("Ada") use ("-Es");
end Binder;
package Install is
for Artifacts (".") use ("share");
end Install;
end Test_Win32;
winpthreads system winpthreads library
system
wioe5_ham1 1.23340.1 Wio-E5 LoRa Transceiver Module Device Driver
1.23340.1
Introduction
This crate provides the device driver package Wio_E5.Ham1 for the Seeed Studio Wio-E5 LoRa Transceiver Module operating in test aka P2P (so-called Peer to Peer or Point to Point) broadcast mode.
See WioE5LoRaP2P.pdf for more information about the LoRa wireless system and operating the Wio-E5 module in P2P mode.
Wio_E5.Ham1 is derived from Wio_E5.P2P (see crate wioe5_p2p). It reserves the first twelve bytes of the payload for address information to implement Amateur Radio Unicast Flavor #1, which creates a amateur radio Personal Area Network, operated under a Technician or higher license, in the 33-cm band (902 to 928 MHz in the United States, 915 to 928 MHz in New Zealand, and possible allocations in other ITU Region 2 countries).
The code for this crate has been extracted from the Linux Simple I/O Library project.
API
The API for this device driver is documented in the Wio-E5.Ham1 package specification.
Wio-E5.Ham1 is a generic package that must be instantiated with two Positive value parameters, for maximum payload size (1 to 241 bytes) and FIFO queue depth. The default values for the generic formal parameters will prove satisfactory for most purposes. Depending on what kind of data you are going to be sending, you might want reduce the maximum payload size to match some other protocol, such as 64 bytes for the Remote I/O Protocol.
Minimal Test Program
WITH Wio_E5.Ham1;
PROCEDURE HelloWorld IS
PACKAGE LoRa IS NEW Wio_E5.Ham1;
dev : LoRa.Device;
BEGIN
dev := LoRa.Create("/dev/ttyUSB0", 115200, "ZZ0ZZZ ", 1, 915.0);
dev.Send("Hello, World!", 2);
dev.Shutdown;
END HelloWorld;
More example programs are available at: https://github.com/pmunts/libsimpleio/tree/master/ada/programs/wioe5/ham1.
wioe5_ham2 1.23340.1 Wio-E5 LoRa Transceiver Module Device Driver
1.23340.1
Introduction
This crate provides the device driver package Wio_E5.Ham2 for the Seeed Studio Wio-E5 LoRa Transceiver Module operating in test aka P2P (so-called Peer to Peer or Point to Point) broadcast mode.
See WioE5LoRaP2P.pdf for more information about the LoRa wireless system and operating the Wio-E5 module in P2P mode.
Wio_E5.Ham2 is derived from Wio_E5.P2P (see crate wioe5_p2p). It reserves the first twenty-two bytes of the payload for address information to implement Amateur Radio Unicast Flavor #2, which creates a amateur radio Local Area Network, operated under a Technician or higher license, in the 33-cm band (902 to 928 MHz in the United States, 915 to 928 MHz in New Zealand, and possible allocations in other ITU Region 2 countries).
The code for this crate has been extracted from the Linux Simple I/O Library project.
API
The API for this device driver is documented in the Wio-E5.Ham2 package specification.
Wio-E5.Ham2 is a generic package that must be instantiated with two Positive value parameters, for maximum payload size (1 to 241 bytes) and FIFO queue depth. The default values for the generic formal parameters will prove satisfactory for most purposes. Depending on what kind of data you are going to be sending, you might want reduce the maximum payload size to match some other protocol, such as 64 bytes for the Remote I/O Protocol.
Minimal Test Program
WITH Wio_E5.Ham2;
PROCEDURE HelloWorld IS
PACKAGE LoRa IS NEW Wio_E5.Ham2;
dev : LoRa.Device;
BEGIN
dev := LoRa.Create("/dev/ttyUSB0", 115200, "XX0XXX ", 1, 915.0);
dev.Send("Hello, World!", "YY0YYY ", 1);
dev.Shutdown;
END HelloWorld;
More example programs are available at: https://github.com/pmunts/libsimpleio/tree/master/ada/programs/wioe5/ham2.
wioe5_p2p 1.23340.1 Wio-E5 LoRa Transceiver Module P2P Mode Device Driver
1.23340.1
Introduction
This crate provides the device driver package Wio_E5.P2P for the Seeed Studio Wio-E5 LoRa Transceiver Module operating in test aka P2P (so-called Peer to Peer or Point to Point) broadcast mode.
See WioE5LoRaP2P.pdf for more information about the LoRa wireless system and operating the Wio-E5 module in P2P mode.
See the related crates wioe5_ham1 and wioe5_ham2.
The code for this crate has been extracted from the Linux Simple I/O Library project.
API
The API for this device driver is documented in the Wio-E5.P2P package specification.
Wio-E5.P2P is a generic package that must be instantiated with two Positive value parameters, for maximum payload size (1 to 253 bytes) and FIFO queue depth. The default values for the generic formal parameters will prove satisfactory for most purposes. Depending on what kind of data you are going to be sending, you might want reduce the maximum payload size to match some other protocol, such as 64 bytes for the Remote I/O Protocol.
Minimal Test Program
WITH Wio_E5.P2P;
PROCEDURE HelloWorld IS
PACKAGE LoRa IS NEW Wio_E5.P2P;
dev : LoRa.Device;
BEGIN
dev := LoRa.Create("/dev/ttyUSB0", 115200, 915.0);
dev.Send("Hello, World!");
dev.Shutdown;
END HelloWorld;
More example programs are available at: https://github.com/pmunts/libsimpleio/tree/master/ada/programs/wioe5/p2p.
wisitoken 4.2.1 Generalized error correcting LALR and packrat parser generator
4.2.1
wl_lib 0.1.4 Handy library packages
0.1.4
wolfssl 5.9.2 WolfSSL encryption library and its Ada bindings
5.9.2
wordle 0.1.1 Wordle for the terminal
0.1.1
wordlelib 0.1.0 Library to track progress in a game of Wordle
0.1.0
wordlist 0.1.3 An English word list
0.1.3
workers 0.1.0 Simple task pool for parallelization
0.1.0
x1804 1.0.2 Translate MIL-HDBK-1804 PDL into Section 4 of the DoD-STD-2167A SDD
1.0.2
xdg_base_dir 1.0.0 XDG Base Directory Specification
1.0.0
xdiff 26.0.0 This is an Ada binding and C xdiff library
26.0.0
xia 1.4.1 Implements XPath 1.0 in Ada
1.4.1
XIA is a native Ada implementation of the XPath 1.0 specification. XIA is built using the DOM component of AdaCore's XML/Ada implementation and code generated by AdaGOOP.
Submitting XPath queries is done via the XIA.XPath_Query function. The function returns a Dom.Core.Node_List, whose contents can be accessed with the function DOM.Core.Nodes.Item.
xml_ez_out 1.6.0 Creation of XML-formatted output from Ada programs
1.6.0
xmlada 26.0.0 The XML/Ada toolkit
26.0.0
xoshiro 2.0.0 xoshiro128++ and xoshiro256++ pseudo-random number generators
2.0.0
yamlscript 0.2.29 YAMLScript language binding for Ada
0.2.29
yamlstar 0.1.18 YAMLStar language binding for Ada
0.1.18
yass 3.1.0 Static website generator
3.1.0
yeison 0.1.0 A JSON-like data structure using Ada 2022 features
0.1.0
yeison_12 0.2.0 A JSON-like data structure (Ada 2012 version)
0.2.0
z_compression 20240724.0.0 Standalone version of the Zlib Deflate compression algorithm
20240724.0.0
Z_Compression
Standalone version of the Zlib Deflate compression algorithm, derived from de Montmollin's Zip-Ada
Z_Compression.Compress applies Deflate to an input stream of bytes, defined by its generic formal subprograms Out_Of_Data and Next, producing an output stream of bytes that are passed to the generic formal procedure Put. The output may be in Zlib or raw Deflate formats.
ZC_Test is a test/demo program for Z_Compression. Building it should also compile Z_Compression. It is invoked as
zc_test <file name>
No error checking or handling is done. It compresses the given file into a Zlib format file. The output file name is the input file name with ".zc" appended.
zbinfo 2.0.0 Display localization information for ZanyBlue Ada Localization
2.0.0
zblib 2.0.1 Library for ZanyBlue Ada Localization
2.0.1
zbmcompile 2.0.0 Message compiler for ZanyBlue Ada Localization
2.0.0
zbtest 2.0.0 Testing utility for ZanyBlue Ada Localization
2.0.0
zeromq_ada 4.1.5 An Ada-binding the ØMQ library
4.1.5
zipada 62.0.0 Manage Zip Archives and raw BZip2 and LZMA streams
62.0.0

Zip-Ada is a free, open-source programming library for dealing with the Zip compressed archive file format. The full sources of Zip-Ada are in Ada, compilable on every compiler and for every system (*).
Key features of Zip-Ada:
- Files and streams supported, for archives and entries, for compression and decompression
- Task safe
- Endian-neutral
- Standalone
- Zip methods supported for compression: Reduce, Shrink, Deflate, BZip2, LZMA.
- Zip methods supported for decompression: the above methods, plus: Implode, Deflate64
- Library is in pure Ada 2012 (nothing compiler/system specific), can be used in projects in Ada 2012 and later versions of the language
- Unconditionally portable: OS-, CPU-, compiler- independent code (*)
- Tests and demos included
- Free, open-source
The library includes LZMA & BZip2 independant encoder & decoder pairs (can be used outside of the Zip archive context).
Note that the BZip2 encoder is the best of its kind in terms of compression ratio!
(*) within limits of compiler's provided integer types and target architecture capacity.
zipdcf 2.0.3 Tools that can (un)zip document container files, Zip-based archive files
2.0.3
zlib system Library implementing the deflate method from gzip/PKZIP
system
zlib_ada 1.3.0 ZLib for Ada thick binding
1.3.0
zoneinfo 1.1.1 Ada 2022 timezone library for zone calculations and durations
1.1.1
No packages match
Use a shorter search term or select all package types.
