Merged
Conversation
Do not write UTF-8 BOM to results files. Fixes dotnet#3070.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR fixes an unintended behavior change where result files (e.g., JSON exports) are written with a UTF-8 BOM, which breaks some downstream consumers (notably JavaScript JSON parsing in CI workflows).
Changes:
- Change
CancelableStreamWriter’s default encoding fromEncoding.UTF8(BOM-emitting) to a UTF-8 encoding configured to not emit a BOM. - Introduce a cached
UTF8NoBOMencoding instance used by the defaultCancelableStreamWriter(Stream)constructor.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Use existing shared field. Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
martincostello
commented
Apr 1, 2026
Not needed.
timcassell
approved these changes
Apr 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Do not write UTF-8 BOM to results files.
Fixes #3070.
All the tests choose their own encoding, rather than using the default constructor the real exporters use, e.g.:
BenchmarkDotNet/tests/BenchmarkDotNet.Tests/Helpers/ExporterTestHelper.cs
Lines 13 to 26 in 2252a3b
vs:
BenchmarkDotNet/src/BenchmarkDotNet/Exporters/ExporterBase.cs
Line 38 in 2252a3b
I'm happy to add/update some tests for this issue if you have opinions on how you'd like to verify this exactly.