库联动¶
记录库如何把语言特性落到生产需求上,收益与代价并列;每张卡片都指向固定 commit 的证据页。
| 库 | 特性 | 模式 | 收益 | 代价 | 证据 |
|---|---|---|---|---|---|
| stephenberry/glaze | constexpr 中的动态分配 | 用 constexpr std::string 在编译期转换键名并转义 JSON 字符串 | 运行期直接读取定型结果,省去重复的字符串处理 | 需要 GCC 12、Clang 15、MSVC 19.29 以上;旧 ABI 要准备回退路径 | ev-glaze-constexpr-string-escape-001 · ev-glaze-constexpr-string-rename-002 · ev-glaze-consteval-renamed-size-003 |
| NVIDIA/stdexec | 模板 lambda(template lambda) | 用带显式模板参数的 lambda 在编译期展开参数包,选择发送者的完成签名 | 把类型推导留在调用点,省去为每种签名手写独立仿函数 | 错误信息会叠两层模板,约束失败时定位成本高 | ev-stdexec-template-lambda-transform-001 · ev-stdexec-template-lambda-completion-info-002 · ev-stdexec-template-lambda-awaitable-003 |
| VROOM-Project/vroom | 闩锁、屏障与计数信号量 | 用计数信号量限制同时进行的求解搜索与外部路由请求数量 | 并发配额与线程数解耦,避免压垮下游路由服务 | 许可必须成对归还,异常路径容易泄漏;等待不可取消 | ev-vroom-semaphore-search-001 · ev-vroom-semaphore-released-002 |
stephenberry/glaze × constexpr 中的动态分配¶
- 模式:用 constexpr std::string 在编译期转换键名并转义 JSON 字符串
- 收益:运行期直接读取定型结果,省去重复的字符串处理
- 代价:需要 GCC 12、Clang 15、MSVC 19.29 以上;旧 ABI 要准备回退路径
- 特性页:constexpr 中的动态分配
- 证据:ev-glaze-constexpr-string-escape-001 · ev-glaze-constexpr-string-rename-002 · ev-glaze-consteval-renamed-size-003
- 示例:examples/cpp20/constexpr_allocation.cpp
NVIDIA/stdexec × 模板 lambda(template lambda)¶
- 模式:用带显式模板参数的 lambda 在编译期展开参数包,选择发送者的完成签名
- 收益:把类型推导留在调用点,省去为每种签名手写独立仿函数
- 代价:错误信息会叠两层模板,约束失败时定位成本高
- 特性页:模板 lambda(template lambda)
- 证据:ev-stdexec-template-lambda-transform-001 · ev-stdexec-template-lambda-completion-info-002 · ev-stdexec-template-lambda-awaitable-003
- 示例:examples/cpp20/template_lambda.cpp
VROOM-Project/vroom × 闩锁、屏障与计数信号量¶
- 模式:用计数信号量限制同时进行的求解搜索与外部路由请求数量
- 收益:并发配额与线程数解耦,避免压垮下游路由服务
- 代价:许可必须成对归还,异常路径容易泄漏;等待不可取消
- 特性页:闩锁、屏障与计数信号量
- 证据:ev-vroom-semaphore-search-001 · ev-vroom-semaphore-released-002
- 示例:examples/cpp20/latch_barrier_semaphore.cpp