feat: build with LuaJIT 2.1 and test against latest C++ server-side SDK - #124
Conversation
…rce from 2.1.19 to 2.3.1 Co-Authored-By: rlamb@launchdarkly.com <4955475+kinyoklion@users.noreply.github.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ 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.
|
Refreshed this PR to the current latest releases: C++ SDK Verified locally on Ubuntu 22.04 / Lua 5.3 against the prebuilt Heads up on CI: the two The @cursor review |
Co-Authored-By: jbailey@launchdarkly.com <accounts@sidewaysgravity.com>
🤖 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>

Requirements
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 staticluaL_setfuncsLua 5.1 shim. It was never called, and LuaJIT 2.1'slauxlib.hdeclaresluaL_setfuncsnon-static, so the shim broke compilation there (static declaration of 'luaL_setfuncs' follows non-static declaration).launchdarkly-server-sdk.chas its own correctly-namedld_luaL_setfuncsand is unaffected.luajit-2.0.5→luajit-2.1.luarocks/gh-actions-luaclones--branch v2.0.5fromluajit/luajitand that branch/tag no longer exists upstream (onlyv2.0,v2.1,masterremain), so those jobs failed at the Install Lua step.luajit-2.1is LuaJIT's current rolling release. README's LuaJIT compatibility note updated to match.3.10.1→3.13.1, Redis Source2.1.19→2.4.1(both current latest).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 CIexamples/hello-haproxy/Dockerfile,examples/hello-nginx/Dockerfile,examples/hello-debian/Dockerfile— defaultCPP_SDK_VERSIONARG for local builds.github/workflows/ci.yml,.github/workflows/install-lua-sdk.yml— LuaJIT version built and testedREADME.md— LuaJIT compatibility noteHow 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, andhello-debianexample images. Also verified locally on Lua 5.1:luarocks makeof both rockspecs against the prebuilt redis-source v2.4.1linux-gcc-x64-dynamicartifact,test.lua20/20 passing, andexamples/hello-lua-server/hello.luarun 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.envplus 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 staticluaL_setfuncsLua 5.1 shim that conflicted with LuaJIT 2.1’s non-static declaration inlauxlib.h. The main SDK module keeps its separateld_luaL_setfuncshelper unchanged.Reviewed by Cursor Bugbot for commit 501b641. Bugbot is set up for automated code reviews on this repo. Configure here.