Skip to main content

bump-libdatadog-version

Bump the pinned upstream libdatadog version for libdatadog-dotnet. Use when the user says "Bump to the latest version of libdatadog", "Bump to libdatadog vX.Y.Z", or otherwise asks to upgrade / update the libdatadog version in this repo. Handles the LIBDATADOG_VERSION file and any required Rust toolchain pin update.

Zur Installation springen

Quellinformationen

Repository
DataDog/libdatadog-dotnet
Letzte Quellaktivität
24. Juni 2026 um 12:34
Erkannte Sprache von SKILL.md
Englisch
Sterne
1
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
bump-libdatadog-version
description
Bump the pinned upstream libdatadog version for libdatadog-dotnet. Use when the user says "Bump to the latest version of libdatadog", "Bump to libdatadog vX.Y.Z", or otherwise asks to upgrade / update the libdatadog version in this repo. Handles the LIBDATADOG_VERSION file and any required Rust toolchain pin update.
disable-model-invocation
true
# Bump libdatadog Version Upgrades the pinned upstream [libdatadog](https://github.com/DataDog/libdatadog) version for this packaging repo. The version lives in a single file (`LIBDATADOG_VERSION`, no `v` prefix), and a correct bump may also require a Rust toolchain pin update. ## Workflow Copy this checklist and track progress: ``` - [ ] Step 1: Resolve the target version - [ ] Step 2: Update LIBDATADOG_VERSION - [ ] Step 3: Check upstream Rust MSRV; update the pin if changed - [ ] Step 4: Check the macOS runner pin (only if MSRV/toolchain shifted) - [ ] Step 5: Update AGENTS.md "Recent Changes" + README if needed - [ ] Step 6: Summarize and propose next steps (build / PR) ``` ### Step 1: Resolve the target version - **"Bump to libdatadog vX.Y.Z"** → target is `X.Y.Z` (strip any leading `v`). - **"Bump to the latest version"** → fetch the latest stable release (already strips the leading `v`): ```bash curl -fsSL https://api.github.com/repos/DataDog/libdatadog/releases/latest \ | grep -m1 '"tag_name"' | sed -E 's/.*"tag_name": *"v?([^"]+)".*/\1/' ``` Read the current pin with the Read tool on `LIBDATADOG_VERSION`. If it already equals the target, tell the user and stop. Otherwise **remember this value as `OLD_VERSION`** — Step 2 overwrites the file, and Step 3 needs the old version to detect an MSRV change. ### Step 2: Update LIBDATADOG_VERSION Write the bare version (no `v`, single trailing newline) to `LIBDATADOG_VERSION`. ### Step 3: Check upstream Rust MSRV; update the pin if changed The Rust toolchain is pinned to **match upstream libdatadog's MSRV**. Building with a different toolchain than upstream can introduce subtle codegen / ABI differences. The MSRV lives in `rust-version` under `[workspace.package]` in libdatadog's root `Cargo.toml`. Compare the MSRV at the **target** tag against the MSRV at the **`OLD_VERSION`** tag (the value captured in Step 1) — don't compare against a hardcoded number, since the repo's pin moves over time, and don't re-read `LIBDATADOG_VERSION` here (Step 2 already overwrote it with `TARGET`, so it would falsely report no change): ```bash extract_msrv() { # $1 = libdatadog tag without leading v curl -fsSL "https://raw.githubusercontent.com/DataDog/libdatadog/v$1/Cargo.toml" \ | grep -i 'rust-version' | head -n1 \ | sed -E 's/.*"([0-9]+\.[0-9]+(\.[0-9]+)?)".*/\1/' } echo "old: $(extract_msrv <OLD_VERSION>)" # the pin captured in Step 1 echo "target: $(extract_msrv <TARGET>)" ``` - **Same value** → MSRV unchanged, leave the toolchain alone. Skip to Step 4. - **Different value** → the bump needs a toolchain pin update. Sanity-check the target MSRV against what's actually pinned in this repo: ```bash grep -rn 'rust-version\|RUST_VERSION\|default-toolchain\|rustup' . \ --exclude-dir=.cursor --exclude-dir=.git ``` Then update **all** of these from the old MSRV to the target MSRV: - `.github/workflows/build-platform.yml` — the `Setup Rust` step (`rustup install` / `rustup default`) - `tools/docker/Dockerfile.centos-aarch64` — `--default-toolchain` - `tools/docker/Dockerfile.musl-x64` — `ARG RUST_VERSION` - `tools/docker/Dockerfile.musl-aarch64` — `ARG RUST_VERSION` - `README.md` — the prerequisites line Keep this in the **same commit** as the `LIBDATADOG_VERSION` bump — the two are coupled (building the new version with the old toolchain is exactly the mismatch the pin guards against). The change is picked up automatically on the next build; there are no prebuilt/pushed images to refresh: - Docker-image platforms (aarch64-gnu, musl-x64, musl-aarch64): `build.sh` rebuilds each image from its Dockerfile every run (`docker build -f ...`), so editing `ARG RUST_VERSION` / `--default-toolchain` recompiles with the new toolchain. - Host-toolchain platforms (x86_64-gnu, macOS, Windows): the pin comes from the `Setup Rust` step in `build-platform.yml`, which runs fresh each time. (`Dockerfile.centos` for x86_64-gnu installs no Rust — it mounts the host toolchain — which is why it is not in the list above.) ### Step 4: Check the macOS runner pin (only if the toolchain shifted) macOS runners are pinned (`macos-14` / `macos-14-large`, Sonoma) to match upstream libdatadog's `libddprof-build` pipeline. This rarely changes. Only revisit it if upstream moved its macOS build image; the `os:` fields live in `.github/workflows/build-platform.yml`. ### Step 5: Update docs - Add a dated entry to the top of the **Recent Changes** list in `AGENTS.md` (e.g. `- **YYYY-MM**: Bumped to libdatadog v<TARGET>.` and note the MSRV change if any). - The README's libdatadog references are version-agnostic (they read the file), so only edit it if the Rust pin changed (Step 3). ### Step 6: Summarize and propose next steps Report what changed (version, and MSRV pin if touched). Then offer to: - Run a local smoke build: `./build.sh --platform x86_64-unknown-linux-gnu --clean` - Open a PR (CI's **Build** workflow runs all 8 platforms on the PR). Do not commit or open a PR unless the user asks. **Always flag the coordinated-rollout caveat** so the bump isn't mistaken for a complete, self-contained change: bumping `LIBDATADOG_VERSION` (and cutting a release) here is fine on its own, but libdatadog's profiling FFI API drifts between tags. The new version is only proven compatible once the dd-trace-dotnet PR that adopts the new libdatadog-dotnet **release tag** (e.g. `v1.3.5` — a different number from `LIBDATADOG_VERSION`) compiles its native profiler (`cor_profiler.cpp`, `dd_profiler_constants.h`) against the matching profiling headers in the same rollout. This is a coordination requirement on the tracer side, **not** a precondition that blocks the bump here. ## Notes - Feature set is **not** part of a version bump — leave `FEATURES` / `Features` / workflow `features` defaults alone unless the user explicitly asks. - The `curl` commands need network access but no auth or extra tooling (they hit public release/raw endpoints). If `curl` is unavailable, `wget -qO-` works with the same URLs.
Auf GitHub ansehen