notcursesada
cortex-gnat-rts
notcursesada | cortex-gnat-rts | |
---|---|---|
1 | 7 | |
11 | 60 | |
- | - | |
1.5 | 2.7 | |
about 1 year ago | about 1 year ago | |
Ada | Ada | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
notcursesada
-
Gnat 2021 GPL Community Edition Ada 202x compiler released
* Is there a way to declare data layouts to have compatibility with C, similar to #[repr(C)] in rust?
Yes, and if you have a C header file, gcc can even translate most struct definitions for you. Here's an example of a "thin" binding generated that way: https://github.com/JeremyGrosser/notcursesada/blob/master/sr...
* Is there a way to catch C++ exceptions?
Yes. https://www.adacore.com/gems/gem-114-ada-and-c-exceptions
* Is there a way to catch C longjmps()?
By default, the GNAT runtime uses setjmp/longjmp to implement exceptions. I'm not sure how you'd connect that to a C library's setjmp though.
* Is there a way to have some kind of custom control over ABI issues, e.g. define custom FFIs to langauges with a different ABI? Or anything close to this? For that matter, does any language have something like this or does it not make sense?
ABIs are selected with the Convention aspect. Conventions are implementation defined and would require patches to the compiler to add new ones. GNAT currently supports Assembler, C, CPP, COBOL, and Fortran calling conventions.
cortex-gnat-rts
-
Writing Startup Code for STM32 in Completely Ada
Also, u/simonjwright 's cortex-gnat-rts was most helpful.
-
Define project-wide allocator on bare application.
You could look at providing your own version of System.Memory - this was easy enough in an embedded system with a restricted runtime, but much hairier in full Ada.
-
Ada on ESP32 and FreeRTOS
It includes a customized GNAT RunTime (besed on cortex-gnat-rts) and a ESP32 toolchain binaries. It's integrated in Espressif IoT Development Framework build system.
-
Clarification on Finalization
I looked into finalization without exceptions for Cortex GNAT RTS, branch finalization, not touched since 2018; not too difficult (largely reinstating stuff I’d cut out because of restriction No_Finalization).
-
Spunky (Kernel written in Ada) #4: Kernel Timing
What I had in mind was the usage generated by AdaCore’s SVD2Ada, e.g. the register without the pragma, and the place in the wider data structure in which it’s used, with the pragma.
-
Array copies on bare metal using GNU GNAT generate library calls
This code, which I unthinkingly wrote thinking "how clever!", in fact calls memcpy() and memset() under the hood, which works because the compiler was built including Newlib.
-
Please explain secondary stack to a C programmer!
.. and a simple version here.
What are some alternatives?
adaspark
esp32-gnat-rts - This project contains various GNAT Ada Run Time Systems (RTSs) targeted at Cortex boards: so far, the Arduino Due, the STM32F4-series evaluation boards from STMicroelectronics, and the BBC micro:bit
pico_examples - Ada examples for the Raspberry Pi Pico
svd2ada - An Ada binding generator from SVD descriptions for bare board ARM devices.
evdev-ada - An Ada 2012 library to read input events and use force-feedback using Linux' evdev API
Ada_Drivers_Library - Ada source code and complete sample GNAT projects for selected bare-board platforms supported by GNAT.
ada-spark-rfcs - Platform to submit RFCs for the Ada & SPARK languages
bingada - Bingo application in GTKAda
gcc
ada-spark-rfcs - Platform to submit RFCs for the Ada & SPARK languages
bare_bones - Ada Bare Bones OS development tutorial source code