Skip to content
Merged
Show file tree
Hide file tree
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
4 changes: 2 additions & 2 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
- Six packages, listed once in `build/packages.tsv`: `DatadogNet`, `DatadogNet.CrashReporting`,
`DatadogNet.WebView`, `DatadogNet.Maui`, `DatadogNet.Extensions.DependencyInjection`,
`DatadogNet.Extensions.Diagnostics`.
- Version **3.14.0.6** = `DatadogNativeVersion` + `DatadogBindingRevision` in
- Version **3.14.0.7** = `DatadogNativeVersion` + `DatadogBindingRevision` in
`Directory.Build.props`. It names the **dd-sdk-ios** line (Android is dd-sdk-android 3.12.1); the
fourth component is this repository's own revision.
- Platform pins, same file: `DatadogNetiOSVersion` 3.14.0.5, `DatadogNetAndroidVersion` 3.12.1.3
- Platform pins, same file: `DatadogNetiOSVersion` 3.14.0.5, `DatadogNetAndroidVersion` 3.12.1.4
(`DatadogAndroidNativeVersion` 3.12.1), `DatadogNetMacVersion` 3.14.0.4. NuGet packs each as a
**minimum** (`>= x.y.z.r`), not an exact range: floating above a pin is deliberately supported for
emergency binding patches, so never call these exact pins. The iOS pin is a floor with teeth —
Expand Down
9 changes: 5 additions & 4 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
docs/native-surface.md for what is covered.
-->
<DatadogNativeVersion>3.14.0</DatadogNativeVersion>
<DatadogBindingRevision>6</DatadogBindingRevision>
<DatadogBindingRevision>7</DatadogBindingRevision>
<VersionPrefix>$(DatadogNativeVersion).$(DatadogBindingRevision)</VersionPrefix>

<!--
Expand All @@ -47,8 +47,9 @@
(DatadogAttributes.ToJava / ToNSObject), GetCurrentSessionIdAsync on both monitors, header
injection on both tracers, and GetTraceId / GetSpanId on iOS, which is where the trace-id
reassembly lives - so anything below .2 will not build this. The pins sit on the current
releases above that floor; the Android .3 (and Mac .2) revisions are documentation,
packaging and supply-chain releases over the same native SDKs and the same API.
releases above that floor; the Android .4 revision is a documentation, packaging and
supply-chain release over the same native SDK and the same API - it ships complete R8
keep-rules in every package, which is what a consumer enabling Java shrinking notices.

The iOS pin is a FLOOR WITH TEETH, unlike the other two: DatadogNet.iOS 3.14.0.5 is the
first revision whose packages link for a real device. Every earlier one - the whole 2.x
Expand All @@ -58,7 +59,7 @@
no consumer of this façade can ship to hardware below it.
-->
<DatadogNetiOSVersion>3.14.0.5</DatadogNetiOSVersion>
<DatadogNetAndroidVersion>3.12.1.3</DatadogNetAndroidVersion>
<DatadogNetAndroidVersion>3.12.1.4</DatadogNetAndroidVersion>
<DatadogAndroidNativeVersion>3.12.1</DatadogAndroidNativeVersion>

<!--
Expand Down
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ Six packages. The version is `<dd-sdk-ios version>.<binding revision>` — `3.14
Most apps need one or two lines:

```xml
<PackageReference Include="DatadogNet.Maui" Version="3.14.0.6" />
<PackageReference Include="DatadogNet.CrashReporting" Version="3.14.0.6" />
<PackageReference Include="DatadogNet.Maui" Version="3.14.0.7" />
<PackageReference Include="DatadogNet.CrashReporting" Version="3.14.0.7" />
```

**Target frameworks.** `DatadogNet`, `DatadogNet.Extensions.DependencyInjection`,
Expand Down Expand Up @@ -174,7 +174,7 @@ silently:

| DatadogNet | dd-sdk-ios | dd-sdk-android | DatadogNet.iOS pin | DatadogNet.Android pin | DatadogNet.Mac pin | .NET | Minimum OS |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 3.14.0.6 | 3.14.0 | 3.12.1 | 3.14.0.5 | 3.12.1.3 | 3.14.0.4 | net8 · net9 · net10 | Android 23 · iOS 12.2 · macCatalyst 15.0 (macOS 12) |
| 3.14.0.7 | 3.14.0 | 3.12.1 | 3.14.0.5 | 3.12.1.4 | 3.14.0.4 | net8 · net9 · net10 | Android 23 · iOS 12.2 · macCatalyst 15.0 (macOS 12) |

Earlier lines are on the [releases page](https://github.com/sbokatuk/DatadogNet/releases), each
with the same numbers in its notes.
Expand All @@ -185,7 +185,7 @@ with the same numbers in its notes.

```xml
<ItemGroup>
<PackageReference Include="DatadogNet.Maui" Version="3.14.0.6" />
<PackageReference Include="DatadogNet.Maui" Version="3.14.0.7" />
</ItemGroup>
```

Expand Down Expand Up @@ -513,7 +513,7 @@ order, apart from the middle image level above.
## How this repository works

```
nuget.org: DatadogNet.iOS 3.14.0.5 DatadogNet.Android 3.12.1.3 DatadogNet.Mac 3.14.0.4
nuget.org: DatadogNet.iOS 3.14.0.5 DatadogNet.Android 3.12.1.4 DatadogNet.Mac 3.14.0.4
│ (dd-sdk-ios 3.14.0) │ (dd-sdk-android 3.12.1) │ (dd-sdk-ios 3.14.0,
│ │ │ built for Catalyst)
└───────────────────────────────┼──────────────────────────────┘
Expand Down Expand Up @@ -600,11 +600,11 @@ dotnet test tests/DatadogNet.PackageTests
Run the device checks against the packed packages:

