POLL: What are the top three most needed open-source crates for Ada 2022?

I am between projects and looking for something interesting to work on… So:

What are the top three most needed crates for Ada 2022?

======================================================================

Please check out my recent contributions to GitHub and Alire:

  • Functional: Functional programming library
  • Hybrid_App_Ada: Reference model for hybrid app with DDD+Clean+Hex+DIP architecture
  • Hybrid_Lib_Ada: Reference model for hybrid lib with DDD+Clean+Hex+DIP architecture
  • TZif: IANA timezone information file (tzif=compiled) database query engine.
  • ZoneInfo: Timezone-aware datetime arithmetic, civil time conversions, and human-readable duration formatting built on IANA timezone data

4 Likes

I doubt anyone is going to do this, but man it would be neat to have Ada bindings for Godot.

Like how there are now really good rust bindings: GitHub - godot-rust/gdext: Rust bindings for Godot 4

Just going to throw stuff at the wall here.

  1. Algorithms, math libraries, Dictionary of Algorithms and Data Structures , I’m not suggesting that you go and add all of it, and even if you did I would probably stubbornly stick with my own implementations, but a basic algorithm library would be something nice that other programmers may like. I linked the us gov website, it’s better than wikipedia for indexing that information on one page in my opinion. I guess this is two suggestions in one, a basic algorithm library, and a basic data structure library. Maybe skip the data structure library completely because Ada’s type system might be better to just implement custom ones? I don’t know what I’m talking about.
  2. Something that could map out memory locations to make a visualizer, or grab more memory related information. I’m spitballing here please forgive me :sweat_smile: .

I have now run out of ideas.

Since you are interested in functional programming, you might be interested in logic programming for Ada. Consider, for example, the LC++ library that adds statically-typed, compiled logic programming to C++ and is built on top of a functional programming library for C++. (I haven’t used it, so I don’t know if it is any good.) There exists a Prolog engine for Ada, but it is an interpreter.

Logic programming can relieve programmers of the task of writing search code in some cases in a similar way as using relational databases and queries but without needing explicit foreign keys or table joins.

One possible approach to achieving logic programming for Ada might be to write an Ada backend to the Mercury Logic Programming System, a system implementing a statically-typed, compiled language designed for high performance. Its backends compile (transpile) to one of C, Java, or C# and can seamlessly integate with code from those languages. The system could be used from Ada via its C backend, but it calls exit on fatal errors rather than returning control to the host program in which it is embedded. Its memory management strategy might also not be conducive to some projects. Of course, modifications could be made to the C backend instead of writing a new backend in Ada. I am considering doing that in the future.

Someone started that ages ago, don’t know what happened to it.

I have something started there, thinking about making it generic.

1 Like

There are interesting ideas in this topic: Ada library wishlist

1 Like

A central searchable and maintained database of Ada solutions would be useful.

E.g. the list starts with HTTP unaware that an Ada HTTP implementation exists since 2013:

1 Like

I know that you don’t like Alire and you didn’t create the crate for simple_components, but that database is already found in the Alire community-index. You only have to add appropriate tags and a description to the crate entry.

Other catalogues that can be used are certain websites that discover and categorize open-source repositories (you can also manually add them), but I think they require a repository and your components doesn’t seem to be on a public one. Examples: https://www.libhunt.com/l/ada, Open Hub Projects

No, as I explained many times making crates for Simple Components is technically not possible. Alire lacks some elementary functionality for that. BTW there was no Alire in 2013 AFAIK.

That is not same. Neither project name nor its description would give you right answer. What was the last time you searched a RPM repository for anything? Once you reach some size it becomes a fool’s errand. In 90’s you would get all Linux packages on a CD and simply scrolled them down looking for what you needed. Then it exploded, geometrically. Alire is just not yet there.

They are useless. You do not need a list of projects as I explained. You need lists of features. Example: “find me projects that provide an approximation of Bessel function [in Ada].” Start with that. Or what about finding Ada run-time for a board XYZ with clock support?

They require THE repository. Simple components are packaged as Deb, RPM repositories. Stored in SourceForge. Why do you think the repository would survive when Microsoft would roll out something new?

Since search engines became totally useless we must return back to manually maintained catalogues they killed.

Ada engineers have the opportunity to fix the problems plaguing society due to development languages unsuited to the applications we all depend on. My wish list focuses on well designed, widely used, applications that are implemented with high level scripts on top of custom C-libraries.

It would be straight forward to re-implement these libraries in Ada. The availability of powerful AI coding tools would make this feasible at low cost. If you are wondering, YES these tools speak Ada and code amazingly well.

To be clear, I’m not speaking of Ada bindings here, they already exist. I suggesting total Ada base kernels compatible with the existing Hi-level Code.

So here are my three suggestions:

  1. SQL Lite
  2. QuickJS Javascript Engine

  3. https://octave.org/

I’m sure there are others, maybe better. I look forward to building my projects with just an Ada compiler.