I observed that module loading is orders of magnitude slower on macOS compared to other platforms. Profiling showed that the validate() functions for xcode and ib are the culprit (they were slower by a factor of ~100 compared to other modules). A quick look at the xcode module shows that operations like File.directoryEntries() occur at the right-hand side of properties.
We must not do that. All potentially expensive operations, in particular those accessing the file system, need to be done in Probes, whose results are cached.
|For Gerrit Dashboard: QBS-1033|
|176057,6||Warn against possibly improper use of JS extensions in qbs project files||master||qbs/qbs||Status: MERGED||+2||0|
|176116,2||Enable evaluation cache for module validation||master||qbs/qbs||Status: MERGED||+2||0|
|176288,2||Xcode: move SDK enumeration into a Probe||master||qbs/qbs||Status: MERGED||+2||0|
|176368,2||Use a Probe in the ib module||master||qbs/qbs||Status: MERGED||+2||0|