Protocol redesign. Now it supports transfer multiple files to/from compile-servers.
Major refactoring. Several major subsystems are now properly decomposed and much easier to maintain. Besides, the compile daemon can now be easily extended to support multiple languages.
Code coverage support. (GCC only.)
Added COS (a product of Tencent Cloud) as a cache storage backend option.
Allow asymmetric deployment. Now different set of tokens can be used for compile-servers and clients. Only daemons using compile-server token can accept tasks and/or write to cache. This should help mitigate object-file poisoning in untrusted environment.
Now compilers on compile-server are periodically re-scanned so that you don't have to restart the daemon to add new compilers. The directory in which compiler can be found can be specified manually.
Ability to detect identical compile tasks being started concurrently (to a certain degree) and reuse the result without compiling it twice.
Minor changes:
Maximum (compressed) files size allowed to/from compile server is enlarged to 512M (was 64M).
Minor memory consumption optimization to cache server.
With default settings (i.e., neither redefining __TIME__ / ... nor setting YADCC_IGNORE_TIMESTAMP_MACROS), now compiler wrapper runs much faster (10%+) as checking for timestamp macros are now done on compile-server.
Now the local daemon caches compiler's BLAKE3 digest so the compiler wrapper doesn't have to re-calculate it each time the wrapper is run. This should speed things up.
Due to switching to a JSON-based protocol and using a not-so-fast JSON library, compiler wrapper's performance degrades (by a few percent and should not be eligible in most cases.).
More debugging options added to compiler wrapper.
Daemons can be set to not accepting tasks (wasn't possible before).
Now daemons won't keep requesting not-recognized compile environment (and leaves a warning log on scheduler).
Compile server's load (due to other activities on the node) is now taken into consideration when dispatching tasks.
Some random notes:
AArch64 is now supported (wasn't it supported before?)
BLAKE3 digest is applied on cache entries before writing and after reading the cache. So don't worry if your storage media malfunctions.
Despite of several changes affecting (both optimization and pessimization) performance of the compiler wrapper, you should see an improvement overall.
Major changes:
Minor changes:
__TIME__
/ ... nor settingYADCC_IGNORE_TIMESTAMP_MACROS
), now compiler wrapper runs much faster (10%+) as checking for timestamp macros are now done on compile-server.Some random notes: