#file-io #file #mmap #memory-map #io #async-await #memmapix

fmmap

一个灵活且方便的高级 mmap,用于零拷贝文件 I/O

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 文件系统

Download history 868/week @ 2024-04-23 584/week @ 2024-04-30 379/week @ 2024-05-07 1032/week @ 2024-05-14 755/week @ 2024-05-21 901/week @ 2024-05-28 559/week @ 2024-06-04 612/week @ 2024-06-11 852/week @ 2024-06-18 828/week @ 2024-06-25 642/week @ 2024-07-02 633/week @ 2024-07-09 1211/week @ 2024-07-16 867/week @ 2024-07-23 1148/week @ 2024-07-30 1417/week @ 2024-08-06

4,738 每月下载量
用于 12 个 crate (6 直接)

MIT/Apache

555KB
8K SLoC

fmmap

一个灵活且方便的高级 mmap,用于零拷贝文件 I/O。

英文 | 简体中文

github Build codecov

docs.rs crates.io rustc

license-apache license-mit

设计

这个 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 
    
  • tokio

    [dependencies]
    fmmap = { version = "0.3", features = ["tokio-async"] }
    
  • async-std

    [dependencies]
    fmmap = { version = "0.3", features = ["std-async"] }
    
  • smol

    [dependencies]
    fmmap = { version = "0.3", features = ["smol-async"] }
    

示例

这个 crate 完全有文档说明,请参阅 文档 以获取示例。

待办事项

  • 添加基准测试

许可证

根据您的选择,许可协议为 Apache 许可证第 2 版MIT 许可证
除非您明确说明,否则您有意提交以包含在此项目中的任何贡献,根据 Apache-2.0 许可证定义,应按上述方式双重许可,不得附加任何其他条款或条件。

依赖关系

~4–16MB
~213K SLoC