feat: Add C bindings for FDv2 data system#572
Merged
Conversation
kinyoklion
approved these changes
Jul 1, 2026
Merged
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Exposes the FDv2 data system builder surface in the C API. Adds:
LDServerFDv2Builderwith_Default()and_Custom()factories.LDServerFDv2StreamingBuilderandLDServerFDv2PollingBuildersub-builders, each withBaseURLoverrides for per-source endpoint customization.DisableFDv1Fallback.FallbackTimeoutMsandRecoveryTimeoutMssetters.LDServerConfigBuilder_DataSystem_FDv2, which installs FDv2 as the SDK's active data system.Design decisions worth flagging:
_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.LDServerDataSourceStreamBuilder/LDServerDataSourcePollBuilderhandles. The underlying C++ type is shared betweenFDv2Builder::FDv1StreamingandBackgroundSyncBuilder::Streaming(both areStreamingBuilder<ServerSDK>), so a dedicated fallback handle would duplicate the surface without adding safety.LDServerFDv2StreamingBuilder/LDServerFDv2PollingBuilder-- withStreaming/Pollingspelled out. The older BackgroundSync C API uses the shorterLDServerDataSourceStreamBuilder/LDServerDataSourcePollBuilder. The new names deliberately mirror the C++ nested type names (FDv2Builder::Streaming/::Polling).