bc96e42585
Build systems like bazel rely on the output of a compilation being deterministic. File checksums determine when an artifact is safe to cache across builds. One can produce a klib deterministically by using a fixed timestamp during klib compression. Before this change: ``` $ kotlinc-native -produce library -output /tmp/first/color.klib Color.kt $ kotlinc-native -produce library -output /tmp/second/color.klib Color.kt $ shasum /tmp/first/color.klib /tmp/second/color.klib bc3f73678ff025cfbec9009f9a851a8ca74e1037 /tmp/first/color.klib 65aa37886fbd53285f2e449a4dab6a2ad02732e6 /tmp/second/color.klib ``` After this change: ``` $ kotlinc-native -produce library -output /tmp/first/color.klib Color.kt $ kotlinc-native -produce library -output /tmp/second/color.klib Color.kt $ shasum /tmp/first/color.klib /tmp/second/color.klib fcba304493916ae34d372188991f87b60a113cf3 /tmp/first/color.klib fcba304493916ae34d372188991f87b60a113cf3 /tmp/second/color.klib ```