纯头文件 C++23 位运算库,正在进行 vNext 重设计
BitCal 是一个纯头文件位运算库,当前正朝 C++23 与 x86-64 优先 的方向重设计。
新的公开模型围绕以下三层展开:
bit_block<Bits>:拥有固定宽度位存储bit_view/const_bit_view:非拥有视图bit_and<Bits>()与and_into()这类自由算法
<bitcal/bitcal.hpp> 仍然是唯一稳定的公开 include seam。
BitCal 当前处于 vNext / 4.0.0 的活动重设计阶段。
- 破坏性变更:旧的
bitarray中心公开模型正在被替换 - 破坏性变更:最小语言基线提升到 C++23
- 破坏性变更:不计划保留旧 API 的代码级兼容层
- 重点:Linux / Windows x86-64 是主要优化与验证目标
#include <bitcal/bitcal.hpp>
#include <iostream>
int main() {
bitcal::bit_block<256> lhs;
bitcal::bit_block<256> rhs;
auto out = bitcal::bit_and<256>(lhs.view(), rhs.view());
std::cout << out.word(0) << '\n';
}| 类型 | 说明 |
|---|---|
bit_block<Bits> |
拥有固定宽度位存储。Bits >= 64 且为 64 的倍数(如 64、128、192、256) |
bit_view |
非拥有可变视图 |
const_bit_view |
非拥有只读视图 |
| 类别 | 函数 |
|---|---|
| 位运算 | bit_and<Bits>(), bit_or<Bits>(), bit_xor<Bits>(), bit_andnot<Bits>() |
| 原地位运算 | and_into(), or_into(), xor_into(), andnot_into() |
| 查询 | equals(), is_zero(), popcount() |
| 移位 | shift_left<Bits>(), shift_right<Bits>() |
x86-64: scalar / avx2(编译期由 BITCAL_HAS_AVX2 固定,无运行时选择)
cmake -S . -B build-test -DCMAKE_BUILD_TYPE=Release -DBITCAL_BUILD_TESTS=ON -DBITCAL_BUILD_EXAMPLES=ON -DBITCAL_NATIVE_ARCH=ON
cmake --build build-test --config Release -j"$(nproc)"
ctest --test-dir build-test --output-on-failure -C Release旧的 bitarray API 已不再属于当前 shipped vNext 公共表面。BitCal 4.x 期望使用者迁移到 bit_block、bit_view / const_bit_view 与通过 <bitcal/bitcal.hpp> 提供的自由算法模型。