13 个版本
0.4.4 | 2024年1月26日 |
---|---|
0.4.3 | 2024年1月25日 |
0.2.1 | 2022年6月28日 |
0.2.0 | 2022年4月10日 |
0.0.0 | 2020年7月5日 |
#124 在 异步
每月356 次下载
在 15 个 crate 中使用 (7 个直接使用)
165KB
4K SLoC
Nuclei: 主动 IO & 运行时系统
Nuclei 是一个基于 proactor 的 IO 系统,它对运行时不敏感,可以与任何运行时一起工作。Proactor 系统的设计原则与 Boost Asio 相匹配。Nuclei 不使用传统的反应器方法。它是完全异步的,并以主动的方式封装基于 poll 的 IO。
Nuclei 在 Linux 上使用 io_uring 作为主要的 IO 后端,其次可以使用 epoll。在 MacOS 上,Nuclei 使用 kqueue。在 Windows 上,将使用 IOCP 后端 。
当前的 io_uring 实现需要现代 Linux 内核 (5.19+)。
功能
- 大多数最新的 IO_URING 功能都可用,ZC 和其他 6.1+ 功能在 TODO。
- 异步 TCP、UDP、Unix 域套接字和文件...
- proactor 系统不会阻塞
- 分散/收集操作
- 最小分配
- 比任何其他运行时都更有表现力
- 完全异步 IO 系统和锁免费编程
示例
请前往 examples
目录运行示例
$ cd examples
$ cargo run --example fread-vect
测试
$ cargo test --no-default-features --features=iouring # For iouring
$ cargo test # For others
配置
事件驱动 IO 后端
当 iouring
功能门未启用时,使用平台的事件后端。例如,在 Linux 上,将使用 epoll
。
执行器
执行器使用 async-global-executor
。可用的功能有
async-exec
: 使用async-io
功能的async-global-executor
。tokio
许可证
根据您的选择,受Apache 许可证 2.0 版或MIT 许可证许可。除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在此软件包中的任何贡献,将双重许可如上所述,无任何附加条款或条件。
致谢
Gif来自名为"粒子狂热"的纪录片。
依赖项
~4–14MB
~182K SLoC