Skip to content

feat: build with LuaJIT 2.1 and test against latest C++ server-side SDK - #124

Merged
kinyoklion merged 6 commits into
mainfrom
devin/1783329097-update-cpp-sdk-versions
Aug 10, 2026
Merged

feat: build with LuaJIT 2.1 and test against latest C++ server-side SDK#124
kinyoklion merged 6 commits into
mainfrom
devin/1783329097-update-cpp-sdk-versions

Conversation

@kinyoklion

@kinyoklion kinyoklion commented Jul 6, 2026

Copy link
Copy Markdown
Member

Requirements

  • I have added test coverage for new or changed functionality
  • I have followed the repository's pull request submission guidelines
  • I have validated my changes against all supported platform versions

Related issues

Supersedes #123 (which only updated Redis Source to 2.2.2).

Describe the solution you've provided

Builds and tests against current toolchain and SDK versions, without changing what this SDK requires:

  • launchdarkly-server-sdk-redis.c: removed the static luaL_setfuncs Lua 5.1 shim. It was never called, and LuaJIT 2.1's lauxlib.h declares luaL_setfuncs non-static, so the shim broke compilation there (static declaration of 'luaL_setfuncs' follows non-static declaration). launchdarkly-server-sdk.c has its own correctly-named ld_luaL_setfuncs and is unaffected.
  • CI LuaJIT matrix luajit-2.0.5luajit-2.1. luarocks/gh-actions-lua clones --branch v2.0.5 from luajit/luajit and that branch/tag no longer exists upstream (only v2.0, v2.1, master remain), so those jobs failed at the Install Lua step. luajit-2.1 is LuaJIT's current rolling release. README's LuaJIT compatibility note updated to match.
  • CI / example build versions: C++ Server-side SDK 3.10.13.13.1, Redis Source 2.1.192.4.1 (both current latest).
  • The README minimum-version table stays at 3.9.0 / 2.1.19 — the Lua SDK still works with those; working with the latest is not the same as requiring it.

Files changed:

  • launchdarkly-server-sdk-redis.c
  • .github/variables/cpp-sdk-versions.env — central version config used by CI
  • examples/hello-haproxy/Dockerfile, examples/hello-nginx/Dockerfile, examples/hello-debian/Dockerfile — default CPP_SDK_VERSION ARG for local builds
  • .github/workflows/ci.yml, .github/workflows/install-lua-sdk.yml — LuaJIT version built and tested
  • README.md — LuaJIT compatibility note

How to test it

CI builds and tests both rockspecs on Lua 5.1/5.2/5.3 and LuaJIT 2.1 against the C++ SDK 3.13.1 / Redis Source 2.4.1 artifacts, and builds the hello-haproxy, hello-nginx, and hello-debian example images. Also verified locally on Lua 5.1: luarocks make of both rockspecs against the prebuilt redis-source v2.4.1 linux-gcc-x64-dynamic artifact, test.lua 20/20 passing, and examples/hello-lua-server/hello.lua run against a real server-side SDK key (client init, data sync, flag evaluation).

Additional context

No deprecated APIs are used by the examples (clientInit, makeContext, boolVariation), and the C++ 3.13.1 bindings compile without warnings.

Link to Devin session: https://app.devin.ai/sessions/85ca4fcc915e4e38bdee004d3d493824
Requested by: @kinyoklion

Link to Devin session: https://app.devin.ai/sessions/1a367c31818a4fa6a1d33eb65a7b2331
Requested by: @jsonbailey


Note

Overview
CI and toolchain alignment for current LuaJIT and C++ artifacts: the matrix and install workflow now use LuaJIT 2.1 instead of luajit-2.0.5 (upstream tag/branch no longer available), and .github/variables/cpp-sdk-versions.env plus example Dockerfiles default to C++ server SDK 3.13.1 and Redis Source 2.4.1. The README’s supported LuaJIT line is updated to 2.1.

LuaJIT compile fix in launchdarkly-server-sdk-redis.c: drops an unused static luaL_setfuncs Lua 5.1 shim that conflicted with LuaJIT 2.1’s non-static declaration in lauxlib.h. The main SDK module keeps its separate ld_luaL_setfuncs helper unchanged.

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

…rce from 2.1.19 to 2.3.1

Co-Authored-By: rlamb@launchdarkly.com <4955475+kinyoklion@users.noreply.github.com>
@kinyoklion kinyoklion self-assigned this Jul 6, 2026
@devin-ai-integration

Copy link
Copy Markdown
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@kinyoklion
kinyoklion marked this pull request as ready for review July 6, 2026 17:07
@kinyoklion
kinyoklion requested a review from a team as a code owner July 6, 2026 17:07
@devin-ai-integration devin-ai-integration Bot changed the title chore: update C++ server-side SDK from 3.10.1 to 3.12.0 and Redis Source from 2.1.19 to 2.3.1 chore: update C++ server-side SDK from 3.10.1 to 3.13.0 and Redis Source from 2.1.19 to 2.4.0 Aug 3, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 1d66be3. Configure here.

