fix: Write diagnostics to stderr (vs stdout) #1978
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Before this change (even when logging was not enabled) SP1 was writing diagnostic messages to stdout, breaking the implicit contract that only the application logic should decide what gets written to stdout. This contract is important, e.g. for passing the output for further processing in shell-driven use cases:
This change aims to fix this issue, and to safeguard against it (to a reasonable extent) in the future.
Solution
println!
usages toeprintln!
in production modules.eprintln!
is okay 👍.Direct logging output to stderr by default.I've left alone tests, examples and build scripts, and tried to make the change as narrow as possible so it affects only production code paths.
PR Checklist