Elektra 是一个通用和安全的框架,用于访问全局分层密钥数据库中的配置设置。Elektra 从跨平台相关问题中抽象出来,使应用程序能够了解其他应用程序的配置,利用简单的应用程序集成。
0.9.0 版本已经发布,更新内容如下:
Cache
Cache 是一个新的全局缓存插件,它使用 mmapStorage 作为其存储后端,并从以前的配置访问中惰性地存储整个配置。
假设有 649 个 INI 配置文件与完全指定的多文件解析器一起安装(这意味着必须将规范复制到所有配置设置中)。在缓存之前,检索整个配置需要 6 秒甚至 13 秒。对于 Cache,整个操作在第一次访问后不到 0.5 秒。
默认情况下,一旦安装了缓存插件,缓存将自动启用,缓存可以在 ~/.cache/Elektra 中找到。
存在限制:
- 未与文件连接的挂载点,目前无法缓存
- 缓存目前不与其他全局插件一起工作
还添加了启用、禁用和清除缓存的工具。
命令行选项
Gopts 是一个新插件,它集成了对应用程序命令行选项的支持:
- Gopts 插件检索 elektraGetOpts 所需的 ARGC、ARG 和 envp 的值,然后进行调用。它被用作全局插件,以便在调用 kdbGet 时自动解析命令行选项
- 该插件工作在 Win 32 (通过 GetCommandLineW 和 GetEnvironmentString)、MAC_OSX(_NSGetArgc、_NSGetArgv)和任何具有接受Kern_proc_args(例如 FreeBSD)的 sysctl(3) 函数或当 prof 被挂载时工作的系统,并且 /proc/Self 或 /proc/curproc 都指当前进程。如果您需要对任何其他系统的支持,可以随意添加一个实现
kdbEnure 是 Elektra-kdb 中的一个新函数。它可以用于确保 KDB 实例满足合同中指定的某些条款。原则上,这是一个非常强大的工具,可以用于很多事情。kdbEnInsurance 所做的所有更改都是在传递给函数的 KDB 句柄内进行的。
错误代码
有了这个版本,可以将我们混乱的错误代码系统变成了一种更结构化和更干净的方式。与 SQLState 类似,我们更改错误代码的结构,并对它们进行了迁移。看这使我们可以轻松地扩展规范,而不会破坏现有代码,并避免重复错误的风险。
插件
该版本增加了 9 个插件,删除了 2 个插件:
-
Type:该插件是用 C 完全重写的,提供 enum 和 bool 插件的功能,旧版本被称为 cpptype
-
Base64:修复了关于 base 64 插件中 UBSan 报告的隐式类型转换的一些警告
-
Crypto and Fcrypt:添加空的 gpg 密钥 ID 将导致在调用 gpg 时出现错误;将 base 64 编码应用于主密码,该密码存储在插件配置中,这解决了如果将ini用作默认存储时出现的问题;修复 OpenSSL API 的编译
-
CSVStorage:CSVStorage 插件支持 DOS newline
-
Filecheck:修复了 UBSAN 报告的关于隐式类型转换的一些警告
-
INI:插件将写入 INI 文件,不再在“=”周围出现空格
-
Macaddr:添加了一个插件来处理 MAC 地址
-
……
更多内容,请见发布说明