经典常量数据库CDB迎来重大更新,支持64位与原子替换

著名密码学专家Daniel J. Bernstein发布了其轻量级键值对数据库库cdb的20250121版本,这是该项目自2000年以来的首次重大更新。新版引入了64位格式cdb64,支持高达艾字节的数据库大小,并优化了性能和编译选项,适用于嵌入式应用。

丹尼尔·伯恩斯坦更新了CDB库

丹尼尔·伯恩斯坦(Daniel J. Bernstein)是密码学和安全软件开发领域的知名专家,曾开发了qmail、djbdns、NaCl、Ed25519、Curve25519和ChaCha20-Poly1305等项目。他发布了项目cdb的20250121版本,该项目提供了一个数据存储格式和配套库,用于在应用程序中嵌入键/值对数据库功能。该版本距上一次更新cdb 0.75(发布于2000年2月)已有超过25年。

新版本实现了cdb64格式,该格式已转换为使用64位类型的结构。在64位平台上,新格式允许创建高达艾字节(exabyte)大小的数据库(此前数据库大小不能超过4 GB)。数据库非常紧凑,使用4096字节的头部,每条记录附带48字节的元信息(对于32位版本,头部为2048字节,每条记录附带24字节)。访问数据库时,如果存在键,则仅需两次磁盘访问操作;如果键不存在,则仅需一次。支持原子性替换数据库,能够抵抗程序崩溃且不会阻塞读取访问。

其他变化:

  • 支持使用configure脚本构建和make install命令安装。
  • 删除了测试脚本对csh的依赖。
  • 所有内部整数值已替换为定义为long longnum类型。uint32fmtscan函数已被替换为使用num类型工作的函数。
  • 处理缓冲区的软件接口被拆分为inbufoutbuf。清理了hier接口。
  • 从代码中删除了未使用函数的定义。
  • 停止使用包装器,如str_lenallocuint32exiterrorsystype
  • 重构代码以停止使用已弃用的C语言结构,例如旧式函数定义、空原型和旧式的main()定义。
  • 使用了conststatic定义。
  • 构建时启用-Wall标志,并清理代码以消除警告。
  • 编译时启用了选项 -fwrapv-fno-delete-null-pointer-checks-fno-strict-aliasing-fno-strict-overflow
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计