Skip to content

OasDeltaOpenAPI breaking-change detection, compiled with .NET

A C# port of oasdiff. Same commands, same flags, same output, in a single NativeAOT executable that runs measurably faster.

OasDelta

Measured on every push ​

These numbers come from the latest run of the Benchmarks & site workflow: the NativeAOT build of oasdelta against the official oasdiff release binary, on GitHub-hosted runners. Full results and methodology →

Linux 4 cores, GitHub-hosted runner

Speed-up, real-world APIs
2.8×
geometric mean, GitHub, Stripe and Kubernetes releases
Speed-up, all cases
2.6×
range 1.1× – 5.9×
Cases where oasdelta is faster
23 / 23
median wall time, start-up included
Identical output
22 / 23
stdout and exit code, byte for byte

One case (k8s-core changelog -f json) prints the same entries as oasdiff in a different order. oasdiff’s own order there changes from run to run (5 orders in 5 runs); OasDelta’s does not. oasdiff sorts changes with a comparison that ignores some of their fields, and leaves changes that differ only in those fields in Go’s random map order.

Windows 4 cores, GitHub-hosted runner

Speed-up, real-world APIs
2.4×
geometric mean, GitHub, Stripe and Kubernetes releases
Speed-up, all cases
2.2×
range 1.1× – 5.2×
Cases where oasdelta is faster
23 / 23
median wall time, start-up included
Identical output
22 / 23
stdout and exit code, byte for byte

One case (k8s-core changelog -f json) prints the same entries as oasdiff in a different order. oasdiff’s own order there changes from run to run (5 orders in 5 runs); OasDelta’s does not. oasdiff sorts changes with a comparison that ignores some of their fields, and leaves changes that differ only in those fields in Go’s random map order.

Apache License 2.0. OasDelta is a derivative work of oasdiff and is not affiliated with or endorsed by the oasdiff project.