4 ms·
I looked into this as well recently and came to the same conclusion: If you use the GNAT Community version, there is a runtime exception which states you don't
by 4thaccount 8y ago
I looked into this as well recently and came to the same conclusion:
If you use the GNAT Community version, there is a runtime exception which states you don't have to release source if you just use the stdlib (something along those lines). If you use any of the Adacore libraries, then you are under the GPL.
If you get the commercial GNAT compiler, you can of course withhold your source.
I'm not an expert or lawyer, but I was told (not by Adacore) that is how it works.
At the end of the day, this makes Ada an excellent language that I can't use. Their customers seem to work on big ticket items like aircraft and aerospace where the pockets are deep. It's a shame too as I'd love to use it over C.
- xvilka 8y agoYou always can upgrade from C to Rust though.
- exitcode00 8y agoThe Ada standard library is massive and is included in the exception. There are "internal" "GNAT specific" packages which you can include in your project but there are not really any you need or would use in a general sense - there are even warnings you get at compile-time telling you that you are using something GNAT specific and are prefixed with GNAT.* instead of Ada.
- 4thaccount 8y agoThat is news to me, thanks for pointing it out!
- rurban 8y ago"massive" meaning a ~300 MB compressed download, compared to a 20mb C++ with stdlib. it's even more more massive than the biggest professional lisp packages. Only Microsoft and Apple Tools can compete with that kind of massiveness, but they ship a lot of crap with it. Ada/Spark is an extremely nice and easy to use framework (if you forget the python crap that comes with it), and I would hire any Spark or ATS or F* programmer over a C++ or Java programmer in a minute. no questions asked. This example of integer overflow is also very common amongst C/C++ programmers. Almost nobody cares about overflows or 2gb boundaries. Nobody knows how to efficiently use adc ("add with carry") or how to check for it at compile-time. spark does it for you automatically.