#event-driven #async-io #io #non-blocking #async

deprecated no-std gaea

Low-level library to build event driven applications, supporting lightweight non-blocking I/O

2 releases

0.3.1 Jan 2, 2020
0.3.0 Jun 6, 2019

#70 in #event-driven

MIT license

165KB
2K SLoC

Gaea

Build Status License: MIT Crates.io Docs

Low-level library to build event driven applications, supporting lightweight non-blocking I/O.

This crate started as a fork of mio (v0.6.12, commit 4a716d0b687592368d9e283a6ea63aedb5877fc8), changed to run on a single thread. But since the has evolved dramatically changing to become the center of events, rather then just provided a cross-platform epoll/kqueue implementation.

Rust version 1.33 or higher is required as gaea makes use of Rust 2018 edition features.

Deprecation notice

Gaea is deprecated in favour of Mio as I've joined the Mio team and will continue developing the Mio crate instead of Gaea.

Differences compared to mio

The main two differences compared to mio are:

  • Focus on single threaded performance.
  • No Windows support.

The goal of this crate was to reduce the overhead of locks and/or atomic operations, at the cost of dropping the multi-threaded user queue. This means the usage of this crates, compared to mio, changes to using a single OsQueue (Poll in mio) per thread. Where when using mio you might use a single Poll instance for the entire application.

When reworking the code Windows support was removed because the underlying polling technique provided by the OS differs too much from epoll and kqueue. Carl Lerche (@carllerche, the auther of mio) did an amazing job of supporting Windows, but I have no interest in supporting Windows (I simply don't use it).

OS support

The following platforms are supported:

  • Linux (production target), and
  • macOS (development target).

The following platforms should work, as in the code compiles:

  • FreeBSD,
  • NetBSD, and
  • OpenBSD.

Documentation

The API documentation is available on docs.rs.

License

Licensed under the MIT license (LICENSE or https://opensource.org/licenses/MIT).

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.

Dependencies

~130KB