13 个版本
0.3.3 | 2023 年 9 月 18 日 |
---|---|
0.3.2 | 2022 年 10 月 3 日 |
0.3.0 | 2022 年 7 月 3 日 |
0.2.6 | 2022 年 6 月 30 日 |
0.1.0 | 2021 年 12 月 9 日 |
#204 in 文件系统
4,738 每月下载量
用于 12 个 crate (6 直接)
555KB
8K SLoC
fmmap
设计
这个 crate 的设计灵感来自 Dgraph 在 Stretto 中的 mmap 文件实现。
如果底层文件随后被修改(例如,文件被另一个进程删除),所有基于文件的内存映射都有潜在的不确定行为 (UB)。这个 crate 尝试通过提供文件锁 API 来避免这种情况。
这个 crate 支持 std 和流行的异步运行时 (tokio, async-std, smol),并且得益于 Rust 中的 宏
,它非常容易支持任何新的异步运行时。有关详细信息,请参阅源代码中 tokio、async-std、smol 的实现。
特性
- 数十个文件 I/O 工具函数
- 基于文件的内存映射
- 同步和异步刷新
- 写时复制内存映射
- 只读内存映射
- 堆支持(Unix 上的
MAP_STACK
) - 可执行内存映射
- 文件锁。
- tokio
- smol
- async-std
安装
-
std
[dependencies] fmmap = 0.2
-
[dependencies] fmmap = { version = "0.3", features = ["tokio-async"] }
-
[dependencies] fmmap = { version = "0.3", features = ["std-async"] }
-
[dependencies] fmmap = { version = "0.3", features = ["smol-async"] }
示例
这个 crate 完全有文档说明,请参阅 文档 以获取示例。
待办事项
- 添加基准测试
许可证
根据您的选择,许可协议为 Apache 许可证第 2 版 或 MIT 许可证。除非您明确说明,否则您有意提交以包含在此项目中的任何贡献,根据 Apache-2.0 许可证定义,应按上述方式双重许可,不得附加任何其他条款或条件。
依赖关系
~4–16MB
~213K SLoC