Message-ID: <2022683520.23911.1412073295028.JavaMail.email@example.com> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_23910_769698143.1412073295028" ------=_Part_23910_769698143.1412073295028 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
GANT-9 raises the point that Gant does not reason about the targ= et dependency structure. This can be (perhaps should be) solved by in= troducing a dependency analysis pre-pass into Gant. An alternate solu= tion is to change the underlying semantics of what Gant scripts are. = Currently a Gant script is an executable script that scripts Ant tasks.&nbs= p; An alternative semantics is for a Gant script to be a builder script tha= t generates a graph of nodes describing the dependencies and actions = -- cf. SCons. The operational semantics can then be determined by vis= itors over the generated graph.=20
The advantage of this change to being builder based is that it allows fo= r the easy introduction of file dependency relationships. Currently, = Gant (and Ant) require the tasks to manage all file dependency relationship= s. Ant is simply a declarative expression of relationships between ta= rgets. Gant extends this by allowing arbitrary Groovy code to control= the task scripting. This means file dependency relationships can be = worked on in Gant scripts. However the lessons of Make, Rake, Rant, S= Cons, etc. is that as well as having targets and tasks, it is good to struc= ture the relationships between files. The danger is that things get t= oo low level -- Make, Rake, and Rant suffer this problem. And yet, it= is a feature that can be high level -- it is for the programmer of the bui= ld script to use things appropriately.=20
Rant and Rant have 'task' and 'file'. These are just two different= sorts of node in the dependency data structure. Gant's targets were = initially called tasks since they related directly to Rake's and Rant's tas= k. However, Gant tasks were really related to Ant's targets and so th= e name was changed.=20
A proposal for developing Gant is to keep target as a callable entry poi= nt, but to introduce task and file as ways of expressing dependency informa= tion.