Skip to content

[FFE] Bump OpenFeature shim package to match OpenFeature#8198

Merged
daniel-romano-DD merged 6 commits intomasterfrom
dani/ffe/open_feature_shim_package_deps_update
Feb 17, 2026
Merged

[FFE] Bump OpenFeature shim package to match OpenFeature#8198
daniel-romano-DD merged 6 commits intomasterfrom
dani/ffe/open_feature_shim_package_deps_update

Conversation

@daniel-romano-DD
Copy link
Contributor

@daniel-romano-DD daniel-romano-DD commented Feb 12, 2026

Summary of changes

  • Updates the OpenFeature shim package to match the TFMs of the OpenFeature package directly
  • Removes Newtonsoft dependency
  • Fixes build process

Reason for change

  • Currently we're targeting a lower TFM than the OpenFeature package, which can lead to build warnings and weird dependency behaviours. Given this is meant to be a thin wrapper for OpenFeature, we should match the TFMs they use
  • We can avoid needing to add an additional dependency by using the vendored version that's already available in the tracer
  • Ensure we publish the package when making a release

Implementation details

Test coverage

Other details

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2cbe707800

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@pr-commenter
Copy link

pr-commenter bot commented Feb 12, 2026

Benchmarks

Benchmark execution time: 2026-02-17 09:46:49

Comparing candidate commit 359bfe3 in PR branch dani/ffe/open_feature_shim_package_deps_update with baseline commit 42e2dc9 in branch master.

Found 5 performance improvements and 9 performance regressions! Performance is the same for 163 metrics, 15 unstable metrics.

