Skip to content

fix: ship symbols in a .snupkg instead of embedding them in the assembly - #390

Merged
twcclegg merged 1 commit into
mainfrom
fix/snupkg
Aug 14, 2026
Merged

fix: ship symbols in a .snupkg instead of embedding them in the assembly#390
twcclegg merged 1 commit into
mainfrom
fix/snupkg

Conversation

@twcclegg

Copy link
Copy Markdown
Owner

▎ DebugType=embedded (#340, released in 9.0.31) put a PDB inside every shipped assembly, so coverage collectors in consumers' test runs began instrumenting this library's ~48k-line generated LocaleData table — one report measured ~3.5 minutes of added time per test project (#389). This reverts to the SDK-default portable PDB and publishes symbols as a side-by-side .snupkg, which preserves debugging via the symbol server and Source Link while restoring the pre-9.0.31 footprint in consumers' output directories.

▎ Also excludes the generated data tables from our own coverage, which the embedded PDB had inflated from ~77% to ~98%; expect the Codecov project check to fail once against the old baseline.

Repository owner deleted a comment from codecov Bot Aug 10, 2026
@twcclegg
twcclegg requested a review from wmundev August 10, 2026 20:52
@codecov

codecov Bot commented Aug 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 76.64%. Comparing base (10a1567) to head (204e047).

❗ There is a different number of reports uploaded between BASE (10a1567) and HEAD (204e047). Click for more details.

HEAD has 2 uploads less than BASE
Flag BASE (10a1567) HEAD (204e047)
3 1
Additional details and impacted files
@@             Coverage Diff             @@
##             main     #390       +/-   ##
===========================================
- Coverage   98.01%   76.64%   -21.37%     
===========================================
  Files          39       37        -2     
  Lines       52854     4501    -48353     
  Branches     1119     1119               
===========================================
- Hits        51803     3450    -48353     
  Misses        796      796               
  Partials      255      255               

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions

Copy link
Copy Markdown

📊 Benchmark Results

Commit: 204e047 · Full run · Linux ubuntu-24.04-arm

Both sides were measured on the same runner in the same job, so the numbers are
comparable. Treat sub-percent differences as noise.

PR branch

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]    : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
InputDigitPerKeystroke 1000 4.361 ms 0.0523 ms 0.0489 ms 54.6875 3.87 MB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]     : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  Job-AMQORM : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Runtime=.NET 10.0  InvocationCount=1  IterationCount=20  
LaunchCount=1  RunStrategy=ColdStart  UnrollFactor=1  
WarmupCount=1  

Method Mean Error StdDev Allocated
CreateInstance 379.1 μs 102.6 μs 118.1 μs 119.48 KB
CreateInstanceAndLoadAllRegions 7,069.7 μs 385.5 μs 444.0 μs 1619.1 KB
FirstRegionLookup 448.0 μs 142.6 μs 164.2 μs 124.54 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]    : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
ExtractPossibleNumber_CleanInput 1000 21.59 μs 0.020 μs 0.019 μs - -
ExtractPossibleNumber_WithLeadingJunk 1000 38.64 μs 0.058 μs 0.051 μs 0.6714 48360 B

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]    : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
FindNumbers_Valid 100 145.1 μs 0.34 μs 0.30 μs 0.9766 70.71 KB
FindNumbers_StrictGrouping 100 316.6 μs 1.77 μs 1.66 μs 1.4648 123.99 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]    : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
GetDescriptionForNumber 1000 1,439.88 μs 4.631 μs 4.332 μs 1.9531 196.59 KB
GetDisplayCountry 1000 20.81 μs 0.028 μs 0.024 μs 0.0916 7.56 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]    : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
ParseValidateAndFormatPhoneNumbers 1000 2,648.6 μs 33.11 μs 30.97 μs 7.8125 577.71 KB
ParseOnly 1000 440.5 μs 0.59 μs 0.55 μs 4.8828 348.13 KB
ParseNationalFormat 1000 766.8 μs 1.57 μs 1.46 μs 5.8594 431.36 KB
ParseWithExtension 1000 1,131.8 μs 1.70 μs 1.51 μs 13.6719 957.38 KB
ValidateOnly 1000 710.1 μs 1.65 μs 1.46 μs - 41.11 KB
FormatOnly 1000 1,083.2 μs 1.62 μs 1.35 μs 1.9531 187.91 KB
PR base

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]    : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
InputDigitPerKeystroke 1000 4.298 ms 0.0130 ms 0.0122 ms 54.6875 3.87 MB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]     : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  Job-AMQORM : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Runtime=.NET 10.0  InvocationCount=1  IterationCount=20  
LaunchCount=1  RunStrategy=ColdStart  UnrollFactor=1  
WarmupCount=1  

Method Mean Error StdDev Allocated
CreateInstance 417.5 μs 104.3 μs 120.1 μs 119.48 KB
CreateInstanceAndLoadAllRegions 7,040.6 μs 405.3 μs 466.7 μs 1619.1 KB
FirstRegionLookup 462.1 μs 142.9 μs 164.6 μs 124.54 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]    : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
ExtractPossibleNumber_CleanInput 1000 20.89 μs 0.021 μs 0.020 μs - -
ExtractPossibleNumber_WithLeadingJunk 1000 37.93 μs 0.095 μs 0.089 μs 0.6714 48360 B

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]    : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
FindNumbers_Valid 100 142.3 μs 0.89 μs 0.84 μs 0.9766 70.71 KB
FindNumbers_StrictGrouping 100 319.3 μs 0.63 μs 0.59 μs 1.4648 123.99 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]    : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
GetDescriptionForNumber 1000 1,359.05 μs 4.025 μs 3.568 μs 1.9531 196.59 KB
GetDisplayCountry 1000 23.07 μs 0.023 μs 0.022 μs 0.0916 7.56 KB

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
Neoverse-N2, 4 physical cores
.NET SDK 10.0.302
  [Host]    : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a
  .NET 10.0 : .NET 10.0.10 (10.0.10, 10.0.1026.32716), Arm64 RyuJIT armv8.0-a

Job=.NET 10.0  Runtime=.NET 10.0  

Method PhoneNumberCount Mean Error StdDev Gen0 Allocated
ParseValidateAndFormatPhoneNumbers 1000 2,553.3 μs 3.24 μs 2.71 μs 7.8125 577.71 KB
ParseOnly 1000 437.5 μs 0.36 μs 0.30 μs 4.8828 348.13 KB
ParseNationalFormat 1000 771.6 μs 1.64 μs 1.54 μs 5.8594 431.36 KB
ParseWithExtension 1000 1,118.9 μs 1.93 μs 1.71 μs 13.6719 957.38 KB
ValidateOnly 1000 707.1 μs 2.74 μs 2.56 μs - 41.11 KB
FormatOnly 1000 1,076.4 μs 2.39 μs 2.12 μs 1.9531 187.92 KB

@twcclegg
twcclegg merged commit 1c69a50 into main Aug 14, 2026
7 of 8 checks passed
@twcclegg
twcclegg deleted the fix/snupkg branch August 14, 2026 05:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant