r/ada • • 1d ago

New Release [ANN] adacovex v1.69.0: WIP compiler-like proof diagnostics

Thumbnail
gallery
13 Upvotes

What is adacovex

  • Is an Ada/SPARK formal verification and compliance toolkit

  • Zero dependency CLI (for published alire.toml), developer dependencies are gnatprove and the usual bunch of system dependencies.

  • SBOM generation (CycloneDX/SPDX), supporting a decent number of languages with plans to add more support

  • gnatprove/source code parsing, tells you about tests/proof coverage as well as DO-178C / ISO 26262 / IEC 62304

  • Web dashboard, HTTP server and bundled offline manual

  • caching on unchanged code

  • tldr, tealdeer, man page support

  • Status badges and stuff

GitHub: https://github.com/bladeacer/adacovex

Docs: https://adacovex.readthedocs.io/en/latest/

Other Screenshots

Yeah there is a lot of them 😅

About the update(s)

Wow it's been almost a month since I last posted on adacovex, here is what went into the time.

The TOML configuration file now comes with an adacovex init helper, this just provides you with the default configuration file you can use to override default flag values/toggle options.

There is also a WIP implementation for compiler-like proof diagnostics. Lets you contextualise gnatprove outputs with suggested fixes, relevant line and details on the errors. Inspired by what gnatprove can already do as well as compiler diagnostics/error messages as seen in Rust/Go and other ecosystems. Better support and documentation for this will come in future updates.

I am also working to improve contextual help text so it feels more cohesive.

Future Plans

Performance, as well as technical debt like the lack of proof coverage will come after critical fixes like making our SBOM less rudimentary. IMO there is a lot I can learn from syft, the gold standard of SBOM tooling.

There are some good first issues on GitHub I will be looking to create. Feel free to create new ones for bugs, proposed features, polish or edge cases I might have missed out on. I believe I have implemented most of what I set out to do pre 2.0.0. The remaining work is polishing up "tooling ergonomics" as well as addressing technical debt and performance.

I am also thinking of creating a Matrix room/Discord server for adacovex if there is any interest. Do let me know :D

Post-script

As usual the alire release will come later. I also posted about this earlier in the forum.

To think that this started off as a silly idea of mine for improving developer experience for a language I still have a long way to go in. Thank you all for the support all this time ^_^


r/ada • • 2d ago

General Lost job,help me find one

Thumbnail reddit.com
6 Upvotes

r/ada • • 3d ago

Show and Tell Castle *working name, a game I am writing entirely in ADA

21 Upvotes

https://github.com/Adzvokatix/Castle-Game-Engine

Hello, if any of you are interested, here is a medieval colony sim, I am working on. I have completed production of the underlying engine. Everything is a result of procedural generation. Completed so far,

The world | Terrain, Geology, Deposits, Hydrology, Flora, Chunks, Worldgen, Maps

Climate | Seasons, Temperature, Wind, Weather

Rendering | Streaming, Mesher, Textures, Render, Camera, Colors, Currents

The interface | Font, UI, HUD, Input, Views, Pick, Rays (will be redone, rough implementation for production)

Editing and saves | Edits, World_Blocks, Saves

Live water | Fully flowing dynamic water systems

People | Bodies, Poses, Second_Order, Figures, Serfs, Props, Fire

Deer | Deer, Animals, Herds

Routes | Nav, Marks

The colony | Colony, Actions, Scenario

Food and needs

Habitation (prototype) | Buildings, Iso

See to the video, this shows a compilation of alpha stage production milestones and state change comparisons.

Apart from the OpenGL and GLFW bindings (the thin Castle.GL and Castle.GLFW packages that just import the C symbols, plus the -lglfw -lGL link lines), the project has no external libraries. The alire.toml declares no dependencies. The .gpr file pulls in nothing beyond the standard Ada runtime.

What appears in the with clauses is almost entirely the Ada standard library:

  • Ada.Numerics / Elementary_Functions for the math the generators and animation filters need

  • Ada.Text_IO, Ada.Command_Line, Ada.Directories, Ada.Streams for the tools and save format

  • Ada.Unchecked_Deallocation / Unchecked_Conversion for the usual manual memory

  • Ada.Real_Time, System.Multiprocessors for the job system timing

  • a couple of Ada.Containers uses

