Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/instructions/cdac.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
applyTo: "src/native/managed/cdac/**"
---
Comment thread
rcj1 marked this conversation as resolved.

# cDAC — Folder-Specific Guidance

## Preface

The instructions under `API Review`, `DacDbi interface` and `Dump compatibility` only apply if the SDK version in global.json is a preview, release candidate or otherwise a development branch of .NET 11. If this is a development branch of .NET 12 or later, you **MUST** ignore these three sections entirely. Check `global.json` before applying them.

## API Review (.NET 11 dev branches only)

New APIs on implementations of IContract under the folder src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/** do **NOT** need to go through API review. **MUST NOT** describe such changes as "breaking" or "public API changes".
Comment thread
rcj1 marked this conversation as resolved.

## DacDbi interface (.NET 11 dev branches only)

The DacDbi COM interface is **internal and unstable**.

- **MUST NOT** flag changes to DacDbi as breaking changes.
- **MUST NOT** warn about COM ABI compatibility, vtable ordering, or
GUID changes on DacDbi.
Comment thread
rcj1 marked this conversation as resolved.

## Dump compatibility (.NET 11 dev branches only)

- **MUST NOT** raise concerns about older dumps lacking new data descriptors.
- **MUST NOT** request fallback paths, conditional reads, or versioning
shims for missing descriptors on the grounds of "supporting older dumps".

## Exception types

When porting `HRESULT`-returning APIs to throw exceptions, the following mappings **MUST** be accepted:
- `ArgumentException` → for `E_INVALIDARG`
- `NullReferenceException` → for `E_POINTER`
- `InvalidCastException` → for `E_NOINTERFACE`