scenario:Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces net6.0

  • 🟩 execution_time [-77.550ms; -76.573ms] or [-38.563%; -38.077%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody netcoreapp3.1

  • 🟥 execution_time [+15.224ms; +19.932ms] or [+7.600%; +9.951%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net472

  • 🟩 execution_time [-30.261ms; -22.468ms] or [-13.610%; -10.105%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net6.0

  • 🟥 execution_time [+11.275ms; +12.578ms] or [+7.309%; +8.154%]
  • 🟥 throughput [-221.543op/s; -209.220op/s] or [-13.348%; -12.606%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces netcoreapp3.1

  • 🟥 execution_time [+18.915ms; +22.171ms] or [+13.117%; +15.376%]
  • 🟥 throughput [-113.211op/s; -80.697op/s] or [-7.286%; -5.193%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice netcoreapp3.1

  • 🟥 throughput [-203.159op/s; -150.171op/s] or [-38.010%; -28.096%]

scenario:Benchmarks.Trace.GraphQLBenchmark.ExecuteAsync netcoreapp3.1

  • 🟥 throughput [-31903.204op/s; -22567.046op/s] or [-7.369%; -5.213%]

scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog netcoreapp3.1

  • 🟩 execution_time [-26.935ms; -23.718ms] or [-13.487%; -11.877%]

scenario:Benchmarks.Trace.SerilogBenchmark.EnrichedLog netcoreapp3.1

  • 🟩 throughput [+8992.841op/s; +10564.143op/s] or [+5.491%; +6.450%]

scenario:Benchmarks.Trace.SpanBenchmark.StartFinishTwoScopes net6.0

  • 🟩 execution_time [-23.484ms; -17.724ms] or [-10.807%; -8.157%]

scenario:Benchmarks.Trace.SpanBenchmark.StartFinishTwoScopes netcoreapp3.1

  • 🟥 execution_time [+11.590ms; +17.606ms] or [+5.887%; +8.942%]

scenario:Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin net6.0

  • 🟥 throughput [-108718.533op/s; -94069.123op/s] or [-11.284%; -9.764%]

Copy link
Contributor

@leoromanovsky leoromanovsky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

very nice; thanks for adjusting the api to the openfeature spec

}

var value = typeof(T) == typeof(Value) ? JsonToValue(evaluation.Value as string) : evaluation.Value!;
var value = typeof(T) == typeof(Value) ? JsonToValue(evaluation.Value) : evaluation.Value!;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Copy link
Member

@andrewlock andrewlock left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! a few suggestions, and one question, but LGTM overall 👍

Comment on lines 135 to 165
private static Value ConvertObject(object? obj)
{
switch (token.Type)
if (obj is Dictionary<string, object?> dic)
{
case JTokenType.Object:
return new Value(ConvertObject((JObject)token));
case JTokenType.Array:
return new Value(ConvertArray((JArray)token));
case JTokenType.Integer:
return new Value((long)token);
case JTokenType.Float:
return new Value((double)token);
case JTokenType.String:
return new Value((string)token);
case JTokenType.Boolean:
return new Value((bool)token);
case JTokenType.Null:
return new Value();
default:
return new Value();
return ConvertStructure(dic);
}
}

private static Structure ConvertObject(JObject obj)
{
var dict = new Dictionary<string, Value>();
foreach (var property in obj.Properties())
else if (obj is object?[] arr)
{
return ConvertArray(arr);
}
else if (obj is long intVal)
{
return new Value(intVal);
}
else if (obj is double doubleVal)
{
dict.Add(property.Name, ConvertToken(property.Value));
return new Value(doubleVal);
}
else if (obj is string strVal)
{
return new Value(strVal);
}
else if (obj is bool boolVal)
{
return new Value(boolVal);
}
else
{
return new Value();
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: switch expressions make this much nicer😄

Suggested change
private static Value ConvertObject(object? obj)
{
switch (token.Type)
if (obj is Dictionary<string, object?> dic)
{
case JTokenType.Object:
return new Value(ConvertObject((JObject)token));
case JTokenType.Array:
return new Value(ConvertArray((JArray)token));
case JTokenType.Integer:
return new Value((long)token);
case JTokenType.Float:
return new Value((double)token);
case JTokenType.String:
return new Value((string)token);
case JTokenType.Boolean:
return new Value((bool)token);
case JTokenType.Null:
return new Value();
default:
return new Value();
return ConvertStructure(dic);
}
}
private static Structure ConvertObject(JObject obj)
{
var dict = new Dictionary<string, Value>();
foreach (var property in obj.Properties())
else if (obj is object?[] arr)
{
return ConvertArray(arr);
}
else if (obj is long intVal)
{
return new Value(intVal);
}
else if (obj is double doubleVal)
{
dict.Add(property.Name, ConvertToken(property.Value));
return new Value(doubleVal);
}
else if (obj is string strVal)
{
return new Value(strVal);
}
else if (obj is bool boolVal)
{
return new Value(boolVal);
}
else
{
return new Value();
}
}
private static Value ConvertObject(object? obj) => obj switch
{
Dictionary<string, object?> dic => ConvertStructure(dic),
object?[] arr => ConvertArray(arr),
long intVal => new Value(intVal),
double doubleVal => new Value(doubleVal),
string strVal => new Value(strVal),
bool boolVal => new Value(boolVal),
_ => new Value()
};

Comment on lines 22 to 23
#if !NETCOREAPP2_1

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leftover from tests. Removed

@dd-trace-dotnet-ci-bot
Copy link

dd-trace-dotnet-ci-bot bot commented Feb 16, 2026

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (8198) and master.

✅ No regressions detected - check the details below

Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration68.90 ± (68.91 - 69.15) ms69.06 ± (69.12 - 69.37) ms+0.2%✅⬆️
.NET Framework 4.8 - Bailout
duration73.05 ± (72.96 - 73.31) ms72.92 ± (72.87 - 73.15) ms-0.2%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1037.82 ± (1042.59 - 1052.44) ms1035.85 ± (1038.78 - 1046.87) ms-0.2%
.NET Core 3.1 - Baseline
process.internal_duration_ms22.37 ± (22.35 - 22.40) ms22.40 ± (22.37 - 22.43) ms+0.1%✅⬆️
process.time_to_main_ms86.93 ± (86.78 - 87.08) ms86.83 ± (86.67 - 86.99) ms-0.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed15.45 ± (15.44 - 15.45) MB15.45 ± (15.45 - 15.45) MB+0.0%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms22.36 ± (22.34 - 22.39) ms22.34 ± (22.31 - 22.36) ms-0.1%
process.time_to_main_ms88.00 ± (87.87 - 88.13) ms88.04 ± (87.89 - 88.20) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed15.49 ± (15.49 - 15.50) MB15.48 ± (15.48 - 15.49) MB-0.1%
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms261.11 ± (258.42 - 263.80) ms254.30 ± (250.88 - 257.73) ms-2.6%
process.time_to_main_ms492.62 ± (492.09 - 493.15) ms494.19 ± (493.58 - 494.80) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed52.15 ± (52.13 - 52.18) MB52.14 ± (52.12 - 52.16) MB-0.0%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.0%
.NET 6 - Baseline
process.internal_duration_ms21.09 ± (21.07 - 21.12) ms21.06 ± (21.03 - 21.08) ms-0.2%
process.time_to_main_ms75.24 ± (75.09 - 75.38) ms75.32 ± (75.17 - 75.48) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed15.17 ± (15.16 - 15.17) MB15.16 ± (15.16 - 15.17) MB-0.0%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.04 ± (21.01 - 21.06) ms20.98 ± (20.95 - 21.00) ms-0.3%
process.time_to_main_ms75.97 ± (75.89 - 76.05) ms76.05 ± (75.94 - 76.17) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed15.29 ± (15.28 - 15.29) MB15.28 ± (15.27 - 15.28) MB-0.1%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms257.30 ± (256.65 - 257.94) ms257.67 ± (256.77 - 258.58) ms+0.1%✅⬆️
process.time_to_main_ms473.21 ± (472.66 - 473.76) ms471.39 ± (470.84 - 471.94) ms-0.4%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed53.02 ± (52.99 - 53.04) MB53.05 ± (53.02 - 53.08) MB+0.1%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms18.82 ± (18.79 - 18.84) ms18.90 ± (18.88 - 18.93) ms+0.5%✅⬆️
process.time_to_main_ms68.11 ± (68.00 - 68.22) ms68.14 ± (68.01 - 68.26) ms+0.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.68 ± (7.67 - 7.69) MB7.66 ± (7.65 - 7.66) MB-0.3%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms18.79 ± (18.76 - 18.81) ms18.98 ± (18.95 - 19.01) ms+1.0%✅⬆️
process.time_to_main_ms69.36 ± (69.25 - 69.46) ms69.24 ± (69.12 - 69.36) ms-0.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.76 ± (7.75 - 7.77) MB7.71 ± (7.70 - 7.72) MB-0.6%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms180.32 ± (179.54 - 181.10) ms180.01 ± (179.07 - 180.95) ms-0.2%
process.time_to_main_ms427.87 ± (427.29 - 428.44) ms430.46 ± (429.79 - 431.13) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed35.95 ± (35.92 - 35.97) MB35.94 ± (35.91 - 35.98) MB-0.0%
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)-0.0%

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration191.09 ± (191.13 - 191.83) ms193.15 ± (192.92 - 193.76) ms+1.1%✅⬆️
.NET Framework 4.8 - Bailout
duration195.16 ± (195.02 - 195.63) ms196.03 ± (195.96 - 196.43) ms+0.4%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1130.03 ± (1131.85 - 1137.77) ms1134.46 ± (1136.96 - 1143.63) ms+0.4%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms190.21 ± (189.85 - 190.58) ms190.46 ± (190.14 - 190.79) ms+0.1%✅⬆️
process.time_to_main_ms87.90 ± (87.71 - 88.10) ms88.52 ± (88.27 - 88.76) ms+0.7%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed20.62 ± (20.60 - 20.65) MB20.66 ± (20.64 - 20.68) MB+0.2%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 20)20 ± (20 - 20)+0.9%✅⬆️
.NET Core 3.1 - Bailout
process.internal_duration_ms190.29 ± (189.98 - 190.60) ms190.29 ± (189.97 - 190.61) ms-0.0%
process.time_to_main_ms88.88 ± (88.73 - 89.03) ms89.32 ± (89.18 - 89.47) ms+0.5%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed20.68 ± (20.65 - 20.72) MB20.75 ± (20.72 - 20.77) MB+0.3%✅⬆️
runtime.dotnet.threads.count21 ± (20 - 21)21 ± (20 - 21)+0.2%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms437.07 ± (433.92 - 440.21) ms439.75 ± (436.70 - 442.80) ms+0.6%✅⬆️
process.time_to_main_ms494.38 ± (493.80 - 494.95) ms495.70 ± (495.16 - 496.23) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed62.64 ± (62.53 - 62.75) MB62.50 ± (62.39 - 62.61) MB-0.2%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms190.77 ± (190.52 - 191.02) ms190.30 ± (189.98 - 190.61) ms-0.2%
process.time_to_main_ms69.58 ± (69.44 - 69.71) ms69.88 ± (69.71 - 70.04) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed15.97 ± (15.81 - 16.12) MB16.10 ± (15.96 - 16.25) MB+0.8%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.4%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms190.30 ± (189.90 - 190.70) ms189.85 ± (189.48 - 190.21) ms-0.2%
process.time_to_main_ms70.79 ± (70.69 - 70.90) ms70.86 ± (70.73 - 70.99) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.13 ± (15.98 - 16.29) MB16.24 ± (16.10 - 16.37) MB+0.6%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 20)+1.5%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms448.12 ± (446.02 - 450.21) ms445.56 ± (442.97 - 448.14) ms-0.6%
process.time_to_main_ms446.00 ± (445.51 - 446.49) ms445.81 ± (445.37 - 446.25) ms-0.0%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed58.14 ± (58.04 - 58.25) MB58.14 ± (58.03 - 58.25) MB-0.0%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.0%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms193.01 ± (192.62 - 193.41) ms192.35 ± (192.00 - 192.70) ms-0.3%
process.time_to_main_ms75.93 ± (75.73 - 76.14) ms75.65 ± (75.44 - 75.85) ms-0.4%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.31 ± (16.29 - 16.34) MB16.33 ± (16.31 - 16.36) MB+0.1%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.5%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms191.78 ± (191.48 - 192.08) ms193.09 ± (192.70 - 193.48) ms+0.7%✅⬆️
process.time_to_main_ms76.87 ± (76.75 - 76.99) ms77.01 ± (76.83 - 77.18) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.41 ± (16.39 - 16.44) MB16.36 ± (16.33 - 16.38) MB-0.4%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)+0.7%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms369.37 ± (367.93 - 370.81) ms370.80 ± (369.26 - 372.34) ms+0.4%✅⬆️
process.time_to_main_ms454.16 ± (453.41 - 454.90) ms456.11 ± (455.45 - 456.77) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed52.30 ± (52.25 - 52.34) MB52.25 ± (52.21 - 52.29) MB-0.1%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)-0.1%
Comparison explanation

Execution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8198) - mean (69ms)  : 67, 71
    master - mean (69ms)  : 67, 71

    section Bailout
    This PR (8198) - mean (73ms)  : 72, 74
    master - mean (73ms)  : 71, 75

    section CallTarget+Inlining+NGEN
    This PR (8198) - mean (1,043ms)  : 985, 1100
    master - mean (1,048ms)  : 976, 1119