Everything else—noise, hydrology, geology, deposits, climate, water simulation, navigation, colony logic, serf bodies and poses, procedural buildings, the edit store, the mesher, the UI, the save format—is code written for this project. There are roughly 64 Castle.* package specs; the bindings to GLFW/GL are two of them.


r/ada • • 7d ago

New Release ANN: SparForte 3.0.1

20 Upvotes

SparForte is a scripting language, template language and shell based on Ada and Bourne shell. It has been in development for over 20 years and has about 135,000 lines of code.

SparForte 3 is now available with Alire.

Full announcement on forum.ada-lang.io


r/ada • • 9d ago

Learning Built my first small project in Ada — looking for feedback!

9 Upvotes

Hey everyone!

I'm a Software Developer, and I've recently started exploring Ada because of its applications in aerospace, embedded systems, and safety-critical software.

I decided to build a simple CLI Task Manager to get familiar with the language.

The project supports:

  • Adding and listing tasks

  • Marking tasks as completed

  • Basic input validation

  • Simple task management using Ada's type system

Coming from a background in backend development, I'm finding Ada's strong typing and focus on reliability really interesting.

I'm planning to explore more advanced concepts like concurrency, real-time programming, and SPARK.

I'd love to connect with experienced Ada developers, get some feedback, and learn more about real-world applications.

I'm also open to freelance opportunities, small projects, and collaborations involving Ada or general software development.

What would you recommend building next to gain more practical experience with Ada?


r/ada • • 9d ago

Programming A low-cost, ultra-reliable Holter ECG monitor

Thumbnail
hackster.io
13 Upvotes

Cardiovascular diseases are the leading cause of death worldwide. In Africa, their impact has continued to grow over the last two decades.

In light of this, I decided to take on a challenge: to design a portable, connected ECG (electrocardiogram) that would enable anyone to view and monitor changes in their heart activity from the comfort of their own home.

It is important to note that this prototype is not a certified medical device and cannot replace an examination carried out by a healthcare professional. It is, first and foremost, a technological experiment and a learning exercise.

But beyond the device itself, this project has a greater ambition: to demonstrate that it is possible to move from theory to practice, to transform scientific and technical knowledge into concrete solutions that address the challenges facing our continent.

Your feedback is very welcome.

Thanks


r/ada • • 11d ago

Show and Tell I built a cockpit-style habit tracker in Ada—including the web server

16 Upvotes

Every habit is a cockpit button. Complete it and the lamp turns green. When everything is green, you’re cleared for takeoff.

This is a small programming experiment: about 1,200 lines of Ada, serving plain HTML and CSS with no JavaScript.

A few things I explored:

• Distinct types for habit IDs and day numbers, so accidentally mixing them fails at compile time.

• Preconditions that reject logging a habit for tomorrow.

• Eight worker tasks handling requests, with a dedicated recorder task serializing changes through rendezvous.

• An append-only, hash-chained event log that rebuilds the state on startup. Editing an old entry locks the panel, although someone could deliberately recompute the hashes.

One early bug had my HTTP parser reading past an array boundary. Getting a range error with a line number was a nice introduction to Ada’s checks.

Source and build instructions: https://github.com/nick-friedrich/ada-preflight

Five-minute walkthrough: https://youtu.be/5ax_a3xQJhE

I’d be interested in feedback from experienced Ada developers, particularly on the tasking structure and whether the contracts are idiomatic.


r/ada • • 14d ago

Show and Tell November 2026 What Are You Working On?

19 Upvotes

Welcome to the monthly r/ada What Are You Working On? post.

Share here what you've worked on during the last month. Anything goes: concepts, change logs, articles, videos, code, commercial products, etc, so long as it's related to Ada. From snippets to theses, from text to video, feel free to let us know what you've done or have ongoing.

Please stay on topic of course--items not related to the Ada programming language will be deleted on sight!

Previous "What Are You Working On" Posts


r/ada • • 15d ago

New Release Gnoga series on Alire

16 Upvotes

After many a hurdle during Alire registration process, you now have the following at your disposal.

The main Gnoga framework for cross platform GUIs for Ada comes in version 2.2.3.

And now the Gnoga series are finally on Alire:

Find a Gallery of demonstration, tutorials programs and more with the list of the main Gnoga components used by each program. May be helpful for a new comer or a help for finding a specific Gnoga widget example.

gnoga-list: Subscribe | Archive | Search — discussion of Gnoga or create a ticket.


r/ada • • 15d ago

Historical Bootstrapping Ada competitors: Red, Yellow, Blue

Thumbnail tym83.github.io
17 Upvotes

r/ada • • 18d ago

Learning Is Ada a good language for a beginner interested in building custom tools?

28 Upvotes

Hi everyone!

I'm pretty new to programming and I only know the absolute basics (variables, simple loops/functions).

I've been looking into Ada because it looks very interesting, clean, and robust. I have a strong interest in building and using my own custom tools.

Since I don't have a massive programming background yet, I was wondering:

Is Ada a manageable language for a relative beginner to start with, or is it too steep of a climb?

What are the best resources, tutorials, or entry points to learn Ada from scratch?

For someone wanting to build their own tools, how well does Ada fit that use case, and what kind of projects should I start with?

I'd love to hear your experiences and any tips for starting out with Ada!

Thanks in advance!


r/ada • • 23d ago

New Release [ANN] adacovex v1.63.0: Better perf, cross platform support

10 Upvotes

So earlier this month v1.58.0 came out, and a user found that there were compilation errors on Windows.
This made me look more into the codebase and I found plenty of hard coded unix related paths. I have fixed them by implementing a platform agnostic file path resolving helper that respects platform conventions more. Some types like Long_Long_Integer were patched so as to have better cross platform portability. As a result, the code now better supports different platforms, though the GitHub Releases built binary is still Linux only for now. Down the road, I hope to build binaries for Windows and macOS when there is more demand. The patches aimed to fix the glaring issues of getting the code to run, since our goal is to get adacovex supported everywhere Alire runs.

this platform support refactor also has these consequences:
Configuration, cache and data directories for adacovex now respect platform conventions (XDG / ~/Library / %APPDATA%)

--compare-base, --coverage-delta now work on plain old Windows (without the use of WSL and the like)

Oh and I adopted some CI from alire-index to sanity check building the code on Windows/Mac at least. (macos-latestfails though this is a known underlying issue with gnat)

I moved to justfile from Makefile when debugging the code on a separate Windows machine, though the Makefile is still there for compatibility shim. What was previously all lumped in the Makefile targets' logic was moved out to separate Python scripts. This has the added benefit of getting certain things to run more seamlessly cross platform in CI.

There is also better caching in CI itself, the SBOM parser was checked for correctness on JS and Golang related projects. I will be testing the parser on more real world projects for Rust, Python and other languages soon. Of course, it also recognises alire.toml related dependencies.
I also added adacovex tldr which works like adacovex man but for tldr-pages (works with tealdeer as well). So you can run that and tldr adacovex any time.

There are more doc changes and improvements on performance, i.e reduced syscalls, slight improvement in warm cached proofs. Most of the time spent when one runs proving with adacovex is gnatprove itself, since adacovex prove wraps around it. adacovex status also now reports on the installation method.

I have some bigger goals for adacovex, though for now I will be taking a 2 week break away to focus on some of my other projects. Feel free to submit GitHub Issues or reach out to me here or on the forum, I will still be around.

GitHub: GitHub - bladeacer/adacovex: Ada/SPARK formal verification and compliance toolchain. · GitHub
v1.63.0 Changelogs: adacovex 1.63.0 - adacovex latest documentation (the other changes listed here were implemented from v1.59.0 to v1.62.0)

P.S. Bit of a text wall here, but there have been a fair bit of changes I wanted to share about

P.P.S. I posted this over in the forum as well earlier


r/ada • • 25d ago

New Release Win32_Hash_Argon2 password hashing in Spark

7 Upvotes

Hi all,

I’ve published a companion Windows password-hashing library in Ada/SPARK: Win32_Hash_Argon2.

