Get desktop application:
View/edit binary Protocol Buffers messages
Defines some meta data about a compilation cache. For the compilation result (i.e., object file), it's stored immediately after this message.
Note that even if we cache failure result, the only exit code we should be using is 0 (success) and 1 (failure). Any other exit code likely comes from non-compilation errors.
I'm not sure how can it happen, yet I did see some `stderr` contains non-utf8 byte sequence. So we use `bytes` instead of `string` here.
Depending on source code language, this field may contain some extra meta information (e.g., C++ compilation cache use this field for source-path patch locations.).
BLAKE3 of object file. This helps us to detect data corruption on network (or bug in our cache server implementation.). I'm not sure if we should use a cryptographical hash algorithm here. Given that the digest is used only to detect non-malicious data corruption, a cryptograhical hash algorithm may be a overkill?