Ada library wishlist

See PragmARC.Safety.Pointers

See PragmARC.Line_Fields, and also Issue #13 relating to it.

I outlined how these would work once, on c.l.a. IIRC. Of course, it depends on if you want text, homogeneous binary, or heterogeneous binary. I’ll look into implementing one to see if people use it.

I‘d be interested. :slight_smile: You’re using GNAT.Sockets as a base? (I‘m about to start writing a port scanner for the fun of it; that’s one of the codingchallenges.fyi…)

No. I wrote a binding for POSIX Sockets and then wrote a decent library over that. It’s finished, but I’m considering adding non-blocking versions of the Get procedures. Considering that only one UDP System_Resource will be needed for most programs, and because I’m to understand that blocking will only affect the task using the procedures in a program with multiple tasks, it’s not particularly important to have such non-blocking versions. Here are the links:
The Usable Datagram Package Ada Library
An Ada UDP POSIX Sockets Binding

I’m particularly pleased with my design using controlled types, avoiding any explicit initialization. Unfortunately, I’m not certain if I’ll be able to get such a clean design with TCP. There only needs to be one UDP library, for either end of the connection, but TCP drives a wedge between server and client design; I plan to have two child packages, with the client package having all functionality relating to using TCP connections, and the server package having a TCP connection generator producing connections usable with the other package. I’m uncertain if I can get such a clean design to work, however.

1 Like

I have created a draft of such a library for both binary and text I/O called Controlled_IO. It will be interesting to see if people find it useful.

A spark TLS library was started recently.

4 Likes

I was surprised to see my repo mentioned! This is still very much a science project, but I was able to contribute some code upstream to the SPARKNaCl project to add one of the necessary ciphers for TLS 1.3. The other two can be supported without much effort, I think. I have a PR in (which needs some refactoring) to add the SHA384 hash algo which is required for one of the other TLS 1.3 cipher suites.

Being able to handle certificates means x509 and ASN.1 parsing needs to be present so I have another project SPARKx509 to try and support that. Certificate handling is an area where a lot of CVEs pop-up in OpenSSL so I think a verified library would be really valuable. Again, it’s very much still a science project. Like others here, I would love to have an end-to-end HTTP/S solution in pure Ada/SPARK.

7 Likes

I heard on a podcast of one company that got payed I assume a fair bit of money by facebook for spark x509/asn.1 parsing. I guess facebook never open sourced it. So good on you for doing this work and I hope that you get sponsored if you are looking for that.

2 Likes

I wonder if Win32Metadata could be used to enhance Win32Ada or to start a new, more complete Win32 binding from scratch.

Isn’t that already used to generate win32ada bindings from?

Regarding the last point (Super simple http):
Spot “get_http” @ Language Popularity Index / Code / [r93]
But it’s HTTP, not HTTPS.

Also as a binding to SFML: ASFML/include/sf-network-http.ads at 7062e66dc0d869e6b2b0b5d14763f2541c46faf7 · mgrojo/ASFML · GitHub