```bash
./.github/scripts/run-simulator-tests.sh 3.14.0.6 net8.0-ios18.0
./.github/scripts/run-simulator-tests.sh 3.14.0.7 net8.0-ios18.0
```

```bash
./.github/scripts/run-emulator-tests.sh 3.14.0.6 net8.0-android34.0
./.github/scripts/run-emulator-tests.sh 3.14.0.7 net8.0-android34.0
```

Any of the six platform target frameworks works. CI runs net8 and net10 — the oldest asset set, and
Expand Down Expand Up @@ -649,7 +649,7 @@ is a two-line edit and a test run. The exception is a major: see the note on 3.x

## Releasing

Tag it. `v3.14.0.6` builds, tests, publishes all six packages to nuget.org via trusted publishing,
Tag it. `v3.14.0.7` builds, tests, publishes all six packages to nuget.org via trusted publishing,
and creates a GitHub release.

Pull requests publish a `-beta.<pr>.<run>` prerelease of the whole set.
Expand Down
2 changes: 1 addition & 1 deletion docs/native-surface.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# What the façade covers, and what it leaves to `ConfigureNative`

Measured against **dd-sdk-ios 3.14.0** and **dd-sdk-android 3.12.1** specifically, by reading the
bound API surface of `DatadogNet.iOS 3.14.0.5` and `DatadogNet.Android 3.12.1.3` — the pinned
bound API surface of `DatadogNet.iOS 3.14.0.5` and `DatadogNet.Android 3.12.1.4` — the pinned
revisions, whose convenience layers (unchanged since the `.2` line, which is the API floor) carry
the members the façade calls — rather than the
documentation. [`upgrade-to-3x.md`](upgrade-to-3x.md) covers what changed from the 2.x line.
Expand Down
50 changes: 50 additions & 0 deletions docs/release-notes/3.14.0.7.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# 3.14.0.7

A re-pin release: no managed code changes, same API, same native SDKs (dd-sdk-ios 3.14.0,
dd-sdk-android 3.12.1). The Android binding pin moves to a release that completes the R8
keep-rules across every package, which is what a consuming app enabling Java shrinking notices.
iOS and Mac Catalyst are unchanged (DatadogNet.iOS `3.14.0.5`, DatadogNet.Mac `3.14.0.4`).

## Release builds with Java shrinking keep working

DatadogNet.Android moves `3.12.1.3` → `3.12.1.4`. `3.12.1.3` shipped consumer keep-rules for two
of the thirteen packages; every package now ships a generated
`buildTransitive/<PackageId>.pro` carrying both upstream's own consumer rules — recovered from the
`.aar`, and never previously applied, because .NET for Android does not feed an `.aar`'s embedded
`proguard.txt` to R8 the way Gradle does — and curated keeps for the JNI-only entry surface the
façade reaches through: `Datadog`, `Rum`/`GlobalRumMonitor`, `Logs`/`Logger`,
`Trace`/`DatadogTracing`, `SessionReplay`, every `*Configuration` and its `Builder`, and the enums
whose constants C# reads.

A Java shrinker cannot see any of that, because it is all reached over JNI. If you enable
`AndroidLinkTool=r8` you no longer need hand-written `-keep` rules for Datadog classes, and any
you added as a workaround can be deleted. The rules are generated from the pinned `.aar`s and one
emulator leg in the binding repository now runs its smoke suite against a genuinely shrunk build,
so a keep-rule regression fails CI there rather than surfacing as a `ClassNotFoundException` in
your Release build.

## Also in the binding release

- **IntelliSense from upstream's KDoc** — the binding projects now feed upstream's `-sources.jar`
to the generator, importing what it can extract into the generated XML docs. Coverage is thin
rather than complete (the importer parses Java, and dd-sdk-android is Kotlin), and the
hand-written convenience layer remains fully documented either way.
- **A PGP-verified supply chain** — the SHA-256 pin list now also anchors that Datadog signed each
artifact, verified against Datadog's release signing key pinned by full fingerprint. A bad
signature is a hard failure.
- **A Troubleshooting entry for the `NU1107` on `Xamarin.AndroidX.SavedState`** that net8
consumers hit, including why the fix must not be applied to net9/net10.

Full detail in [DatadogNet.Android's own
notes](https://github.com/sbokatuk/DatadogNet.Android/blob/HEAD/docs/release-notes/3.12.1.4.md).

## Upgrading from 3.14.0.6

```diff
-<PackageReference Include="DatadogNet" Version="3.14.0.6" />
+<PackageReference Include="DatadogNet" Version="3.14.0.7" />
```

Nothing to change beyond the version — the keep-rules ship inside the Android binding packages
the façade pins, and arrive transitively. If you had added a direct reference to
`DatadogNet.*.Android 3.12.1.4` to get them early, it can come out again: the pins have caught up.
Loading