- 在 Package.swift 中声明依赖,
Package(...,
dependencies
.package(url: "https://github.com/wti/SwiftPolymurHash.git", from: "0.0.1")
targets: [ .target(..., dependencies
[.product(name: "PolymurHash", package: "SwiftPolymurHash")]
- 代码
- tweak 值提供了一些伪方差,以避免哈希攻击
- 每个哈希器使用 5 个 UInt64 的状态(包括默认的 tweak 值)
警告:与 Swift 的哈希器结合使用并不容易,而且可能不明智
- Swift 不利于外在哈希
- Hashable.hashValue 已弃用
- Hasher 没有用于外在值的 API
- 不能保证 polymur 哈希值能与 Swift 哈希值很好地结合
- 考虑将 Hashable 的用法限制为顶层类型
- 请参阅 SE-206
- polymur-hash.h 是从其源代码存储库手动复制的
- 并且 demo.c 来自 main.c,并且 main 函数已重命名
- 更新源后,在 swift 中更新 PolymurHash.VERSION
- 编译:2 个已知的警告
Hashable.hashValue
的测试代码弃用
- c 代码
Implicit conversion loses integer precision
(隐式转换会损失整数精度)
- 链接
- 是否无需在 Linux 等上与 m (math) 库链接?
linkerSettings: [.linkedLibrary("m", .when(platforms: [.linux]))]
- 测试
- TODO:验证 swift 编译器是否会简化为与 clang 相同/相似的汇编代码
- 版权所有作者,保留所有权利
- polymur-hash 受其许可和版权的约束
- 此封装项目在 MIT 许可下发布。