The new build system has three fundamental flaws that I discovered so far; all three are known to Apple as all my bug reports were closed as duplicates, yet the bugs they duplicate are still open. Please note that I filed these when Xcode 10 was still a beta and now we already have Xcode 10.2.1 and nothing has been done to even try fixing any of these bugs.
1. The build system often fails to detect changes, if these changes are not obvious previous to starting a build. Aparently most of the build is planed prior to starting the build. If something is unmodified during that planing phase, it will be ignored. Yet it will even be ignored if it becomes modified as part of the building process. This used to work correctly with the old build system which apparently was performing less planing in advance or was re-evaluating files after certain steps were performed.
2. The build system cannot deal well with symlinks. If a path or build setting is set by a symlink, the build system will inspect the symlink itself but not the file/folder it links to. Very often a build step is not performed, despite the file the symlink points to having a new last modification date. No matter how often I touch the file, the step is skipped. Yet if I force the system to update the last modifcation date of the symlink file itself (`touch -h`), all of a sudden Xcode does perform this step. Using symlinks always worked correctly before but it can get you a lot of headache with the new build system.
3. The new build system fails to re-sign. If you build an app, have it sign and verify the signature, the signature will be okay. If you now modify a resource file (e.g. a strings file), Xcode will detect the file has changed, it will even copy the file tot he app bundle but it will not update the app bundle signture. If you check the signature again, it will be reported as broken since one of the resource files was modified. Again, this has never been a problem with the old build system. The old bulid system always kept a record that it modified a bundle and always re-signed any bundle it modified. See also http://www.openradar.me/radar?id=4959138173943808
When using Cocoapods, (2) can be an issue (Cocopod uses a lot of symlinks to avoid duplicating files) and if you have a development pod, especially (1) is a problem. In some cases also (3) is an issue if a resource may change between two builds. But (3) can be an issue for any project that requires a correctly signed application and one of our apps has a huge issue becuase of (2).
And again, please understand that this is not a "oh, this cannot be fixed" issue as why would the old system always produce correct results then? If the old system can do it correctly, the new one surely could as well. Especially since it has all the information it needs. It knows when the app bundle was modified and it could also easily dedect that a file was modified as part of the bulid process and then re-generate the dependcy tree, and finally, nothing is more easy than make sure both, the last modification date of a link and the link target are always checked, so I see no excuse whatsoever that this hasn't already been fixed ages ago.