Comment thread .github/variables/cpp-sdk-versions.env Outdated
@devin-ai-integration

Copy link
Copy Markdown
Contributor

Refreshed this PR to the current latest releases: C++ SDK 3.13.0 and Redis Source 2.4.0 (both published 2026-07-24), replacing the now-stale 3.12.0/2.3.1.

Verified locally on Ubuntu 22.04 / Lua 5.3 against the prebuilt launchdarkly-cpp-server-redis-source-v2.4.0 linux-gcc-x64-dynamic artifact: both rockspecs compile warning-free, test.lua passes 20/20, and examples/hello-lua-server/hello.lua initializes and evaluates against a live SDK key.

Heads up on CI: the two linux-build (luajit-2.0.5, ...) jobs fail before reaching this PR's changes, in the luarocks/gh-actions-lua install step:

git clone --branch v2.0.5 --single-branch https://github.com/luajit/luajit.git
fatal: Remote branch v2.0.5 not found in upstream origin

The luajit/luajit mirror no longer publishes a v2.0.5 branch (or any tags) — it currently only has master, v2.0, and v2.1 branches. This is an upstream change in the LuaJIT mirror, not related to the C++ SDK bump, and it will affect every run of this workflow until the luajit-2.0.5 matrix entry (or the action) is adjusted. All other checks, including the Lua 5.1/5.2/5.3 builds and the hello-haproxy/hello-nginx/hello-debian example builds, pass with 3.13.0/2.4.0. I've left the matrix alone since changing the tested LuaJIT version is a maintainer decision.

@cursor review

@devin-ai-integration devin-ai-integration Bot changed the title chore: update C++ server-side SDK from 3.10.1 to 3.13.0 and Redis Source from 2.1.19 to 2.4.0 feat: update C++ server-side SDK to 3.13.0 and Redis Source to 2.4.0 Aug 3, 2026
@devin-ai-integration devin-ai-integration Bot changed the title feat: update C++ server-side SDK to 3.13.0 and Redis Source to 2.4.0 chore: test against latest C++ server-side SDK 3.13.0 and Redis Source 2.4.0 Aug 3, 2026
@kinyoklion
kinyoklion marked this pull request as draft August 3, 2026 16:12
@devin-ai-integration devin-ai-integration Bot changed the title chore: test against latest C++ server-side SDK 3.13.0 and Redis Source 2.4.0 fix: build with LuaJIT 2.1 and test against latest C++ server-side SDK Aug 3, 2026
@kinyoklion kinyoklion changed the title fix: build with LuaJIT 2.1 and test against latest C++ server-side SDK feat: build with LuaJIT 2.1 and test against latest C++ server-side SDK Aug 3, 2026
@kinyoklion
kinyoklion marked this pull request as ready for review August 3, 2026 17:41
Co-Authored-By: jbailey@launchdarkly.com <accounts@sidewaysgravity.com>
@kinyoklion
kinyoklion merged commit 6550dc5 into main Aug 10, 2026
19 checks passed
@kinyoklion
kinyoklion deleted the devin/1783329097-update-cpp-sdk-versions branch August 10, 2026 23:20
kinyoklion pushed a commit that referenced this pull request Aug 10, 2026
🤖 I have created a release *beep* *boop*
---


##
[2.2.0](v2.1.3...v2.2.0)
(2026-08-10)


### Features

* build with LuaJIT 2.1 and test against latest C++ server-side SDK
([#124](#124))
([6550dc5](6550dc5))

---
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]
> **Overview**
> **Release 2.2.0** bumps the Lua server SDK from **2.1.3** to **2.2.0**
across packaging and docs. `.release-please-manifest.json`,
`CHANGELOG.md`, and new `launchdarkly-server-sdk-2.2.0-0.rockspec` /
`launchdarkly-server-sdk-redis-2.2.0-0.rockspec` files (version, git
`tag`, and filenames) are updated accordingly.
> 
> The embedded SDK version in `launchdarkly-server-sdk.c`
(`SDKVersion`), `scripts/compile.sh`, and `scripts/update-versions.sh`
default version markers now report **2.2.0**. README `luarocks make`
examples and example Dockerfiles (`hello-debian`, `hello-haproxy`,
`hello-nginx`) use `ARG VERSION=2.2.0`.
> 
> The changelog entry for 2.2.0 records the shipped feature (LuaJIT 2.1
build/testing and latest C++ server-side SDK from #124); this PR is the
mechanical version cut, not those implementation changes.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
e175395. 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>
Co-authored-by: LaunchDarklyReleaseBot <LaunchDarklyReleaseBot@launchdarkly.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants