Skip to content

[0080] bytevector-base64-decode 下沉到 native C++ 实现#878

Merged
da-liii merged 1 commit into
mainfrom
da/0080/vector_decode
Jun 28, 2026
Merged

[0080] bytevector-base64-decode 下沉到 native C++ 实现#878
da-liii merged 1 commit into
mainfrom
da/0080/vector_decode

Conversation

@da-liii

@da-liii da-liii commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Summary

  • (liii base64)bytevector-base64-decode 从纯 Scheme 实现下沉到 native C++,完全保留 [0079] 修复后的语义契约(36 个 check 全部通过)
  • 新增 src/liii_base64.cpp,仿照 liii_hashlib.cpp 的 glue 模式,自写 decode 主循环并严格按 0079 契约校验(长度 4X、字符集、= 填充位置)
  • 性能大幅提升:large(10KB) 单次解码从 ~310ms 降至 ~45µs,加速约 6900x;bench 整体耗时从约 17s 降至约 9s

Why native 而非复用 tbox

tbox 的 tb_base64_decode 签名(返回 size_t、无错误码)与 0079 严格契约不兼容:对 =Zm9/Zg=v/====/长度非 4X 等输入不报错,遇到非法字符直接 return 0 也无法与合法空输入区分。因此在 src/liii_base64.cpp 中自写 decode,仅复用 tbox 的类型风格。

Test plan

  • xmake b goldfish 构建通过
  • bin/gf fmt 格式化通过
  • bin/gf tests/liii/base64/bytevector-base64-decode-test.scm — 36 correct, 0 failed
  • bin/gf tests/liii/base64/base64-encode-test.scm — 10 correct, 0 failed
  • bin/gf tests/liii/base64/base64-decode-test.scm — 9 correct, 0 failed
  • bin/gf bench/base64-perf.scm 性能基准复核

@da-liii da-liii merged commit 55c903d into main Jun 28, 2026
5 checks passed
@da-liii da-liii deleted the da/0080/vector_decode branch June 28, 2026 04:25
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.

1 participant