Only support reproducible output by default
Reproducible builds is a strong area of interest for people but shadow is generated code that is inherently not reproducible and relies on people only calling a subset of calls and the compiler optimizing the rest away.
Time-derive data is an a clear case of this. git-derived data is more debatable.
Yeah, Do you have any suggestions to shadow-rs. @epage
One thought
- Rename the
git2feature togit - Make
gitnon-default - [x] Split out a
timefeature (non-default) - [x] Use document_features to document all of this (including the warnings about reproducibility) in rustdoc
The main issue I see with this is documenting the API.
What if shadow exposed its functionality as a trait (even if it just wraps non-trait functions)? That way the API is browsable like normal even though it is generated.
Wow, About what you mentioned above,I look forward to you very much. @epage
As I'm considering this and #69, I'd propose the API change to
- mod per type of source (git, time, rust, etc)
- public functions / macros exposing accessors
- a struct implementing a
Sourcetrait- Function to provide all of the ShadowConst / ConstVals
- Accepts a env trait so we can have an implementation that records all functions used (so we report only them, rather than all envs, like
build-envdoes)