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에서 보기