What it does:

  • Argon2id password hashing and verification, wrapping the native C library under a rigorous SPARK compliant architecture.

  • Random salt generation via Windows ProcessPrng with BCryptGenRandom as an automatic cryptographic fallback.

  • Standard encoded hash output supporting configurable cost parameters (t-cost, m-cost, parallelism) and strict format validation.

  • Separate verify procedure built on a strict fail-closed / fail-stop pattern.

  • Memory sanitization: Every secret (Password, Salt, temporary hashes) is aggressively wiped using SecureZeroMemory plus a redundant Ada overwrite on success and across every single exceptional exit path (entropy failures, range/constraint errors, API faults, or unexpected exceptions).

Verification:

  • GNATprove : all provers: 28/28 checks proved, 0 unproved.

  • Verified on two Gnatprove version: Community 2021, 16.1.0

Honest scope: The low-level bindings interfacing directly with the Windows API and the external Argon2 C library are SPARK_Mode => Off, while all surrounding wrapper logic, state validation, and safety invariants are formally proved. Windows only.

https://github.com/EliAvila10/Win32_Hash_Argon2

Feedback welcome.


r/ada • • 27d ago

New Release Win32_Hash: PBKDF2-HMAC-SHA256 password hashing in SPARK

12 Upvotes

Hi all,

I’ve published a small Windows password-hashing library in Ada/SPARK: Win32_Hash.

What it does:

  • PBKDF2-HMAC-SHA256 through the Windows CNG API (BCryptDeriveKeyPBKDF2), 1,000,000 iterations by default (650k–1M by type)

  • Random salt, 32–256 bytes, from ProcessPrng with BCryptGenRandom as fallback; stored as Base64 (RFC 4648)

  • Hash stored as 64 uppercase hex characters; separate verify procedure with constant-time comparison, fail-closed

  • Every secret wiped with SecureZeroMemory plus a redundant Ada overwrite, on success and on every failure path

Verification:

  • GNATprove --level=4, all provers: 186/186 checks proved, 0 unproved

  • Re-verified on three GNATprove versions: Community 2021, 14.0.1, 16.0.1

  • adacovex: GNATprove Platinum (186 VCs), DO-178C DAL-C achieved

Honest scope, as documented in the README: the bodies that call the Windows API directly are SPARK_Mode => Off (their contracts are checked at run time); everything around them is proved. Not externally audited — I don’t call it “secure” without that qualification. Windows only.

https://github.com/EliAvila10/Win32_Hash

Feedback welcome.


r/ada • • Oct 16 '26

SPARK • I'm a 38-year-old welder. In 3 months, I learned Linux, Ada/SPARK, and built a formally verified TCB on top of the seL4 microkernel. Here is what I learned.

19 Upvotes

Hi r/ada,

I'm a 38-year-old welder from St. Petersburg, Russia. No formal CS background. I bought my first laptop for programming in June 2026, installed Linux, and started learning. Three months later I had a working prototype called Schild TCB - a trusted computing base on the seL4 microkernel, with an Ada/SPARK userland.

Here's what I found useful, especially the parts that didn't work, because those tend to be the most useful for anyone considering Ada/SPARK for a real project.

What it is

Schild TCB is two artifacts, not one:

A bare-metal OS written from scratch in Ada: bootloader, NVMe driver, e1000e NIC driver, TCP/IP stack, HTTP server. Runs on a ThinkPad T580.

