Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make callsite-id in log! macro deterministic for Clojure #354

Closed

Conversation

DerGuteMoritz
Copy link
Contributor

Since the non-deterministic rand was used as part of generating callsite-id in the log! macro at compile time, the compiler would produce non-deterministic bytecode as a result. This thwarts reproducible builds.

Instead, use a RNG with a fixed seed. Unfortunately, both the JS standard library and Google Closure's library don't seem to provide a similar facility, so it's only implemented for Clojure.

Since the non-deterministic `rand` was used as part of generating
`callsite-id` in the `log!` macro at compile time, the compiler would
produce non-deterministic bytecode as a result. This thwarts
reproducible builds.

Instead, use a RNG with a fixed seed. Unfortunately, both the JS
standard library and Google Closure's library don't seem to provide a
similar facility, so it's only implemented for Clojure.
@ptaoussanis
Copy link
Member

@DerGuteMoritz Hi Moritz, thanks for this! Looks good, will merge when I'm next doing batched work on Timbre 👍

@ptaoussanis
Copy link
Member

@DerGuteMoritz Merging manually now, thanks again Moritz! 👍
Forthcoming Timbre release will include this change.

ptaoussanis pushed a commit that referenced this pull request Oct 18, 2022
…jure (@DerGuteMoritz)

Since the non-deterministic `rand` was used as part of generating
`callsite-id` in the `log!` macro at compile time, the compiler would
produce non-deterministic bytecode as a result. This thwarts
reproducible builds.

Instead, use a RNG with a fixed seed. Unfortunately, both the JS
standard library and Google Closure's library don't seem to provide a
similar facility, so it's only implemented for Clojure.
ptaoussanis pushed a commit that referenced this pull request Oct 19, 2022
…jure (@DerGuteMoritz)

Since the non-deterministic `rand` was used as part of generating
`callsite-id` in the `log!` macro at compile time, the compiler would
produce non-deterministic bytecode as a result. This thwarts
reproducible builds.

Instead, use a RNG with a fixed seed. Unfortunately, both the JS
standard library and Google Closure's library don't seem to provide a
similar facility, so it's only implemented for Clojure.
ptaoussanis pushed a commit that referenced this pull request Oct 20, 2022
…jure (@DerGuteMoritz)

Since the non-deterministic `rand` was used as part of generating
`callsite-id` in the `log!` macro at compile time, the compiler would
produce non-deterministic bytecode as a result. This thwarts
reproducible builds.

Instead, use a RNG with a fixed seed. Unfortunately, both the JS
standard library and Google Closure's library don't seem to provide a
similar facility, so it's only implemented for Clojure.
ptaoussanis pushed a commit that referenced this pull request Oct 22, 2022
…jure (@DerGuteMoritz)

Since the non-deterministic `rand` was used as part of generating
`callsite-id` in the `log!` macro at compile time, the compiler would
produce non-deterministic bytecode as a result. This thwarts
reproducible builds.

Instead, use a RNG with a fixed seed. Unfortunately, both the JS
standard library and Google Closure's library don't seem to provide a
similar facility, so it's only implemented for Clojure.
ptaoussanis pushed a commit that referenced this pull request Oct 23, 2022
…jure (@DerGuteMoritz)

Since the non-deterministic `rand` was used as part of generating
`callsite-id` in the `log!` macro at compile time, the compiler would
produce non-deterministic bytecode as a result. This thwarts
reproducible builds.

Instead, use a RNG with a fixed seed. Unfortunately, both the JS
standard library and Google Closure's library don't seem to provide a
similar facility, so it's only implemented for Clojure.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants