On Tue, Oct 13, 2020 at 11:40:51AM -0400, Richard Kimberly Heck wrote:
> On 10/13/20 3:09 AM, Yuriy Skalko wrote:
> >> Yes. We'll deal with the rest later. 
> >> Pavel
> > Done at 2a594d3.
> >
> > The .cpp changing part (for future applying) is in attached patch.
> 
> Suggestion: Let's see if we can get people on different platforms and
> with different compilers to try the patch. As has already been said, we
> do occasionally run into cases where includes are needed sometimes but
> not others.

If we are going after redundant includes we should first decide what's
the goal and why we are doing it.

Are we trying to make it

- "semantically correct", by which I mean removing includes unrelated to
   the content of the processed file (i.e. forgotten header which is no
   more used becase the code using it is gone). 
   Having "unnecessary" include whose content is used (but already included
   recursively via another include) is actually proper.

- just trying to speedup things, so any possible include gone is good.

If it's not clear what I mean think about

a) .h example:
    BiblioInfo.h::#include "Citation.h"
    We really use stuff from Citation.h, but the include is technically not 
necessary
    becase we get it from different include.

b) .cpp example:
Undo.cpp includes Undo.h. Again this include would be brought by other includes 
as well.

Do we want to keep those or kick them out?


I didn't make any measurements by my expectation is that deleting those 
multiply-imported
includes does not make big difference for compilation time becase our ifdefs 
will be caught
by preprocessor which is damn fast (compared to real c++ compilation).

The real "forgotten" includes which would trigger compiler analysis could make 
difference
but I am afraid you would need to manually check each include of this type.


If we prefer kicking out any unnecessary header there is already
development/tools/header_check.sh at our disposal; reading bug 6305 and
thread https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg155492.html
might be of help as well ;)

I don't have strong opinions about the direction, but I think we should first 
agree
what we are trying to achieve here.


And then there is somewhat separate issue about generic system headers which
sometimes land in the code because someone brave enough tried to run it
on solaris or haiku or god knows what. Here I would be more conservative,
and would not just blindly delete those because I think 
i) there will be few of them so one could possibly check git history how it 
appeared
ii) the speedup gain is negligible compared to problems we could cause elsewhere

Pavel
-- 
lyx-devel mailing list
lyx-devel@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-devel

Reply via email to