| # Socket2 |
| |
| Socket2 is a crate that provides utilities for creating and using sockets. |
| |
| The goal of this crate is to create and use a socket using advanced |
| configuration options (those that are not available in the types in the standard |
| library) without using any unsafe code. |
| |
| This crate provides as direct as possible access to the system's functionality |
| for sockets, this means little effort to provide cross-platform utilities. It is |
| up to the user to know how to use sockets when using this crate. *If you don't |
| know how to create a socket using libc/system calls then this crate is not for |
| you*. Most, if not all, functions directly relate to the equivalent system call |
| with no error handling applied, so no handling errors such as `EINTR`. As a |
| result using this crate can be a little wordy, but it should give you maximal |
| flexibility over configuration of sockets. |
| |
| See the [API documentation] for more. |
| |
| [API documentation]: https://docs.rs/socket2 |
| |
| # Two branches |
| |
| Currently Socket2 supports two versions: v0.4 and v0.3. Version 0.4 is developed |
| in the master branch, version 0.3 in the [v0.3.x branch]. |
| |
| [v0.3.x branch]: https://github.com/rust-lang/socket2/tree/v0.3.x |
| |
| # OS support |
| |
| Socket2 attempts to support the same OS/architectures as Rust does, see |
| https://doc.rust-lang.org/nightly/rustc/platform-support.html. However this is |
| not always possible, below is current list of support OSs. |
| |
| *If your favorite OS is not on the list consider contributing it! See [issue |
| #78].* |
| |
| [issue #78]: https://github.com/rust-lang/socket2/issues/78 |
| |
| ### Tier 1 |
| |
| These OSs are tested with each commit in the CI and must always pass the tests. |
| All functions/types/etc., excluding ones behind the `all` feature, must work on |
| these OSs. |
| |
| * Linux |
| * macOS |
| * Windows |
| |
| ### Tier 2 |
| |
| These OSs are currently build in the CI, but not tested. Not all |
| functions/types/etc. may work on these OSs, even ones **not** behind the `all` |
| feature flag. |
| |
| * Android |
| * FreeBSD |
| * Fuchsia |
| * iOS |
| * illumos |
| * NetBSD |
| * Redox |
| * Solaris |
| |
| # Minimum Supported Rust Version (MSRV) |
| |
| Socket2 uses 1.46.0 as MSRV. |
| |
| # License |
| |
| This project is licensed under either of |
| |
| * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or |
| http://www.apache.org/licenses/LICENSE-2.0) |
| * MIT license ([LICENSE-MIT](LICENSE-MIT) or |
| http://opensource.org/licenses/MIT) |
| |
| at your option. |
| |
| ### Contribution |
| |
| Unless you explicitly state otherwise, any contribution intentionally submitted |
| for inclusion in this project by you, as defined in the Apache-2.0 license, |
| shall be dual licensed as above, without any additional terms or conditions. |