From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail From: Simon Wright Newsgroups: comp.lang.ada Subject: Re: Ada: A beginners experience Date: Sat, 14 Jul 2018 16:55:55 +0100 Organization: A noiseless patient Spider Message-ID: References: <1d3743b1-1a36-429d-92c7-9ae0e7c16e63@googlegroups.com> <87fu0m7ak0.fsf@nightsong.com> <6febe5d6-0339-4da5-afe5-9af4e2255597@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: reader02.eternal-september.org; posting-host="a1be2577a79b45966fe08802cb9e3cf9"; logging-data="868"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18meDStNsOog7Kh1bBpGJ2H3TLWIkZwS+c=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (darwin) Cancel-Lock: sha1:wMKMIDPHK9deU3lJH1PsNp5KdOs= sha1:Y37NG6ARbqu/AfeYvD66RQ4QYrA= Xref: reader02.eternal-september.org comp.lang.ada:53814 Date: 2018-07-14T16:55:55+01:00 List-Id: Jere writes: > However, there are definitely things in Ada that are costly. Tasks > and Protected objects are a big one. Full exception handling > capability is another. I haven't been able to get Finalization > working (haven't tried hard honestly), so I cannot comment on that > one. Tasking and POs were my main problem in Cortex GNAT RTS[1], not so much the actual tasking/sychronization, which I delegate to FreeRTOS, so much as the interface between the compiler and the RTS, and the way it changes between different releases, see [2]. Exception handling is something I haven't even attempted (after one look at the work GNAT has to do). See [3], espectially the Robert Dewar quote at the end - "exceptions are a huge pain in the neck to implement". Finalization is something I've actually implemented, but it's still in a branch because of binder problems, now nearly resolved in GCC8/GNAT CE 2018 (the binder generates incorrect code if your code doesn't use the secondary stack!! [4]) [1] https://github.com/simonjwright/cortex-gnat-rts [2] https://github.com/simonjwright/cortex-gnat-rts/blob/master/INSTALL.md [3] https://github.com/simonjwright/cortex-gnat-rts/wiki/ExceptionHandling [4] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85380