Update/bump the libdatadog native library version in dd-trace-dotnet. Use when the user asks to bump, update, or upgrade libdatadog, or mentions a new libdatadog release version.
74
93%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
The native library is consumed as prebuilt binaries from GitHub releases of
DataDog/libdatadog-dotnet — the .NET-specific
distribution of libdatadog (a minimal feature preset: profiling, crashtracker, symbolizer,
library-config). This is not upstream DataDog/libdatadog.
Version scheme: the pinned version is libdatadog-dotnet's own release version (e.g.
v1.3.5), which is distinct from the upstream libdatadog version it is built from (tracked byLIBDATADOG_VERSIONin that repo — e.g. libdatadog-dotnetv1.3.5is built from upstream libdatadogv32.0.0). Pin the libdatadog-dotnet version here, not the upstream one.
There are two version pins to update, both from the same libdatadog-dotnet release:
| Platform | File | Hash type | Version format |
|---|---|---|---|
| Linux/macOS | build/cmake/FindLibdatadog.cmake | SHA-256 | v<MAJOR>.<MINOR>.<PATCH> |
| Windows | build/vcpkg_local_ports/libdatadog/vcpkg.json + portfile.cmake | SHA-512 | <MAJOR>.<MINOR>.<PATCH> (no v prefix) |
A libdatadog-dotnet release builds all 8 platform artifacts together, so the two pins should normally move to the same version in lockstep. Confirm with the user if they intend otherwise.
build/cmake/FindLibdatadog.cmakeUpdate these values:
LIBDATADOG_VERSION — the version tag (e.g. "v32.0.0")SHA256_LIBDATADOG_ARM64 — macOS arm64 hashSHA256_LIBDATADOG_X86_64 — macOS x86_64 hashSHA256_LIBDATADOG (aarch64 gnu) — Linux aarch64 glibc hashSHA256_LIBDATADOG (aarch64 musl) — Linux aarch64 Alpine hashSHA256_LIBDATADOG (x86_64 musl) — Linux x86_64 Alpine hashSHA256_LIBDATADOG (x86_64 gnu) — Linux x86_64 glibc hashArtifact filenames (from GitHub releases):
libdatadog-aarch64-apple-darwin.tar.gzlibdatadog-x86_64-apple-darwin.tar.gzlibdatadog-aarch64-unknown-linux-gnu.tar.gzlibdatadog-aarch64-alpine-linux-musl.tar.gzlibdatadog-x86_64-alpine-linux-musl.tar.gz (note: uses ${CMAKE_SYSTEM_PROCESSOR} in filename)libdatadog-x86_64-unknown-linux-gnu.tar.gz (note: uses ${CMAKE_SYSTEM_PROCESSOR} in filename)build/vcpkg_local_ports/libdatadog/Two files:
vcpkg.json — update "version-string" (no v prefix)portfile.cmake — update SHA-512 hashes for x64 and x86 Windows zipsArtifact filenames:
libdatadog-x64-windows.ziplibdatadog-x86-windows.zipAsk the user for the target version, or check the latest release:
https://github.com/DataDog/libdatadog-dotnet/releasesSHA-256 and SHA-512 checksums are published directly in the GitHub release notes. Either:
https://github.com/DataDog/libdatadog-dotnet/releases/tag/v<VERSION> and copy from the checksums sections, orbash .claude/skills/bump-libdatadog/scripts/fetch-release-hashes.sh <VERSION>Where <VERSION> is without the v prefix (e.g. 1.3.5).
The release notes contain:
FindLibdatadog.cmake (6 Linux/macOS artifacts)portfile.cmake (2 Windows artifacts)build/cmake/FindLibdatadog.cmakeLIBDATADOG_VERSION to "v<VERSION>"SHA256_LIBDATADOG* value with the new SHA-256 hash from the script outputbuild/vcpkg_local_ports/libdatadog/vcpkg.jsonUpdate "version-string" to the new version (no v prefix).
build/vcpkg_local_ports/libdatadog/portfile.cmakeReplace the SHA-512 hashes for x64 and x86 Windows builds.
# Linux — validates CMake SHA-256 hashes during configure
./tracer/build.sh CompileProfilerNativeSrc
# Windows — validates vcpkg SHA-512 hashes during install
.\tracer\build.cmd CompileProfilerNativeSrcThese don't contain version strings but may need refreshing after a bump if the exported symbol set or glibc requirements change:
tracer/build/_build/NativeValidation/native-libdatadog-symbols-alpine-x64.verified.txttracer/build/_build/NativeValidation/native-libdatadog-symbols-alpine-arm64.verified.txtCI will fail if the symbol list changes — re-run the Alpine symbol validation step and accept the new snapshot.
Because libdatadog-dotnet ships a reduced feature set (no data-pipeline, log, telemetry,
ddsketch, or ffe), its exported symbols are a strict subset of upstream libdatadog — so these
snapshots reflect that smaller set. The glibc cap in Build.Profiler.Steps.cs
(libdatadog_profiling ≤ 2.15 on x64, ≤ 2.17 on arm64) still applies and is unchanged by the source
switch — libdatadog-dotnet x64 builds are capped at GLIBC 2.15, same as upstream.
Several files under tracer/src/Datadog.Trace/LibDatadog/ have XML doc comments linking to a specific upstream libdatadog git SHA (e.g. 60583218a8de6768f67d04fcd5bc6443f67f516b). These are informational only and can be updated for traceability (use the upstream SHA the libdatadog-dotnet release was built from):
VecU8.cs, CharSlice.cs, Error.csServiceDiscovery/ResultTag.cs, ServiceDiscovery/TracerMemfdHandleResult.csprofiler/Directory.Build.targets — Windows link dependencies for libdatadogtracer/build/_build/Build.Steps.cs — copies libdatadog binary to monitoring hometracer/build/_build/Build.Profiler.Steps.cs — profiler build steps; glibc version expectations for Alpine.gitlab/one-pipeline.locked.yml — CI pipeline (auto-generated, don't edit manually)vcpkg.json (root) — declares dependency on libdatadog (no version pin here)vcpkg-configuration.json — overlay ports config## Checksums).v prefix (v1.3.5); vcpkg does not (1.3.5).733efb0
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.