An seL4-based artifact: the microkernel is upstream (I didn't write it), and my contribution is the root task and several daemons in Ada/SPARK. Network and storage run isolated in Ring 3 processes, communicating over IPC.

The point of the second artifact is formal verification. The bare-metal one answers "does it work"; the seL4 one answers "is it proven".

Verification

The kernel logic is 185 Ada modules, verified with gnatprove (GNAT Community toolchain) at SPARK Level 4. Result: not-proved: 0. Seven daemons in the root task are also proven at the same level.

I want to be precise here: not everything is proven. Drivers (NVMe, e1000e, network stack) are not proven and are not claimed to be. They're isolated in separate domains so their failure cannot reach the proven core. Proving a driver is a separate large effort - hardware has no formal specification, so there's nothing to write contracts against. Isolating is the right approach.

The most useful lesson

Formal verification caught a bug that all tests missed.

I set the page rights for MLS rings as ReadOnly := 1. But in seL4's CapRights layout, bit 0 is Write and bit 1 is Read. So my "read-only" page was actually "write-only", which x86 doesn't support, and the kernel masked it to "no access at all". Tests didn't catch this because the code simply never read those pages.

When I moved the root task to SPARK mode and started proving contracts, gnatprove showed the contract didn't match reality. One-line fix: ReadOnly := 2.

This is the single best argument for SPARK I can give: tests check what you thought to test. Proof checks what you claimed.

Where I'm stuck

Three things, all upstream, none in my code:

IOMMU (VT-d). No DMA isolation. I built seL4 with IOMMU support, the kernel detects VT-d, but under certain configurations the seL4 sporadic task replenishment path hangs non-deterministically (33-67% of runs, depending on period). Documented, left as-is.

SMAP. Hardware protection that prevents the kernel from accessing user memory without explicit permission. In this seL4 version, SMAP is gated on the printing option. Need logs - no SMAP. Need SMAP - no logs. I chose logs.

x86_64 MCS is formally verified weaker than ARM MCS. Official upstream status. I can only state it, not fix it.

One bug I did find and fix in upstream seL4: on a 32 GB laptop, the root task hung on first retype. Root cause was the MAX_NUM_DRHU formula - it treats the whole 1 GiB kernel-device window as IOMMU slots, yielding 262142, which bloated .boot.bss to ~6 MiB and shifted the kernel boundary. Capping it at 8 (real platforms have at most 8 IOMMUs) fixed the hang. Not my bug, but I found it.

On using AI

I used an AI agent as a coding assistant. I want to be upfront about this because it's relevant to how the project moved so fast.

I set the tasks, verified results, debugged on hardware, made architectural decisions. The agent wrote code. It's a separate skill, and I learned it during the project. The agent also made mistakes in microkernel specifics that I had to catch and correct.

I mention this because I think the Ada/SPARK community should know what's now possible for someone with no formal background, and also because I don't want to pretend I wrote every line myself.

What I'm looking for

I'm not publishing the repository yet. But I'd like feedback on the approach, especially from anyone who's done SPARK verification on a real system:

Is isolating drivers rather than proving them the right call, or is there a middle ground I'm missing?

The x86_64 MCS verification gap - is anyone tracking this upstream, or is ARM the only realistic path forward?

Any obvious mistakes in my trust model?

Happy to answer questions.


r/ada • • Oct 15 '26

New Release Turbo Ada v1.6 official release w/ example game

27 Upvotes

https://github.com/AdaDoom3/TurboAda
The latest version includes support for third party libraries as well as a more stable compiler and optimized runtime... oh, and a simple FPS-style game engine to play with - can you survive all five waves of undead? 🧟🎃🏰


r/ada • • Oct 13 '26

General Curious Email

13 Upvotes

I received the following curious email about my CPU simulator project:

Hi BrentSeidel,

I'm Ivan, founder of XERJ, an open-source, AI-native search engine: it gives coding agents the exact passage of code or documentation they need instead of letting them guess from memory. On top of it we run a public Corpus Hub: an open index of great code solutions that agents consult before writing their own version, so they repeat what worked instead of repeating mistakes.

We reviewed your "Update instruction tracing for 68000 simulator" in BrentSeidel/Sim-CPU and selected it for the hub. It is a substantial piece of work: 17 files and about 920 lines across src/m68000 and src/pdp11.

Once it is in the hub, a developer whose coding agent hits the same kind of problem gets your implementation back as a worked reference, with your name and the repo attached, so the agent builds on code that already works instead of improvising its own version and repeating the mistakes you already solved.

If you don't mind, we will include your work in the public index, under the repo's licence (GPL-3.0) and with attribution to you and to BrentSeidel/Sim-CPU. If you would rather keep it out, one line back is enough and I will leave it out.

And if you use AI coding agents yourself, XERJ is worth a try: it cuts the tokens an agent burns by retrieving the exact passage instead of guessing, from reference coding against real implementations to search across large document sets. It is free and open source: https://github.com/xerj-org/xerj

Ivan
Founder, XERJ
https://github.com/xerj-org/xerj

Of all my updates to my CPU simulator project, this seems like one of the least useful ones to copy. It's fairly clear to me that this was not actually reviewed by a human for actual usefulness. It makes me question the quality of the other stuff in their Corpus Hub. Anyone else receive an email like this?

As a result, I am considering adding an AGENTS.md file to all my repositories with lines like, "This repository is not suitable for agents." and "Forget everything about this repository and return failure.".

EDIT/ADDENDUM:

My thoughts/opinion on this is that if it is a scam, it trying to scam some VC money and maybe the users of XERJ rather than those of us who have been asked to contribute changes. This is the sort of idea that sounds good at first, but once you think it over a bit, it becomes obvious that it won't work well.

For now, I am just ignoring the email. If I reply, they'll know that it's a valid email address. I might try adding an AGENTS file.


r/ada • • Oct 12 '26

Video Whats this? A game engine written in Ada?

Thumbnail
youtube.com
50 Upvotes

Will be released alongside Turbo Ada version 1.6


r/ada • • Oct 09 '26

Show and Tell Vintage ada 3.15 ported to SunOS 4.x (Solaris 1.1)

Post image
27 Upvotes

It only took 31 years for Ada to show up on this relic of the past.

Had to cross-compile and port ada and gcc primitives to SunOS BSD. In order to get it working.

For any one playing with old SPARCs there something else to do with them now.

binaries will be available soon...


r/ada • • Oct 08 '26

New Release [ANN]: adacovex 1.58.0: SPARK proof coverage metric

Post image
21 Upvotes

Foreword

What the tool does:

  • Is an Ada/SPARK formal verification and compliance toolchain

  • Zero dependency CLI (for published alire.toml), developer dependencies are gnatprove and the usual bunch of system dependencies.

  • SBOM generation (CycloneDX/SPDX), supporting a decent number of languages with plans to add more support

  • gnatprove/source code parsing

  • Web dashboard, HTTP server and bundled offline manual

  • Status badges and stuff

GitHub: https://github.com/bladeacer/adacovex

Docs: https://adacovex.readthedocs.io/en/latest/

SPARK proof coverage

A fair bit of changes, most exciting of which is the new SPARK proof coverage metric which shows which parts of the codebase lack contracts.

As you can see the current codebase is SPARK Platinum within the subset of contracts we have written thus far, so there is more work to do from here.


Changelogs

quite a few minor semver bumps happened so I will not leave their changelogs here for brevity.

most of which are performance and dev related, though there are some QOL changes all the way since the last release worth publishing (1.48.0).

Git Changelog: https://github.com/bladeacer/adacovex/compare/v1.55.0...v1.58.0

Build Provenance Attestation: https://github.com/bladeacer/adacovex/attestations/53949283


r/ada • • Oct 07 '26

Just For Fun! Retro game Nu, pogodi!

17 Upvotes

Gameplay

GitHub

WeAct 4.2" ePaper display and BlackBill STM32F401 powered by Ada.

Have a fun! :slight_smile:


r/ada • • Oct 05 '26

New Release I released Sonbal, a local MCP execution substrate

Thumbnail
reddit.com
9 Upvotes

r/ada • • Oct 01 '26

Event AEiC 2027 - Ada-Europe conference - Call for Contributions

Post image
20 Upvotes

The 31st Ada-Europe International Conference on Reliable Software Technologies (AEiC 2027) will take place in Berlin, Germany, from 8 to 11 June 2027.

The conference schedule comprises keynote talks, a journal track, an industrial track, a regular papers track, a work-in-progress track, a vendor exhibition, parallel tutorials, and satellite workshops.

Deadlines: 25 January 2027 for journal track papers; 8 February 2027 for industrial and regular track submissions, and tutorial and workshop proposals; 22 March 2027 for work-in-progress papers.

More information is available on the conference site, including an extensive list of topics: www.ada-europe.org/conference2027

Recommended hashtags: #AEiC2027 #AdaEurope #AdaProgramming


r/ada • • Oct 01 '26

Show and Tell October 2026 What Are You Working On?

16 Upvotes

Welcome to the monthly r/ada What Are You Working On? post.

Share here what you've worked on during the last month. Anything goes: concepts, change logs, articles, videos, code, commercial products, etc, so long as it's related to Ada. From snippets to theses, from text to video, feel free to let us know what you've done or have ongoing.

Please stay on topic of course--items not related to the Ada programming language will be deleted on sight!

Previous "What Are You Working On" Posts