Skip to content

GDB/AI 1.3.0

Latest

Choose a tag to compare

@0wnerDied 0wnerDied released this 09 Sep 07:03
· 3 commits to master since this release

Changes since v1.2.0

GDB/AI 1.3.0 combines more native debugging work into one Agent call, preserves richer GDB values, and lets cooperating callers share immutable observations.

Native debugging and shared observations

  • Launch can create a session implicitly, install breakpoint locations before execution, and return requested stop observations together with target output. Restart also accepts observation plans. A failed launch retains the newly created session's identity for recovery or cleanup.
  • Run, batch, and snapshot requests share bounded inspection plans and stop context. Independent read failures preserve successful results and report incompleteness. Authorized callers can retrieve an immutable observation by ID without new GDB commands, including while control is pending or after the session closes, within retention limits.
  • Stack and thread views include available frame arguments. Optional include_locals: true captures typed locals and aggregate contents for the returned frames; standalone locals and profile snapshots retain aggregate values too. Paging, frame budgets, unavailable values, and partial unwind errors remain explicit.
  • Memory reads through projected Agent tools now return exact data_hex by default. Hex pairs follow ascending byte addresses without guessing text encoding or integer byte order. Large reads retain bounded previews and exact binary artifacts.
  • Qualified concurrent metadata and top-frame register reads reuse bounded same-stop captures. Memory, expressions, and unwound register reads are not cached. Cooperative controller handoff stays within the same authenticated principal.

Correctness, evidence, and SDKs

  • Preserve MI3 breakpoint command lists and verify their execution and replay across the supported GDB matrix. Deliver complete MI records before reporting a later framing error, and seed parser fuzzing with individual records.
  • Preserve thread ownership across unscoped stop events and reconciliation, partial stdio requests across response interleaving, and operation handles after asynchronous waiter timeouts. Cancellation and close retain their independent control path, including around late replies and checkpoint failures.
  • Keep native facts, capture context, completeness, and evidence distinct in compact Agent replies. Preserve precise binary values, variable-object creation context, crash capture identity, promoted snapshot metadata, and successful sibling reads when another read fails.
  • Batch journal evidence references and retain readable resource links. Historical observations and differences remain independent of live execution and do not silently re-read the target.
  • Add typed common debugging operations and one-call launch examples to the Python and TypeScript SDKs. Real-server verification covers shared history during pending control, controller handoff, both HTTP protocol versions, and both journal durability modes.
  • Centralize release input in VERSION. Run python3 scripts/version.py after editing it, or python3 scripts/version.py X.Y.Z to update it and synchronize native package metadata. CI rejects version drift and mismatched release tags. The standard-library script validates all metadata locations before writing and leaves third-party and protocol versions unchanged.

Upgrade and deployment notes

  • Projected observation identity is in context.observation_id; completeness is top-level complete. Matching copies are omitted from result. Consume the compact envelope and preserve explicit errors, continuation, truncation, and historical markers.
  • Canonical memory calls keep their Base64 default. Set encoding: "base64" on projected calls to retain that representation, or explicitly choose "hex" on either interface. Historical captures retain their original representation.
  • Rust and SDK package versions are 1.3.0. The canonical namespace remains gdb.ai/v1; MCP 2025-11-25 and 2026-07-28 remain supported. See the versioned protocol guide and SDK guide.
  • Deployment remains a trusted local workspace under the server's OS account. API ownership is not containment for GDB, helpers, or target code; untrusted workloads need an external container or VM boundary. See the security model.

Verification and release assets

  • Tag: v1.3.0; source commit: 956cbdb.
  • All packaging gates in the tagged CI run passed: version consistency, formatting, required Rust tests, Clippy, canonical schema checks, native runtime comparisons, Python/TypeScript SDK checks, three fuzz campaigns, GDB 9.2–17.2 compatibility, native AArch64 system tests, and Linux kernel 6.1/6.12/6.12-arm64 checks.
  • The independent 10,000-cycle real GDB lifecycle soak passed in the tagged CI run. It remains separate from the packaging gate. The complete tagged workflow finished successfully before Release publication.
  • Assets contain the static x86-64 Linux musl binary bundle, deterministic source archive, CycloneDX 1.5 SBOM, and SHA256SUMS. GDB itself is not bundled. GitHub build provenance binds all four asset digests to this tag, source commit, and workflow run.
  • All downloaded checksums and embedded schema hashes passed. The uncompressed source archive matches git archive of the tagged commit byte for byte. The binary reports 1.3.0, v1.3.0, the source commit above, Rust 1.88.0, and dirty: false; it has no dynamic program interpreter.
  • python3 sdk/verify.py /path/to/extracted/gdb-ai also passed against the downloaded static binary: both SDKs, both HTTP protocols, and both history modes, including complete replay of all 16 session journals and shared historical reads during pending control.

Full changelog: v1.2.0...v1.3.0