Open gavr123456789 opened 4 years ago
Thank you for the detailed answer, everything is clear. I'm also looking at the Vala language now, can you share your experience of developing in it compared to other languages?
I really can't give any generic advice for that. Which language is "best" depends on a lot of factors, some of them being highly subjective. Occasionally, the language the developers simply "like" is also the best choice.
I can only give a few pointers: If you aren't developing something within the GNOME ecosystem (or for Elementary) don't use Vala, you won't have much fun with it. Also don't use Vala for shared libraries, I found it very subpar for that, as I needed much tighter control over the ABI than Vala would give me. The language itself is pretty easy to write and as long as you're staying within the GLib/GNOME ecosystem, easy to expand. The generated C code isn't very clean though. Lately, it looked like Vala development also slowed down a lot.
Ultimately, it depends on what you want to do whether Vala is a good choice or not. One way to find out is to just try it. Personally, for writing GNOME apps, I would also give D a shot, Tilix, a well-known terminal emulator is written with it. D is more general purpose and has an active community caring about it, as well as good GTK+ bindings and is from syntax relatively close to Vala. Rust may also be a good thing to look at, some new projects also use that and it has actively maintained GTK+ bindings.
For Qt GUIs nothing really beats C++ or possibly Python, and for writing libraries I think C and C++ are the only ways to go if there are a lot of diverse consumers of the resulting lib.
The generated C code isn't very clean though.
As far as I know vala breaks everything down into minimal actions to avoid undefined behavior.
I came from the Qt world, and am considering switching to vala for writing gui applications(not necessarily for the gnome/elementary ecosystem) At first glance, vala is much better than C++ + Qt (and I hate Python). There is no GC, but the language looks as high-level as C# with Python slices and these code attributes for more convenient work with Gtk, such as GtkChild.
What was the problem with shared libraries? In what sense is there insufficient control over the ABI? It seems like there is even a flag doing something with ABI.
As far as I know vala breaks everything down into minimal actions to avoid undefined behavior.
It could sometimes find solutions with less temporary variables and generate cleaner C code. It would at least be nice if it could generate warning-free C code. I haven't used Vala for years, so some of these issues may be improved now, but I am not sure (nowadays, Vala seems to be mostly maintained by Elementary people).
As said, if you like the language and staying in the GTK+ ecosystem is fine, just give it a try.
In what sense is there insufficient control over the ABI?
You simply don't have enough control over the genrated C code. You can't pad structs for future-proofing, functions may change ABI depending on Vala versions and generally I wouldn't rely on Vala to just do the right thing here. Maybe Elementary made this work better meanwhile though.
Well thanks for the detailed answers. Several years of non-use makes Vala a good discount xd.
It could sometimes find solutions with less temporary variables and generate cleaner C code.
Here's the explanation.
It would at least be nice if it could generate warning-free C code.
Here the answer.
It seems that Vala is a wonderful language without any significant disadvantages(not counting the slow development). Unlike other new languages (Kotlin, red, nim, zig, rust...) Vala has the most standard syntax, it is literally already known by everyone who wrote in С similar language. For example, I added a benchmark to this repository by literally copying the C# code.
Also Vala is generated in C which gives it excellent speed (it took first place in this benchmark in the second test and 4 in the first (although on my machine in both)) And also it gives all C libraries using Vapi(but with OOP and memory safety thanks to ARC) and using Vala for bottlenecks in other languages due to simple embeddability(gir/swig).
And judging by this application with cross-platform, too, everything is fine. In General, I conclude that Vala will be an excellent replacement for Qt + C++.
Those answers don't address all of the cases I found years ago (some bugs reported & fixed meanwhile, though), and the one for warnings is one I found unsatisfactory. For my current projects it isn't the right tool, but for you it may very well be. Just give it a shot! If you are comfortable using it and the Vala ecosystem provides everything you need, you will for sure be able to create good stuff with it. This is a perfectly valid reason to use a programming language, and there's no need to rationalize or justify things.
That's because the project is dead. Originally I developed the Limba project with some lessons learned from Listaller, but that project also needs some serious work to stay relevant. Given that support by a large community is essential for this to work, the best thing to use instead is Flatpak. Flatpak follows a lot of the ideas Limba uses as well, it is just a lot less modular. It does have a lot of backing from the community and corporations though, so should be a very viable choice.
As for the website, I may reenable it with some kind of legacy warning, as some kind of archive.