3 ms·
I'm sure projects like chromium and llvm would love for you to just fix their build times.
by maccard 5y ago
I'm sure projects like chromium and llvm would love for you to just fix their build times.
- tom_ 5y agoAnd Unreal Engine too, please.
- maccard 5y agoI used to work for Epic, and I did a good chunk of work on the game projects build times with reasonable success. Unfortunately I couldn't really change too much inside the engine because of backwards compatibility. Removing headers from other public interface headers has the possibility of breaking users code, which is a no-no so their hands are pretty tied. There are definitely some big wins to be had if they're willing to break back compat though!
- usefulcat 5y agoEven without that restriction it's not that easy. It generally comes down to a choice between: a) #include <vector> -- Lots of dependencies, but I know it works and I don't want to reinvent the wheel b) #include <my_vector.h> -- Ok, I'm going to reinvent the wheel, but at least my wheel might have slightly fewer dependencies. c) //#include <vector> // I'll just do without the wheel entirely
- maccard 5y agoWith ue4 that's not really the problem, it mostly falls under category b). The problem is that a bunch of stuff has unneeded module dependencies that hide the real dependency tree. Say a.h includes b.h but doesn't use anything from module B, but b.h includes SomeFundamentalHeader.h which a does need. The choice here is leave it alone or fix the dependency but break any user code that relies on the same behaviour. I did just that in a few modules that were new and off by default but good luck making a change like that in any commonly used modules.