Loading
FakeDbCommand (.NET Core 3.1)
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8198) - mean (115ms)  : 112, 118
    master - mean (115ms)  : 112, 119

    section Bailout
    This PR (8198) - mean (116ms)  : 114, 118
    master - mean (116ms)  : 115, 118

    section CallTarget+Inlining+NGEN
    This PR (8198) - mean (772ms)  : 710, 834
    master - mean (781ms)  : 741, 820

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8198) - mean (102ms)  : 100, 104
    master - mean (102ms)  : 99, 104

    section Bailout
    This PR (8198) - mean (102ms)  : 101, 104
    master - mean (103ms)  : 101, 104

    section CallTarget+Inlining+NGEN
    This PR (8198) - mean (757ms)  : 734, 781
    master - mean (759ms)  : 738, 781

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8198) - mean (94ms)  : 91, 96
    master - mean (93ms)  : 91, 96

    section Bailout
    This PR (8198) - mean (95ms)  : 93, 97
    master - mean (95ms)  : 93, 96

    section CallTarget+Inlining+NGEN
    This PR (8198) - mean (639ms)  : 629, 650
    master - mean (634ms)  : 622, 647

Loading
HttpMessageHandler (.NET Framework 4.8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8198) - mean (193ms)  : 189, 198
    master - mean (191ms)  : 188, 195

    section Bailout
    This PR (8198) - mean (196ms)  : 194, 198
    master - mean (195ms)  : 192, 198

    section CallTarget+Inlining+NGEN
    This PR (8198) - mean (1,140ms)  : 1092, 1189
    master - mean (1,135ms)  : 1093, 1177

