Skip to content

feat!: remove easyjson from go-sdk-common#50

Merged
aaron-zeisler merged 2 commits into
v4from
aaronz/SDK-2117/remove-easyjson
May 28, 2026
Merged

feat!: remove easyjson from go-sdk-common#50
aaron-zeisler merged 2 commits into
v4from
aaronz/SDK-2117/remove-easyjson

Conversation

@aaron-zeisler
Copy link
Copy Markdown

@aaron-zeisler aaron-zeisler commented Apr 29, 2026

Summary

This is the v4 major-version bump for go-sdk-common. Two commits:

  1. chore: remove easyjson implementation — drops the optional easyjson backend, removes the easyjson conversion files for ldcontext / ldreason / ldvalue, and bumps go-jsonstream to a development pseudo-version that has its own easyjson removal merged.
  2. feat!: bump module path to v4 — bumps the module path /v3/v4, rewrites all internal imports, bumps go-jsonstream from /v3 to /v4. Workflow file changes for v4 landed separately in #52.

SDK-2119: EasyJSON Removal — Dependency Chain (v4 strategy)

go-jsonstream/v4 (#39)                  <- feat!:
└─ go-sdk-common/v4 (this PR)           <- feat!:
   ├─ go-server-sdk-evaluation/v4 (#51) <- feat!:
   ├─ go-sdk-events/v3 (#43)            <- chore:
   └─ go-server-sdk/v7 (#380)           <- chore:
      └─ ld-relay (#666)                <- chore:
         └─ internal services (6 PRs)   <- chore:

Stage layout

Stage Purpose PRs
1 Configure v4 branch's CI workflows #40, #52, #53
3 v4 major bumps + EasyJSON removal (libraries) #39, #50, #51
4 Cascade /v3 → /v4 through 10 downstream PRs (dev pseudo-versions) #43, #380, #666, #8924, 6 services
5 After v4.0.0 tags land, flip downstream go.mod from pseudo-versions to real (post-merge)

Context

Part of SDK-2113 (epic). Tracks SDK-2117. Second PR in the dep-chain stack — pins go-jsonstream/v4 at #39 and is itself pinned by #51.

Test plan

  • go test ./... passes (v4 module path)
  • go build ./... clean
  • go mod graph | grep easyjson returns empty
  • grep -r mailru/easyjson . returns no source hits

via LD Research 🤖


Note

High Risk
Breaking major version with module path and JSON stack changes affects all dependent SDKs and services; incorrect migration breaks builds and context/value serialization at runtime.

Overview
This PR ships go-sdk-common v4 as a breaking release aligned with Go SDK 7.x: the module path moves from /v3 to /v4, Go 1.24 is required, and go-jsonstream is upgraded to v4 with imports updated repo-wide.

The functional change is removal of the optional EasyJSON integration: mailru/easyjson is dropped from dependencies, all //go:build launchdarkly_easyjson sources (context, ldvalue, ldreason marshaling/tests/benchmarks) are deleted, and JSON handling stays on encoding/json plus jsonstream only. Docs no longer describe the launchdarkly_easyjson build tag.

Downstream consumers must import github.com/launchdarkly/go-sdk-common/v4 and cannot rely on EasyJSON-specific APIs from this library.

Reviewed by Cursor Bugbot for commit 3387248. Bugbot is set up for automated code reviews on this repo. Configure here.

Drops the optional easyjson backend and its build-tag gate. The stdlib
encoding/json implementation is now the only path. The
launchdarkly_easyjson build tag becomes a silent no-op for any consumer
that still sets it.

Bumps go-jsonstream to the development pseudo-version that has its own
easyjson removal merged, dropping the easyjson indirect dependency from
this module's transitive graph as well.

Squashed from three earlier commits on this branch (the original
removal, the go-jsonstream dev-version bump, and a no-op merge from v3
that pulled in the release-please-action v4->v5 upgrade — which is
already on v4).

Part of the SDK-2113 EasyJSON removal project.

Co-authored-by: Cursor <cursoragent@cursor.com>
@aaron-zeisler aaron-zeisler force-pushed the aaronz/SDK-2117/remove-easyjson branch from 97f2812 to ed02fce Compare May 28, 2026 16:04
Transitions go-sdk-common to its v4 major version per Go's semantic
import versioning. With easyjson removed in the prior commit, this is
the natural moment to take the major bump.

Changes in this commit:
- go.mod: module path /v3 -> /v4; go-jsonstream pinned at /v4 dev
  pseudo-version
- All .go files: import paths /v3 -> /v4 for both go-sdk-common's own
  internal packages and go-jsonstream
- README.md: pkg.go.dev link and version-pairing prose updated
  (4.x of go-sdk-common pairs with 7.x of go-server-sdk)
- .release-please-manifest.json: 3.5.0 -> 4.0.0

Workflow file (release-please.yml, ci.yml, check-go-versions.yml)
changes for v4 are landing in #52 separately.

Part of the SDK-2113 EasyJSON removal project, shipping these libraries
as v4 majors per the v3 -> v4 strategy.

Co-authored-by: Cursor <cursoragent@cursor.com>
@aaron-zeisler aaron-zeisler force-pushed the aaronz/SDK-2117/remove-easyjson branch from ed02fce to 3387248 Compare May 28, 2026 16:06
@aaron-zeisler aaron-zeisler marked this pull request as ready for review May 28, 2026 16:12
@aaron-zeisler aaron-zeisler requested a review from a team as a code owner May 28, 2026 16:12
@aaron-zeisler aaron-zeisler merged commit e7dec07 into v4 May 28, 2026
19 checks passed
@aaron-zeisler aaron-zeisler deleted the aaronz/SDK-2117/remove-easyjson branch May 28, 2026 17:04
@github-actions github-actions Bot mentioned this pull request May 28, 2026
aaron-zeisler pushed a commit that referenced this pull request May 28, 2026
🤖 I have created a release *beep* *boop*
---


##
[4.0.0](v3.5.0...v4.0.0)
(2026-05-28)


### ⚠ BREAKING CHANGES

* remove easyjson from go-sdk-common
([#50](#50))

### Features

* remove easyjson from go-sdk-common
([#50](#50))
([e7dec07](e7dec07))

---
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**
> Diff only updates version manifest and changelog; consumer risk from
easyjson removal is documented for the release, not introduced in this
PR’s files.
> 
> **Overview**
> This PR is a **Release Please** cut that publishes **v4.0.0** by
updating `.release-please-manifest.json` from `3.5.0` to `4.0.0` and
adding the matching **CHANGELOG** section for the `v3.5.0...v4.0.0`
release.
> 
> The new changelog entry records the **breaking change** for this
major: **easyjson is removed** from `go-sdk-common`
([#50](#50)).
Downstream apps that depended on the `launchdarkly_easyjson` build tag
or generated easyjson codecs need to move to **v4** and standard JSON
paths (e.g. `encoding/json` / `go-jsonstream`) instead.
> 
> No library source changes appear in this diff—only release metadata
and documentation of what shipped in 4.0.0.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
fa6628e. 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