[Announce] GNAT Runtime for ESP-IDF 0.1.0

:rocket: Announcing: GNAT Runtime for Ada & SPARK on ESP32

I’m excited to share the latest updates for the espidf_gnat_runtime project!

This runtime allows you to run embedded applications by leveraging the core features and underlying drivers of the ESP-IDF (Espressif IoT Development Framework) on various ESP32 SoCs. By using the proven foundation of the ESP-IDF to support the Ada/SPARK environment, you get the best of both worlds: industry-standard hardware support and the world’s most advanced safety-critical programming language.

:electric_plug: Supported SoCs

  • RISC-V: ESP32-C3
  • Xtensa: ESP32-S3

:hammer_and_wrench: Key Features

  • Concurrency: Support for Ada tasks and protected objects within the requirements of the Jorvik profile, ensuring predictable and efficient multitasking.
  • Language Core: Comprehensive support for Exceptions, Controlled types, and Secondary stack for robust memory management and error handling.
  • Standard Library: Includes a rich set of the Ada Standard Library:
    • Ada.Containers (Vectors, Maps, etc.)
    • Ada.Numerics (Elementary functions, Random numbers)
    • Ada.Strings (Fixed, Bounded, and Unbounded)
  • Verified Quality: The runtime is rigorously tested with ACATS (Ada Conformity Assessment Test Suite) to ensure language compliance and reliability.

:shield: Why Ada & SPARK on ESP32?

By utilizing SPARK, you can move beyond traditional testing to formally prove the correctness of your code and the absence of runtime errors. This makes it an ideal choice for industrial automation, secure gateways, and high-reliability IoT devices where failure is not an option.

:chequered_flag: Get Started

Ready to build? We’ve provided several ways to jumpstart your development:

  • Project Templates: Use our pre-configured templates for both ESP32-C3 and ESP32-S3 to get a working environment in minutes.
  • Agent Skill: Use the dedicated agent skill to automate the creation of new projects, handling the boilerplate so you can focus on your logic.
6 Likes

And just today the ESP32-S31 was announced and it is based on RISC-V! https://www.youtube.com/watch?v=5vH7yJADBBQ

I may try to improve the runtime to support the C6 as that is the one I have, but no promises.

Best regards,
Fer

1 Like

Contributions are welcome!

To port runtime to ESP32C6 copy runtime-esp32c3.json to runtime-esp32c6.json, replace "-march=rv32imc" by "-march=rv32imac" and it is should be done. Also, SVD file need to be added to svd directory.

To create real project you can start from ep32c3_template, replace c3 by c6 in the alire.toml and hope it is.