Loading
HttpMessageHandler (.NET Core 3.1)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8198) - mean (288ms)  : 281, 295
    master - mean (287ms)  : 282, 293

    section Bailout
    This PR (8198) - mean (288ms)  : 283, 293
    master - mean (288ms)  : 282, 293

    section CallTarget+Inlining+NGEN
    This PR (8198) - mean (966ms)  : 914, 1018
    master - mean (963ms)  : 914, 1013

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8198) - mean (268ms)  : 264, 272
    master - mean (269ms)  : 265, 273

    section Bailout
    This PR (8198) - mean (269ms)  : 264, 273
    master - mean (269ms)  : 264, 275

    section CallTarget+Inlining+NGEN
    This PR (8198) - mean (921ms)  : 885, 957
    master - mean (924ms)  : 896, 951

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8198) - mean (278ms)  : 274, 283
    master - mean (279ms)  : 272, 286

    section Bailout
    This PR (8198) - mean (280ms)  : 275, 284
    master - mean (279ms)  : 275, 282

    section CallTarget+Inlining+NGEN
    This PR (8198) - mean (860ms)  : 839, 880
    master - mean (857ms)  : 837, 877

Loading

Copy link
Member

@andrewlock andrewlock left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

daniel-romano-DD and others added 6 commits February 17, 2026 10:02
…gs.OpenFeature.csproj

Co-authored-by: Andrew Lock <andrew.lock@datadoghq.com>
…gs.OpenFeature.csproj

Co-authored-by: Andrew Lock <andrew.lock@datadoghq.com>
Co-authored-by: Andrew Lock <andrew.lock@datadoghq.com>
@daniel-romano-DD daniel-romano-DD force-pushed the dani/ffe/open_feature_shim_package_deps_update branch from e6bffcb to 359bfe3 Compare February 17, 2026 09:05
@daniel-romano-DD daniel-romano-DD enabled auto-merge (squash) February 17, 2026 09:05
@daniel-romano-DD daniel-romano-DD merged commit b9628c8 into master Feb 17, 2026
141 of 142 checks passed
@daniel-romano-DD daniel-romano-DD deleted the dani/ffe/open_feature_shim_package_deps_update branch February 17, 2026 11:30
@github-actions github-actions bot added this to the vNext-v3 milestone Feb 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments