Skip to content

feat: Add C bindings for FDv2 data system#572

Merged
beekld merged 2 commits into
mainfrom
beeklimt/SDK-2528/fdv2-c-bindings
Jul 1, 2026
Merged

feat: Add C bindings for FDv2 data system#572
beekld merged 2 commits into
mainfrom
beeklimt/SDK-2528/fdv2-c-bindings

Conversation

@beekld

@beekld beekld commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Exposes the FDv2 data system builder surface in the C API. Adds:

  • LDServerFDv2Builder with _Default() and _Custom() factories.
  • LDServerFDv2StreamingBuilder and LDServerFDv2PollingBuilder sub-builders, each with BaseURL overrides for per-source endpoint customization.
  • Methods to add initializers, synchronizers, and FDv1 fallback sources to an FDv2 builder, plus DisableFDv1Fallback.
  • Orchestrator FallbackTimeoutMs and RecoveryTimeoutMs setters.
  • LDServerConfigBuilder_DataSystem_FDv2, which installs FDv2 as the SDK's active data system.

Design decisions worth flagging:

  • Construction uses _Default() and _Custom() rather than the usual _New(). This mirrors the C++ FDv2Builder's private no-arg ctor + public static factories. Every other C builder in this repo uses _New(); this one deviates deliberately.
  • The FDv1 fallback methods accept the existing LDServerDataSourceStreamBuilder / LDServerDataSourcePollBuilder handles. The underlying C++ type is shared between FDv2Builder::FDv1Streaming and BackgroundSyncBuilder::Streaming (both are StreamingBuilder<ServerSDK>), so a dedicated fallback handle would duplicate the surface without adding safety.
  • The FDv2 sub-builder types are named LDServerFDv2StreamingBuilder / LDServerFDv2PollingBuilder -- with Streaming / Polling spelled out. The older BackgroundSync C API uses the shorter LDServerDataSourceStreamBuilder / LDServerDataSourcePollBuilder. The new names deliberately mirror the C++ nested type names (FDv2Builder::Streaming / ::Polling).

@beekld beekld marked this pull request as ready for review July 1, 2026 00:34
@beekld beekld requested a review from a team as a code owner July 1, 2026 00:34
@beekld beekld merged commit c8af14d into main Jul 1, 2026
47 checks passed
@beekld beekld deleted the beeklimt/SDK-2528/fdv2-c-bindings branch July 1, 2026 18:14
@github-actions github-actions Bot mentioned this pull request Jul 1, 2026
beekld pushed a commit that referenced this pull request Jul 1, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>launchdarkly-cpp-server: 3.12.0</summary>

##
[3.12.0](launchdarkly-cpp-server-v3.11.0...launchdarkly-cpp-server-v3.12.0)
(2026-07-01)


### Features

* Add C bindings for FDv2 data system
([#572](#572))
([c8af14d](c8af14d))
</details>

<details><summary>launchdarkly-cpp-server-dynamodb-source:
0.2.1</summary>

##
[0.2.1](launchdarkly-cpp-server-dynamodb-source-v0.2.0...launchdarkly-cpp-server-dynamodb-source-v0.2.1)
(2026-07-01)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/cpp-server bumped from 3.11.0 to 3.12.0
</details>

<details><summary>launchdarkly-cpp-server-otel: 0.1.3</summary>

##
[0.1.3](launchdarkly-cpp-server-otel-v0.1.2...launchdarkly-cpp-server-otel-v0.1.3)
(2026-07-01)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/cpp-server bumped from 3.11.0 to 3.12.0
</details>

<details><summary>launchdarkly-cpp-server-redis-source: 2.3.1</summary>

##
[2.3.1](launchdarkly-cpp-server-redis-source-v2.3.0...launchdarkly-cpp-server-redis-source-v2.3.1)
(2026-07-01)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/cpp-server bumped from 3.11.0 to 3.12.0
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Mechanical release/version bump PR with no runtime logic changes; risk
is limited to consumers picking up the new tagged artifacts.
> 
> **Overview**
> Automated **release main** PR: no feature code in the diff—only
version metadata, changelogs, and dependency pins.
> 
> **`launchdarkly-cpp-server` 3.12.0** — CMake/project version,
`Client::Version()` / `kVersion`, and version tests move from `3.11.0`
to **`3.12.0`**. The new changelog entry records **C bindings for the
FDv2 data system** ([#572]) as the user-facing change in this tag.
> 
> **Satellite packages** — `launchdarkly-cpp-server-redis-source`
**2.3.1**, `launchdarkly-cpp-server-dynamodb-source` **0.2.1**, and
`launchdarkly-cpp-server-otel` **0.1.3** get patch bumps with
dependency-only changelog notes (`@launchdarkly/cpp-server` **3.11.0 →
3.12.0**). `.release-please-manifest.json` is updated to match.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
04092ea. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants