Hi,
I wrote most of this here, so, you can have the context, but I think the main crux should be mentioned here too.
I think he would still complain even with Ada and as someone who has done this with Ada and found the results to be still a bit painful, I can agree.
The biggest issue is the need to bind to C and the main issue being that C is just painful to use outside of C, but to get good, and I mean “really good” bindings, you need to be able to generate them, due to rapid changes in the libraries, but there’s no good way to generate them.
A good example is a function which takes a double pointer, is it an array or is it filling in an address?
Another is a function which takes a pointer, but in Ada needs to be a generic so that you don’t have to 'Address everything.
And I’ve started a binding generator, but got to the point where I really want templates like StringTemplate4 which would really ideally want runtime reflection to use Ada objects to get data out. I looked at other template libs, they’re not good enough just being file templating libs.
Another issue is adding in Ada code to the generated bindings, simple text inclusion can work, but it’s not great and a programmatic way to add an Ada function would work better, but we don’t have a componentised compiler.
And that is the only way I could create SDLAda bindings the way I have done them by hand, but I can’t keep up with the changes in the original lib and with SDL3 in alpha stages, the changes will continue at a rapid pace. Generation is the only way.
Re SDLAda, I’ve been thinking about removing the controlled objects part and trying to make the binding a variable thin-medium thickness binding. One reason is because underneath there’s a lot of faffing around getting internal pointers to SDL2 objects, and for external libs that use SDL2, like Nuklear for example require access to those. Once UFCS is added OOP won’t really be needed anyway.
And while you can bind as you go for a project, people tend to want full working bindings to do anything, especially game development.
So, one of the things that has been in my mind for a long time is creating a new compiler toolchain, which is a massive undertaking and highly daunting task, at which point I wonder about just creating a new language altogether and there is where the conflict in my head is.
And I would love to be able to work full time on my projects and make a living doing that, but I don’t know if it’s even possible, especially with a new language.
I’m at the rapid prototyping part of that blog and I do think that Ada could enable that easily, with the the right libs.
He’s got a point regarding hot reloading and time travel debugging, I remember seeing that kind of debugging about 20 years ago.
So, he mentions in rust not having things like sdl, cimgui, etc. having given nuklear a bash I can see why, especially for single header c lib crap.
The rust community seems to be way more snobbish than the Ada community get accused of.