PR# 13916 Add immutable attribute to config file library and cluster elements

Problem Report Summary
Submitter: prestoat2000
Category: Compiler
Priority: Medium
Date: 2008/01/25
Class: Feature Request
Severity: Serious
Number: 13916
Release: 6.2.72001
Confidential: No
Status: Analyzed
Responsible:
Environment: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.0.7) Gecko/20060915 Firefox/1.5.0.7 Solaris 9 on SPARC
Synopsis: Add immutable attribute to config file library and cluster elements

Description
Library and cluster elements in a configuration file (.ecf file) currently have a
readonly attribute, whose semantics is that the files cannot be modified from
within estudio.  Please consider adding an "immutable" boolean attribute, whose
semantics would be that the files will not change, so the compiler does not have
to examine those clusters for changed, new or deleted files/directories.
This would speed up compiles quite a bit for me, for I often find that I am
waiting for degree 6 to complete and I can see that it is looking through the
vision2 and gobo libraries, where I know it won't find any changes.

Ideally, this new attribute would also work correctly in the presence of
incrementality.  For example, change immutable from "true" to "false" and
recompiling would allow compiler to look for changes in that cluster or library.
To Reproduce

										
Problem Report Interactions
From:prestoat2000    Date:2009/07/17    Download   
I would like to see this addressed for 6.5, if possible.  If a library is
"readonly", it seems to me that the compiler can assume not only that the
text of existing classes won't change but also that no new classes will be
added to the library.  It should therefore not search readonly libraries 
when looking for a missing class.

From:prestoat2000    Date:2008/01/25    Download   
Here is an example of "readonly" not behaving the way I want.
I compiled a system with libraries

                <precompile name="vision2_pre" location="$ISE_PRECOMP\vision2.ecf" readonly="true"/>
                <library name="vision2" location="$ISE_LIBRARY\library\vision2\vision2.ecf" readonly="true"/>
                <library name="base" location="$ISE_LIBRARY\library\base\base.ecf" readonly="true"/>
                <library name="gobo" location="$ISE_LIBRARY\library\gobo\gobo.ecf" readonly="true"/>

Then I added a local `y: STRIN'.  When the compiler couldn't find STRIN
in my cluster, it proceeded to search all the vision2, base and gobo clusters
for it, but there is no chance it will be there since these libraries are
all readonly.  Meanwhile, I'm waiting for completion of a search that I know
won't find the missing class.


From:manus_eiffel    Date:2008/01/25    Status: Analyzed    Download   
Current readonly does what you are describing. The compiler will not look into readonly library/cluster for changes. And if you were to edit one file of a readonly library/cluster then changing readonly from true to false would trigger the recompilation.

I guess I'm asking what you think readonly is doing and should not so that an immutable attribute make sense?