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
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.
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.
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?