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: DragonEgg has been revived Date: Fri, 25 May 2018 18:08:37 +0100 Organization: A noiseless patient Spider Message-ID: References: <5c2523c1-9ea5-453c-b80e-9cb0dcd16de0@googlegroups.com> <293cf892-1320-49e6-a25f-a36ea098cd34@googlegroups.com> <294fa0cd-ec72-4f0f-8065-0a3d5e1087fa@googlegroups.com> <1048844682.548900254.621065.laguest-archeia.com@nntp.aioe.org> <036cfae8-5963-43d2-a84c-b7b52682523c@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: h2725194.stratoserver.net; posting-host="9c58e02725f24ca1d1b99fef641db2a7"; logging-data="15536"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18T9hyjYXOUi4Ypz2RAUSQGWTvOZeiYDzA=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (darwin) Cancel-Lock: sha1:H0gniQwnTGK1kg2LczkoRRaAZx0= sha1:l6FoxNv4WUcYsUeWTYSJKH3Zxus= Xref: reader02.eternal-september.org comp.lang.ada:52680 Date: 2018-05-25T18:08:37+01:00 List-Id: Lucretia writes: > On Friday, 25 May 2018 14:16:55 UTC+1, Simon Clubley wrote: >> On 2018-05-24, Luke A Guest <> wrote: > GCC is way too big to handle for > such a short timeframe, IMO. Oh yes. >> It would be nice if an Ada compiler was also that clean internally >> and as well documented so that you could easily port it to a new OS >> or environment yourself if you needed. I believe that there's considerable cross-communication between the higher (Ada) and lower (GCC internal) stages of the compiler. No proof, too deep for me! > The documentation needs to be external to the source, so you don't > have to go around the sources looking for stuff. This documentation > can be generated from the source though. GNAT doesn't have any publicly-visible design documentation that I'm aware of, or any "user story"-type info. For instance, between GCC7 and GCC8 the interface between the compiler and the RTS changes so as to implement the task aspect Secondary_Stack_Size; procedure System.Tasking.Restricted.Stages.Create_Restricted_Task gets an extra parameter. I found this out by using the unmodified RTS with the new compiler, and having confusing error messages (extra confusing because the call to the RTS is created by generating the corresponding syntax tree), resolved by compiling with -gnatG to see what the compiler exepcted to call.