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.

ソース情報

リポジトリ
DataDog/libdatadog-dotnet
ソースの最終更新活動
2026年6月24日 12:34
検出された SKILL.md の言語
英語
スター
1
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
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.
GitHubで見る