Skip to content

3.14.0.3

Choose a tag to compare

@github-actions github-actions released this 26 Jul 19:53
d97a4d2

3.14.0.3

Binding-only release. The native SDK is unchanged — still
dd-sdk-ios 3.14.0, built from source
for Mac Catalyst — and so are the package ids, namespaces and API. The fourth component advances
for a round of guarantees about how these packages are built and what you can verify about
them.

Every release is now attested

The .nupkg files and the dsyms-<version>.zip carry
build provenance attestations:
a signed, public statement that the exact bytes you downloaded came out of this repository's
release workflow, at this tag and commit, on GitHub's runners — checkable with
gh attestation verify <file> --repo sbokatuk/DatadogNet.Mac. The README's new
Verifying a build section says
what that proves, what it does not, and documents the stronger rebuild-and-compare path — for
which dsyms-<version>.zip now also carries BUILD-INFO.txt, the record of the exact Xcode and
SDK the binaries were compiled with. Previously that record never left CI.

dSYMs are guaranteed, not best-effort

3.14.0.2 started attaching the dSYMs to every release; this release makes them a hard guarantee.
The build now fails if any framework's dSYM is missing, and counts one per shipped framework
before recording the build as done — for binaries Datadog does not publish, these are the only
symbolication data that will ever exist, and "the copy silently failed" is no longer a way to
lose them.

The binaries are smoke-checked at build time

Building dd-sdk-ios for Catalyst requires patching upstream's project file, and a stale patch
does not always fail the build — it can archive a gutted module: fewer classes, no Objective-C
surface, a MissingMethodException waiting in your app. Every xcframework is now checked with
nm the moment it is created: a canonical exported symbol per framework (the class behind each
package's main entry point — DDDatadog, DDRUM, DDLogs, ... — or the Swift entry type for
the three frameworks with no Objective-C surface), asserted on both the arm64 and x86_64 slices.
The package tests likewise now assert the exact slice name the README promises,
ios-arm64_x86_64-maccatalyst, rather than a shape that a single-arch slice could satisfy.

The SessionReplay description tells the whole truth

DatadogNet.SessionReplay.Mac's nuget.org description promised session recording with no
caveat; the README and the sample have always said the honest part — upstream's recorder is
iOS/iPadOS-only and records nothing on Catalyst. The description now says it too: the package
ships so shared code that references it compiles and links unchanged.

Repository machinery

None of these change the packages, but they change how likely the packages are to be right:

  • The drift guards run between releases. The binding-drift check — bindings are verbatim
    copies of DatadogNet.iOS's — used to run only on pull requests and tags. A weekly scheduled
    workflow now re-runs it, extends it to the hand-synced tooling files (compared
    comment-stripped, so each copy's own documentation stays legal), and opens a single idempotent
    issue when DatadogNet.iOS's src/ moves past the pinned sync commit.
  • A mistyped release tag no longer publishes. The tag drives which native line is released;
    it is now cross-checked against Directory.Build.props, with a documented override for
    deliberate different-line releases.
  • The xcframework cache keys on the resolved Xcode (version and build), not just the pinned
    SDK line — a runner-image patch bump can no longer serve binaries an older compiler built.
  • Release-configuration coverage. The sample now also builds in Release against the packed
    packages, the configuration consumers actually ship.
  • build/BumpNativeVersion.sh rewrites every pin an SDK upgrade touches in one command —
    including reading the matching OpenTelemetryApi version from the new tag's
    Cartfile.resolved — and prints the manual steps that remain.

net8 sunset

Unchanged policy, restated so it does not persist by inertia: the net8.0-maccatalyst18.0 head
is dropped in the first release after .NET 8 leaves support on 10 November 2026, in step
with DatadogNet.iOS.

Upgrading from 3.14.0.2

Nothing to change: same native SDK, same API.

Full changelog: v3.14.0.2...v3.14.0.3

Packages

Bound against dd-sdk-ios 3.14.0, built from source for Mac Catalyst, targeting net8.0-maccatalyst18.0, net9.0-maccatalyst18.0 and net10.0-maccatalyst26.0.

dsyms-3.14.0.3.zip below carries the dSYMs for these exact binaries - Datadog publishes
no Catalyst builds, so this release is the only place they exist. Upload them to Datadog for
crash symbolication. The zip also carries BUILD-INFO.txt: the Xcode, SDK and timestamp the
binaries were built with, for anyone rebuilding at this tag to compare.

The first three components of 3.14.0.3 are the dd-sdk-ios version; the fourth is this
repository's binding revision, which advances when the bindings or packaging change while
the native binaries stay put.

Package Wraps NuGet
DatadogNet.Core.Mac DatadogCore 3.14.0.3
DatadogNet.RUM.Mac DatadogRUM 3.14.0.3
DatadogNet.Logs.Mac DatadogLogs 3.14.0.3
DatadogNet.Trace.Mac DatadogTrace 3.14.0.3
DatadogNet.SessionReplay.Mac DatadogSessionReplay 3.14.0.3
DatadogNet.WebViewTracking.Mac DatadogWebViewTracking 3.14.0.3
DatadogNet.CrashReporting.Mac DatadogCrashReporting 3.14.0.3
DatadogNet.Flags.Mac DatadogFlags 3.14.0.3
DatadogNet.Profiling.Mac DatadogProfiling 3.14.0.3
DatadogNet.Internal.Mac DatadogInternal 3.14.0.3
DatadogNet.OpenTelemetryApi.Mac OpenTelemetryApi 3.14.0.3
dotnet add package DatadogNet.Core.Mac --version 3.14.0.3
dotnet add package DatadogNet.RUM.Mac --version 3.14.0.3

Licensing

The binding code is MIT; the bundled native binaries are Apache-2.0, built from Datadog's sources, and
each package ships both texts under licenses/.