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异步

Download history 95/week @ 2024-04-22 114/week @ 2024-04-29 71/week @ 2024-05-06 86/week @ 2024-05-13 104/week @ 2024-05-20 86/week @ 2024-05-27 84/week @ 2024-06-03 96/week @ 2024-06-10 351/week @ 2024-06-17 66/week @ 2024-06-24 11/week @ 2024-07-01 47/week @ 2024-07-08 56/week @ 2024-07-15 74/week @ 2024-07-22 53/week @ 2024-07-29 171/week @ 2024-08-05

每月356 次下载
15 个 crate 中使用 (7 个直接使用)

Apache-2.0/MIT

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