Skip to content

feat(pkg): compat.boost-{config,assert,throw-exception,type-traits,uuid} 1.92.0 + compat.jwt-cpp 0.7.2 - #244

Merged
Sunrisepeak merged 1 commit into
mcpplibs:mainfrom
wellwei:feat/boost-family-and-jwt-cpp
Aug 23, 2026
Merged

feat(pkg): compat.boost-{config,assert,throw-exception,type-traits,uuid} 1.92.0 + compat.jwt-cpp 0.7.2#244
Sunrisepeak merged 1 commit into
mcpplibs:mainfrom
wellwei:feat/boost-family-and-jwt-cpp

Conversation

@wellwei

@wellwei wellwei commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

内容

六个新包(传统 #include 消费,Shape B 头文件+锚点,无模块包装,language=c++20):

版本 依赖
compat.boost-config 1.92.0
compat.boost-assert 1.92.0 config
compat.boost-throw-exception 1.92.0 assert, config
compat.boost-type-traits 1.92.0 config
compat.boost-uuid 1.92.0 全部四个
compat.jwt-cpp (Thalhammer/jwt-cpp) 0.7.2 compat.openssl 3.5.1

Boost 家族走 modular-boost 拆包路线(vcpkg 同构):每个 boostorg/ 从自己的
boost-1.92.0 tag 打独立小包(Config 约 300 KiB),不引 ~224 MiB 单体 tarball;
后续引入其他 Boost 组件只需再加一个描述符。头文件包含闭包经逐文件 grep 核实
(与各库 CMakeLists INTERFACE 行一致),五包交付集两两不相交;升级时整列车一起动版本。

jwt-cpp 无条件依赖 openssl(jwt.h 在无 feature guard 下包含 <openssl/*.h>),
链接标志由 compat.openssl 自带并向消费者传递;JSON 用捆绑 picojson 默认后端。
CN 镜像暂缺,纯上游 URL(boost-ext.ut 先例)。

验证

  • lint 五连:lua 语法 / check_package_name / check_mirror_urls / 平台版本 parity / 全仓跨包引用
  • mcpp xpkg parse(pin 的 2026.8.10.3)六描述符全过
  • 本地 macOS arm64 冷缓存:六成员 mcpp test 全绿
  • fork 全量 CI 绿(11/11 检查):linux gcc 腿、linux llvm 腿、macOS、windows 四条腿
    均通过六个新成员的真实断言(uuid 的 uint128 -latomic 预案未被触发;windows
    NOMINMAX 无扰);jwt-cpp 成员在每条腿上做真实 HS256 签发→验签→错误密钥拒绝,
    经 compat.openssl 源码构建实链

PR 描述符注释里记录了两条预案:linux -latomic(uuid uint128 路径)与 windows
NOMINMAX 上游 FAQ。测试成员:tests/examples/{boost-config,boost-assert,
boost-throw-exception,boost-type-traits,boost-uuid,jwt-cpp}。

…id} 1.92.0 + compat.jwt-cpp 0.7.2

modular-boost 拆包路线(vcpkg 同构):每个 boostorg/<lib> 从自己的 boost-1.92.0
tag 打独立小包,不引单体 tarball。头文件包含闭包经逐文件 grep 核实:uuid 仅依
赖 config/assert/throw_exception/type_traits 四个头库,五包交付集两两不相交,
升级时整列车一起动版本。

- 传统 #include 消费(Shape B 头文件+锚点),不做模块包装;language=c++20
- jwt-cpp(Thalhammer/jwt-cpp,v0.7.2)无条件依赖 compat.openssl 3.5.1,
  链接标志由 openssl 包自带并传递;JSON 后端用捆绑 picojson 默认
- 六个消费者测试成员(mcpp.toml 注册),真断言:版本列车/BOOST_VERIFY 语义/
  异常传播/trait 答案/UUID RFC4122 形状与 SHA1 名字生成器/JWT HS256 实签实验签
- 本地 macOS 冷缓存全绿:lint 五连 + pinned mcpp 2026.8.10.3 xpkg parse +
  六成员 mcpp test;linux gcc 腿的 -latomic 预案已记录在 uuid 描述符注释
- CN 镜像暂缺,纯上游 URL(boost-ext.ut 先例)
@Sunrisepeak
Sunrisepeak merged commit a9a9446 into mcpplibs:main Aug 23, 2026
11 checks passed
@wellwei
wellwei deleted the feat/boost-family-and-jwt-cpp branch August 23, 2026 07:26
Sunrisepeak pushed a commit that referenced this pull request Sep 5, 2026
* feat(pkg): compat.boost-beast 1.92.0 + modular-boost 第二列车(25 个新包)

收录 Boost.Beast(HTTP/WebSocket)。Beast 1.92 上游已移除
BEAST_USE_STANDALONE_ASIO(error.hpp 无条件别名 boost::system::error_code),
无法复用独立 chriskohlhoff.asio,故沿 #244 的 modular-boost 拆包路线
(vcpkg 同构,每个 boostorg/<lib> 从自己的 boost-1.92.0 tag 打小包)
一次性补齐全传递闭包,共 25 个新描述符:

  boost-beast(19 直接依赖), boost-asio, boost-align, boost-bind,
  boost-compat, boost-container, boost-container-hash, boost-core,
  boost-describe, boost-endian, boost-intrusive, boost-io, boost-logic,
  boost-move, boost-mp11, boost-optional, boost-predef, boost-preprocessor,
  boost-smart-ptr, boost-static-string, boost-system, boost-type-index,
  boost-utility, boost-variant2, boost-winapi

- 闭包逐 include grep(两种 #include 拼写)并与各仓 CMakeLists INTERFACE
  行交叉核对;beast 的 19 个依赖与上游 CMakeLists 完全一致
- 29 棵 include 树(2608 文件)两两不相交,*/include 联合无碰撞
- 单文件 shim 归属逐一核实(type_index 走 <boost/type_index.hpp> 单文件头;
  cerrno 归 system;get_pointer/type/noncopyable 等归 core;none 归 optional)
- boost-asio 经 default feature 携带 BOOST_ASIO_DISABLE_BOOST_CONTEXT_FIBER
  与 BOOST_ASIO_DISABLE_BOOST_DATE_TIME(与 chriskohlhoff.asio 同思路):
  关掉 boost.context(编译期汇编库)与 boost.date_time,保住家族 header-only;
  boost-beast 的 default feature 原样重述两个宏,保证消费 TU 配置一致
- 全部 25 个 tarball 无符号链接(Windows 可直接解包);sha256 双算稳定;
  暂不建 CN 镜像(纯字符串 GLOBAL url,家族先例)
- 测试成员 boost-beast:HTTP 解析/序列化回路/错误路径/自带 zlib 往返/
  multi_buffer+static_string;boost-asio:feature 宏传播 + 真实 io_context
  定时器/co_spawn 往返;既有 boost-uuid 成员回归通过
- mcpp 2026.8.27.2 本地冷验证通过;lint 全套(lua 语法/必填字段/裸版本/
  name 单段/镜像表/跨包引用/平台版本对齐/重复版本/xpkg parse)全绿

设计文档:.agents/docs/2026-09-05-add-boost-beast-plan.md

* fix(boost-asio): 钉定 BOOST_ASIO_HAS_THREADS — llvm-on-Windows 静默退化为 null_thread

workspace 的 llvm-on-Windows 工具链(clang → x86_64-pc-windows-msvc)不定义
_MT/_REENTRANT,boost::config 也给不出 BOOST_HAS_THREADS,asio 的探测
(detail/config.hpp)静默选中 null_thread,boost-asio 成员在 windows CI 上
运行即 crash(exit 0xC0000409)。与 chriskohlhoff.asio 钉 ASIO_HAS_THREADS
完全同构;该宏还参与 BOOST_ASIO_VERSION_TAG,跨 TU 必须一致,故作为
default feature 的 define 传播,boost-beast 侧同步重述。

linux/macos/windows 三平台语义一致,macOS 本地冷验证两成员仍通过。

* test(boost-family): 大测试成员 — 一个工程覆盖全部 23 个小依赖包

新增 tests/examples/boost-family/:消费 modular-boost 家族所有没有专属
成员的小包(align/bind/compat/container/container-hash/core/describe/
endian/intrusive/io/logic/move/mp11/optional/predef/preprocessor/
smart-ptr/static-string/system/type-index/utility/variant2/winapi),
按主题分 6 个 tests/*.cpp,每个组件都有可失败的行为断言:

  core-smart      core(addressof/empty_value/ref) + smart-ptr + move
  containers      container(vector) + intrusive(list) + optional + static-string
  meta            mp11 + describe + preprocessor + type-index + predef
  system-errors   system(error_code/system_error) + compat(invoke) + bind
  bytes-logic     endian + container-hash + logic(tribool) + align
  io-platform     io(ios_flags_saver) + utility(compressed_pair) + winapi

实测踩坑固化进注释:tribool 连 operator! 都返回 tribool(取 bool 走
explicit 转换/indeterminate());boost/winapi 头非 Windows 平台 #error
(include 与断言均在 _WIN32 门控内,由 windows CI 腿真实覆盖);
intrusive::list 析构前必须 clear(带链析构触发调试断言)。

mcpp 2026.8.27.2 本地冷验证:6/6 test result ok。
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