Skip to content

Releases: grafana/pyroscope-dotnet

pyroscope: v1.2.0

18 Jun 14:01
3d6a5c9

Choose a tag to compare

1.2.0 (2026-06-18)

Features

Bug Fixes

  • upload large profiles reliably over HTTPS (#360) (978fe4b)

Continuous Integration

  • Windows profiler build and test workflow (#355) (1d0da1f)

pyroscope: v1.1.0

16 Jun 06:17
7d5a4d6

Choose a tag to compare

1.1.0 (2026-06-16)

Features

  • allocated type as leaf node (#347) (f9e364b)
  • tracing: unify OpenTracing and OpenTelemetry into a single release (#345) (a85c963)

Bug Fixes

  • avoid double-freeing timer_create unwinder (#349) (230c40f)
  • ci: authenticate nuget.org publish via Trusted Publishing (#329) (4f7feca)
  • ci: use package-relative paths in release-please tracing extra-files (#335) (0504840)
  • reserve dynamic tag key storage (#344) (3de5d32)
  • tracing: trigger release of OpenTracing and OpenTelemetry packages (#332) (bb14ea1)
  • tracing: trigger release of OpenTracing and OpenTelemetry packages (#332) (#337) (0f6e415)

Performance Improvements

  • miniutf: avoid intermediate allocations in ToString(WCHAR*) (#343) (55e4ef2)

Miscellaneous Chores

  • add pyroscope-dotnet-maintainers to CODEOWNERS (#340) (9dd0f0f)
  • deps: update dependency openssl/openssl to v3.5.7 (#356) (4bd2eab)
  • derive RELEASE_VERSION from manifest and drop dev image publishing (#342) (a16a543)
  • fix period for memory pprof, rename alloc profile type to memory (#351) (3dc4557)
  • main: release opentelemetry 0.5.0 (#333) (bd77291)
  • main: release opentracing 0.4.1 (#334) (e0672e5)
  • main: release pyroscope 1.0.0 (#328) (5138535)
  • target Pyroscope tracing packages at net8.0 (#339) (115decd)

opentelemetry: v0.5.0

05 Jun 14:57
bd77291

Choose a tag to compare

0.5.0 (2026-06-05)

Features

  • tracing: unify OpenTracing and OpenTelemetry into a single release (#345) (a85c963)

Bug Fixes

  • tracing: trigger release of OpenTracing and OpenTelemetry packages (#332) (bb14ea1)
  • tracing: trigger release of OpenTracing and OpenTelemetry packages (#332) (#337) (0f6e415)

Miscellaneous Chores

  • main: release opentracing 0.4.1 (#334) (e0672e5)
  • target Pyroscope tracing packages at net8.0 (#339) (115decd)

pyroscope: v1.0.0

03 Jun 08:09
447512a

Choose a tag to compare

1.0.0 (2026-06-03)

⚠ BREAKING CHANGES

  • replace handwritten release workflows with release-please (#325)

Features

  • implement Poisson upscaling in PprofExporter; add tests and comments (96dc769)
  • improve GitHub workflows to support RC releases (#166) (feed50d), closes #159
  • Poisson-weighted heap profiling with corrected two-layer upscale (752e915)
  • Stable Session ID headers for telemetry (#8352) (f5d4398)
  • use human-readable frame names instead of pipe-delimited format (#243) (b8a43ae)

Bug Fixes

  • BuildThreadStatPath (#183) (551f15f)
  • correct frequency expectations in PoissonAllocationSamplerTest (989f685)
  • correct two-layer upscale weight for heap sampling (a2e7e52)
  • debugger: clarify unbound line probe reasons (#8415) (55ada2a)
  • deps: update module connectrpc.com/connect to v1.19.2 (#302) (e4efdad)
  • handle RC versions in release workflows (#173) (401df3d)
  • itest: add trailing semicolon to CORECLR_NOTIFICATION_PROFILERS for .NET 9+ (7d1f625)
  • itest: publish to separate dir for .NET 10 compatibility (a60f8df)
  • itest: remove explicit OutputType for .NET 10 compatibility (4a1cc92)
  • itest: use explicit Main method for .NET 10 compatibility (7087fad)
  • itest: use host.docker.internal instead of host-gateway for TLS test (1b7b0a0)
  • mstest: add 4.2.1 adapter signatures (#8475) (0f665fe)
  • normalize pyroscope push endpoint path (d57675a)
  • only apply -stdlib=libstdc++ for Clang C++ compilation (#176) (d9eddf3)
  • replace hyphens with underscores in sample type names (#189) (60d1219)
  • security/unknown: update go toolchain directive to v1.26.3 [security] (#320) (cebd09c)
  • security/unknown: update go toolchain directive to v1.26.4 [security] (#327) (d01cbb1)
  • security/unknown: update module golang.org/x/net to v0.53.0 [security] (#316) (f4ee1b6)
  • set --openssldir=/etc/ssl so profiler finds system CA bundle (8eb77f1)
  • set --openssldir=/etc/ssl so profiler finds system CA bundle on user machines (d5c4ca7)
  • tests: make sure we include the codeowners tag on all tests (#8060) (1b5e971)
  • use apk instead of apt-get in musl/Alpine itest-with-otel image (#249) (fe09f34)
  • use default server address when env var is not set (#174) (45981ed), closes #167
  • wire SetCPUTrackingEnabled to start/stop TimerCreateCpuProfiler (72cbf5b)

Miscellaneous Chores

  • add profiler/_build/ to .dockerignore (#245) (8a01bf3)
  • Add skill with steps for the release process (6fad282)
  • Add skill with steps for the release process (9ec7326)
  • ci: publish to GAR instead of dockerhub (#324) (226658a)
  • config: migrate config renovate.json (#227) (afaa0e3)
  • deps: pin dependencies (508f2b9)
  • deps: pin dependencies (16b7369)
  • deps: shrink deps (#323) (e24e1b1)
  • deps: update actions/checkout action to v4.3.1 (f497839)
  • deps: update actions/checkout action to v4.3.1 (43792a1)
  • deps: update actions/checkout action to v6 (#151) (12c33ec)
  • deps: update actions/checkout digest to de0fac2 (#172) (34bef2d)
  • deps: update actions/setup-dotnet digest to 131b410 (#160) (ee03049)
  • deps: update actions/setup-dotnet digest to baa11fb (92bd4b7)
  • deps: update actions/setup-dotnet digest to baa11fb (eb4407c)
  • deps: update actions/setup-go action to v6 (#272) (bf51313)
  • deps: update actions/setup-go digest to 40f1582 (#237) (c10e89b)
  • deps: update actions/upload-artifact action to v7 (#234) (f5fd0f1)
  • deps: update actions/upload-artifact digest to 043fb46 (#268) (3b01c86)
  • deps: update busybox docker tag to v1.37.0 ([#146](https...
Read more

opentracing: v0.4.1

03 Jun 13:36
e0672e5

Choose a tag to compare

0.4.1 (2026-06-03)

Bug Fixes

  • tracing: trigger release of OpenTracing and OpenTelemetry packages (#332) (bb14ea1)
  • tracing: trigger release of OpenTracing and OpenTelemetry packages (#332) (#337) (0f6e415)

v0.15.0-pyroscope

06 May 09:37
e726686

Choose a tag to compare

Important

Docker container images have moved from pyroscope/pyroscope-dotnet to grafana/pyroscope-dotnet.

What's Changed

New Contributors

  • @SAY-5 made their first contribution in #291
  • @github-actions[bot] made their first contribution in #308

Full Changelog: v0.14.5-pyroscope...v0.15.0-pyroscope

v0.14.5-pyroscope

13 Apr 07:27
44c0b61

Choose a tag to compare

v0.14.5-pyroscope

Bug Fixes

Dependencies

  • chore(deps): update dependency openssl/openssl to v3.5.6 (#260)
    @korniltsev-grafanista
  • chore(deps): update actions/setup-go digest to 40f1582 (#237) @renovate-sh-app
  • chore(deps): update actions/upload-artifact action to v7 (#234) @renovate-sh-app
  • chore(deps): update grafana/shared-workflows/ action (#228) @renovate-sh-app

Maintenance

v0.14.4-pyroscope

02 Apr 13:03
2ee588c

Choose a tag to compare

What's Changed

  • feat: Poisson-weighted heap profiling with corrected two-layer upscale (#246)

Docker images

Full Changelog: v0.14.3-pyroscope...v0.14.4-pyroscope

v0.14.3-pyroscope

27 Mar 16:19
b7cf177

Choose a tag to compare

What's Changed

  • ci: add .NET 9.0 and 10.0 integration tests (#252)
  • fix: set --openssldir=/etc/ssl so profiler finds system CA bundle (#251)
  • fix: use apk instead of apt-get in musl notification-profiler itest (#249)
  • chore(deps): update module google.golang.org/grpc to v1.79.3 [security] (#248)
  • fix: UB in DebugInfoStore::Get(): re-acquire iterator after map insertion (#244)
  • chore: add profiler/_build/ to .dockerignore (#245)

Docker images

Full Changelog: v0.14.2-pyroscope...v0.14.3-pyroscope

v0.14.3-heap-poisson.1-rc-pyroscope

24 Mar 17:06

Choose a tag to compare

Pre-release
fix: correct two-layer upscale weight for heap sampling

The live-objects profiler had a ~10x undercount because GetUpscaleWeight()
only compensated for our secondary Poisson filter (layer 2) while ignoring
the CLR's own size-proportional AllocationTick sampling (layer 1).

Fix the two bugs together:
- ShouldSample() now decrements by the 100KB AllocationTick window instead
  of objectSize, so the filter operates on the same unit the CLR uses.
- GetUpscaleWeight() now computes w_clr × w_ours: the CLR layer weight
  (allocationWindow/objectSize ≈ 100) times the our-filter layer weight
  (samplingRate/allocationWindow ≈ 5.5), giving a combined ≈550 instead
  of the broken ≈512.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>