comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: GNAT Modification_Time limitation
Date: Mon, 26 Nov 2018 17:45:23 -0600
Date: 2018-11-26T17:45:23-06:00	[thread overview]
Message-ID: <pti0ik$c0b$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: 0d4679d2-30d7-493f-b9fd-688d044e1a4e@googlegroups.com

<briot.emmanuel@gmail.com> wrote in message 
news:0d4679d2-30d7-493f-b9fd-688d044e1a4e@googlegroups.com...
>> I'd argue that these are something else on top of individual builds. And
>> that it is a mistake trying to combine basic building with those
>> higher-level configuration management things.
>
> Not sure about the concepts about you describe. For me, "basic building"
> is one run of the compiler on one specific file, which always recompiles,
> no question asked.
> What we are talking about in this thread a tools at the level of make and
> gprbuild, that decide what should be compiled, and when. For me, this is
> thte "higher-level build management part". That includes configuration
> management, since this tool is also responsible for deciding where the
> build artifacts (object files, executables,...) should be stored.

I think of a single compilation as a "compilation", while a "build" to me is 
something that results in one or more executable files, generally based on 
the source code found in a single directory. Going further (and we have some 
such features, particularly for sharing source/object between multiple 
distinct builds) is part of the higher-level management. (I don't have an 
simple name for that, which shows yet again how hard it is to describe.)

Ada of course allows "build" to be completely automated without any outside 
intervention at all. In theory, it's only necessary to point the build tool 
at the pile of source code.

...
>> It's hard to imagine a build taking less than two seconds; certainly not 
>> if
>> a human is involved, and very unlikely even if automated.
>
> Don't forget that Lionel's make-like tool and gprbuild are both meant to 
> be
> language-neutral. Compiling an Ada file in less than 2s is rare nowadays 
> (but
> possible with very simple files. But compiling a python file takes a few 
> ms,
> so just looking at timestamps cannot be enough (though when compilation
> is that fast, it doesn't matter much to redo it more often...

Again, a "build" in my view is compiling the set of files needed to create 
an executable. (Again, I'll ignore the management of shared libraries.) That 
generally requires the compilation of multiple files, and a linking phase as 
well. Moreover, unless you are running multiple builds from some 
higher-level tool, there's also human reaction time involved. The likelihood 
of that happening faster than 2 seconds isn't high. The issues I've seen 
almost always come from someone terminating a compilation in the middle 
without letting the compiler clean up any half-created artifacts.

Of course, most other languages need a lot of help to determine dependencies 
(information that is directly part of the Ada source code). That need for 
help has confused the issues a lot, because however you give it can't be 
automatic nor bullet-proof. Thus, this gets mixed up with the higher level 
issues. Ada only needs that help at a higher level than basic building; 
basic building should be automatic.

I've even had a customer (with large, complex systems) tell me that they 
didn't want the Ada compiler to even try to manage such things. They wanted 
to grab some set of source from version control and essentially have the 
compiler build it from that source (all found in one large glob in a single 
directory). They thought that build times were short enough that it wasn't 
worth the intermediate steps to avoid recompilations. I've rather thought 
that was the future of such tools; some higher-level management (probably 
from the configuration management system) where whatever the compiler does 
would seem to get in the way.

                                        Randy.



      reply	other threads:[~2018-11-26 23:45 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-19 22:56 GNAT Modification_Time limitation Lionel Draghi
2018-11-20  0:47 ` Shark8
2018-11-20  1:33   ` Keith Thompson
2018-11-20  1:33 ` Keith Thompson
2018-11-20 23:32   ` Randy Brukardt
2018-11-21  8:23     ` Dmitry A. Kazakov
2018-11-20  8:08 ` briot.emmanuel
2018-11-20 11:57   ` Lionel Draghi
2018-11-21  7:40     ` briot.emmanuel
2018-11-21 11:16       ` briot.emmanuel
2018-11-21 19:13         ` Lionel Draghi
2018-11-21 19:02       ` Lionel Draghi
2018-11-21 19:48         ` Simon Wright
2018-11-21 22:14           ` Lionel Draghi
2018-11-20 23:53   ` Randy Brukardt
2018-11-21  7:31     ` briot.emmanuel
2018-11-21 14:38       ` Shark8
2018-11-21 17:32       ` Simon Wright
2018-11-21 17:43         ` briot.emmanuel
2018-11-21 23:34       ` Randy Brukardt
2018-11-22  8:15         ` briot.emmanuel
2018-11-26 23:45           ` Randy Brukardt [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox