feat(pkg): add compat.libuv@1.48.0 and redis-plus-plus async feature - #195
Merged
Merged
Conversation
- compat.libuv (Form A): per-OS source sets transcribed from upstream CMakeLists — src/unix/*.c cannot be globbed (one backend per OS), so linux/ macosx list explicit unix subsets and windows globs src/win/*.c. 1.48.0 is the classic LTS-era release (Ubuntu 24.04 line, long-standing vcpkg default). - compat.redis-plus-plus: 'async' feature = the 9 async TUs (event_loop.cpp runs uv_run on a background thread) + deps compat.libuv; future/std include dir added to the base (async_connection.h -> sw/redis++/async_utils.h). - compat.hiredis: thin hiredis/adapters/libuv.h wrapper header. - New member redis-plus-plus-async (1.3.13 + features=['async']): offline mini RESP server parses full RESP arrays (the async client pipelines PING+SET into one segment) and drives AsyncRedis end-to-end.
…dis-plus-plus#575) Windows async teardown asserts in libuv src/win/handle.c:71: EventLoop's LoopDeleter uv_walk re-closes handles already uv_close'd by hiredis's libuv adapter cleanup (on Windows they stay in the loop's handle queue; on unix the closing phase unlinks them first). uv_close's UV_HANDLE_CLOSING guard makes the second call a harmless no-op — only the assert(0) aborts. NDEBUG matches libuv release builds (vcpkg/conan) and disables the assert. Upstream open issue sewenew/redis-plus-plus#575; caught by PR mcpplibs#195 windows workspace leg.
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.
新增 compat.libuv + redis-plus-plus
asyncfeature继 #188(compat.hiredis + compat.redis-plus-plus 同步核心,已合并)之后的独立新 PR,补齐 libuv 异步接口。
包与形态
compat.libuv1.48.0compat.redis-plus-plusasyncfeature(9 个 async TU +compat.libuv依赖)compat.hiredishiredis/adapters/libuv.h薄包装头关键设计
src/unix/*.c每 OS 一个后端文件(aix/linux/darwin…),linux/macos 显式列子集,windows 用src/win/*.c;defines/ldflags 与上游 CMakeLists 逐条对齐。event_loop.cpp后台线程跑uv_run;<uv.h>/<hiredis/adapters/libuv.h>经 feature 激活的依赖 include 传播到达;future/stdinclude dir 进基座(1.3.3 无副作用)。1.3.3 上两个 async TU glob 零命中(子集并集,与同步核心同款)。*/src:libuv 自身编译需internal.h引src/uv-common.h(先例 c-ares/protobuf)。测试
redis-plus-plus-async(1.3.13 +features=["async"]):进程内迷你 RESP server 解析完整 RESP 数组(异步客户端会把 PING+SET 管道进同一 TCP 段),驱动AsyncRedis端到端断言PONG/OK,离线无网络。test result ok。验证
mcpp xpkg parse通过。说明
mcpp-res写权限,纯字符串上游 URL(同 feat(pkg): add compat.hiredis@1.2.0 + compat.redis-plus-plus (1.3.3 & 1.3.13) #188,维护者可补)。-lpsapi -luser32 …等按上游 CMakeLists 写入,待 CI 实证。