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=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,91d0d8cd28bbb477 X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news4.google.com!news.germany.com!storethat.news.telefonica.de!telefonica.de!newsfeed.arcor.de!newsspool4.arcor-online.net!news.arcor.de.POSTED!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: Implementing an Ada compiler and libraries. Newsgroups: comp.lang.ada User-Agent: 40tude_Dialog/2.0.15.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <1178721451.073700.10730@y80g2000hsf.googlegroups.com> <6819scxft9y4$.1vlh83ppnnyrh$.dlg@40tude.net> <1178731280.075981.23040@u30g2000hsc.googlegroups.com> Date: Thu, 10 May 2007 09:59:09 +0200 Message-ID: <8cu67r7wcdn7$.18rtn6g7506w2$.dlg@40tude.net> NNTP-Posting-Date: 10 May 2007 09:57:27 CEST NNTP-Posting-Host: dfea8c8d.newsspool2.arcor-online.net X-Trace: DXC=o:4e^ECYbkaOKO]LCQ@0g`A9EHlD;3Ycb4Fo<]lROoRa8kFogiO_j]m^adi X-Complaints-To: usenet-abuse@arcor.de Xref: g2news1.google.com comp.lang.ada:15706 Date: 2007-05-10T09:57:27+02:00 List-Id: On 9 May 2007 10:21:20 -0700, Lucretia wrote: > On May 9, 5:51 pm, "Dmitry A. Kazakov" > wrote: >>> But I'm interested in seeing how I can get the compiler to not have to >>> reparse other source files (when with'd) in order to compile a unit. >> >> Why should it? Certainly, you would have some intermediate representation >> which includes symbolic tables and other stuff the compiler creates after >> semantic analysis before code generation. A compiled library unit will have >> this stored in some appropriate format. > > True, but is it possible to include dependency info within the object > itself? Sure, it is just another "with". Each "with" loads (maps into the memory) the corresponding precompiled unit (compilation context). Some minor relocation stuff will be needed, checksums and time stamping as Gautier has mentioned. The symbolic tables (actually contexts) can be organized as a tree-stack to reduce loading overhead. "Use" plants a tree in the forest. I did such thing once. I guess it should make table look-ups slower. So the net effect on the compilation speed is unclear, before you actually build the thing. >> An interesting issue is cross-platform library units, I was playing with >> this idea, but came to no conclusion. > > LLVM would be capable of this. Then is not a cross-platform, I mean the only platform here is the VM. Otherwise, it could be doable. Though many static things which are platform-dependent will cease to be compile-time static. So you will be unable to have certain things fully precompiled. > Why? Are you saying that it would be better to store libraries in IR > rather than binary form? IR = infra red? >>> I don't want to have to have >>> tons of source files lying around for a static/shared library, I >>> honestly don't see the need. Surely, it's possible to build a compiler >>> that can get the information it needs from the library itself (or at >>> least a companion library rather than a ton of different ALI files)? >> >> Or a database, for that matter... > > Like the old Ada library? It wasn't that bad. DEC Ada had a library, if I correctly remember. With an integrated source control system it might become more attractive than the GNAT model. If I designed Ada tool-chain (the compiler is only a part of), I would probably choose this. > I was actually thinking, if I couldn't embed > the other information required by the compiler into the final object, > then a separate "lib" containing only this informaton would be > necessary. You mean symbolic info for the debugger? >>> Now, I'd really like to hear from people who have implemented an Ada >>> compiler and people who have used other compilers (I've only used >>> GNAT). Basically, I'm interested in how other implementations handle >>> the library. Note that there are 2 ideas of library here: >> >>> 1) The standard Ada library. >>> 2) Link/shared libraries found on operating systems. >> >> I remember RSX-11 in which macro and object libraries were handled by the >> same librarian tool. > > RSX-11 is before my time, got any more info on this? It was too primitive to be used for Ada. But the idea is basically same. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de