Skip to content

LessUp/bitcal

Repository files navigation

BitCal

纯头文件 C++23 位运算库,正在进行 vNext 重设计

CI 许可证 C++23 状态


概述

BitCal 是一个纯头文件位运算库,当前正朝 C++23x86-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';
}

API 参考

核心类型

类型 说明
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_blockbit_view / const_bit_view 与通过 <bitcal/bitcal.hpp> 提供的自由算法模型。

About

Header-only C++23 bit manipulation library with SIMD acceleration (SSE2/AVX2/AVX-512/NEON) | 仅头文件 C++23 位操作库,支持 SIMD 加速 (SSE2/AVX2/AVX-512/NEON)

Topics

Resources

License

Stars

3 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors