#build #uuid #binary #segment #obtain #check #uniquely

sys build_id

Obtain a UUID uniquely representing the build of the current binary

8 releases

0.2.1 Nov 24, 2019
0.2.0 Oct 18, 2019
0.1.5 Aug 1, 2019
0.1.4 Jul 26, 2019
0.1.1 Jul 26, 2018

#2082 in Development tools

Download history 253/week @ 2024-07-20 193/week @ 2024-07-27 402/week @ 2024-08-03 474/week @ 2024-08-10 783/week @ 2024-08-17 704/week @ 2024-08-24 1231/week @ 2024-08-31 533/week @ 2024-09-07 341/week @ 2024-09-14 696/week @ 2024-09-21 1331/week @ 2024-09-28 1136/week @ 2024-10-05 1399/week @ 2024-10-12 1486/week @ 2024-10-19 854/week @ 2024-10-26 631/week @ 2024-11-02

4,400 downloads per month
Used in 11 crates (via relative)

MIT/Apache

11KB
106 lines

build_id

Crates.io MIT / Apache 2.0 licensed Build Status

Docs

Obtain a Uuid uniquely representing the build of the current binary.

This is intended to be used to check that different processes are indeed invocations of identically laid out binaries.

As such:

  • It is guaranteed to be identical within multiple invocations of the same binary.
  • It is guaranteed to be different across binaries with different code or data segments or layout.
  • Equality is unspecified if the binaries have identical code and data segments and layout but differ immaterially (e.g. if a timestamp is included in the binary at compile time).

Examples

let local_build_id = build_id::get();
if local_build_id == remote_build_id {
	println!("We're running the same binary as remote!");
} else {
	println!("We're running a different binary to remote");
}

Note

This looks first for linker-inserted build ID / binary UUIDs (i.e. .note.gnu.build-id on Linux; LC_UUID in Mach-O; etc), falling back to hashing the whole binary.

License

Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0.5–1.2MB
~20K SLoC