Я переформатировал свою кодовую базу с помощью rustfmt 0.4.1-stable и имел огромный diff, который трудно проверить на глаз.
Давным-давно у меня была похожая проблема после того, как cargo fmt
произвелогромная разницаВ то время я решил это следующим образом:
cargo build --release
strip -s target/release/mylib.so -o target/release/mylib-stripped.so
diff <(hexdump -C < target/release/mylib-stripped.so) <(hexdump -C < target/release/prev-mylib-stripped.so)
Разница составляла всего несколько байтов и выглядела как отметка времени, но на этот раз разница между обоими hexdump
/ objdump
выходами огромна.
Код отличается, например:
push %r13
188d3a: 41 54 push %r12
188d3c: 53 push %rbx
- 188d3d: 48 81 ec 48 01 00 00 sub $0x148,%rsp
- 188d44: 48 89 d3 mov %rdx,%rbx
...
+ 188d3d: 48 81 ec 88 06 00 00 sub $0x688,%rsp
+ 188d44: 4d 89 ce mov %r9,%r14
+ 188d47: 4c 89 85 a0 fe ff ff mov %r8,-0x160(%rbp)
...
Как сделать воспроизводимые сборки до и после cargo fmt
?