Skip to content

Commit

Permalink
default all feature flags to off
Browse files Browse the repository at this point in the history
Changes the set of `default` feature flags to `[]`. By default, only
core traits are included without specifying feature flags. This makes it
easier for users to pick the components they need.

For convenience, a `full` feature flag is included that includes all
components.

Tests are configured to require the `full` feature. Testing individual
feature flags will need to be moved to a separate crate.

Closes #1791
  • Loading branch information
carllerche committed Nov 22, 2019
1 parent 8546ff8 commit 9f6a161
Show file tree
Hide file tree
Showing 66 changed files with 140 additions and 57 deletions.
5 changes: 2 additions & 3 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ pr: ["master"]

variables:
RUSTFLAGS: -Dwarnings
nightly: 2019-11-16

jobs:
# Check formatting
Expand Down Expand Up @@ -80,9 +81,7 @@ jobs:
- clippy
- test_tokio
- test_linux
# - test_features
- loom
# - test_nightly
- cross
# - minrust
- minrust
# - tsan
4 changes: 2 additions & 2 deletions examples/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ publish = false
edition = "2018"

[dev-dependencies]
tokio = { version = "=0.2.0-alpha.6", path = "../tokio" }
tokio-util = { version = "=0.2.0-alpha.6", path = "../tokio-util" }
tokio = { version = "=0.2.0-alpha.6", path = "../tokio", features = ["full"] }
tokio-util = { version = "=0.2.0-alpha.6", path = "../tokio-util", features = ["full"] }

bytes = { git = "https://github.com/tokio-rs/bytes" }
futures = "0.3.0"
Expand Down
2 changes: 1 addition & 1 deletion tokio-test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Testing utilities for Tokio- and futures-based code
categories = ["asynchronous", "testing"]

[dependencies]
tokio = { version = "=0.2.0-alpha.6", path = "../tokio", features = ["test-util"] }
tokio = { version = "=0.2.0-alpha.6", path = "../tokio", features = ["rt-core", "sync", "time", "test-util"] }

bytes = { git = "https://github.com/tokio-rs/bytes" }
futures-core = "0.3.0"
Expand Down
2 changes: 2 additions & 0 deletions tokio-tls/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ native-tls = "0.2"
tokio = { version = "=0.2.0-alpha.6", path = "../tokio" }

[dev-dependencies]
tokio = { version = "=0.2.0-alpha.6", path = "../tokio", features = ["macros", "stream", "rt-core", "io-util", "net"] }

cfg-if = "0.1"
env_logger = { version = "0.6", default-features = false }
futures = { version = "0.3.0", features = ["async-await"] }
Expand Down
11 changes: 11 additions & 0 deletions tokio-util/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@ Additional utilities for working with Tokio.
"""
categories = ["asynchronous"]

[features]
# No features on by default
default = []

# Shorthand for enabling everything
full = ["codec", "udp"]

codec = []
udp = ["tokio/udp"]

[dependencies]
tokio = { version = "=0.2.0-alpha.6", path = "../tokio" }

Expand All @@ -36,3 +46,4 @@ futures = "0.3.0"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
19 changes: 19 additions & 0 deletions tokio-util/src/cfg.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
macro_rules! cfg_codec {
($($item:item)*) => {
$(
#[cfg(feature = "codec")]
#[cfg_attr(docsrs, doc(cfg(feature = "codec")))]
$item
)*
}
}

macro_rules! cfg_udp {
($($item:item)*) => {
$(
#[cfg(all(feature = "udp", feature = "codec"))]
#[cfg_attr(docsrs, doc(cfg(all(feature = "udp", feature = "codec"))))]
$item
)*
}
}
13 changes: 11 additions & 2 deletions tokio-util/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,17 @@
no_crate_inject,
attr(deny(warnings, rust_2018_idioms), allow(dead_code, unused_variables))
))]
#![cfg_attr(docsrs, feature(doc_cfg))]

//! Utilities for working with Tokio.

pub mod codec;
pub mod udp;
#[macro_use]
mod cfg;

cfg_codec! {
pub mod codec;
}

cfg_udp! {
pub mod udp;
}
1 change: 1 addition & 0 deletions tokio-util/src/udp/frame.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ use std::task::{Context, Poll};
/// calling `split` on the `UdpFramed` returned by this method, which will break
/// them into separate objects, allowing them to interact more easily.
#[must_use = "sinks do nothing unless polled"]
#[cfg_attr(docsrs, doc(feature = "codec-udp"))]
#[derive(Debug)]
pub struct UdpFramed<C> {
socket: UdpSocket,
Expand Down
7 changes: 4 additions & 3 deletions tokio/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ categories = ["asynchronous", "network-programming"]
keywords = ["io", "async", "non-blocking", "futures"]

[features]
default = ["full"]
# Include nothing by default
default = []

# enable everything
full = [
Expand All @@ -48,7 +49,7 @@ full = [
blocking = ["rt-core"]
dns = ["rt-core"]
fs = ["rt-core"]
io-driver = ["rt-core", "mio", "lazy_static"]
io-driver = ["mio", "lazy_static"]
io-util = ["memchr"]
# stdin, stdout, stderr
io-std = ["rt-core"]
Expand Down Expand Up @@ -83,7 +84,7 @@ stream = ["futures-core"]
sync = ["fnv"]
test-util = []
tcp = ["io-driver"]
time = ["rt-core", "slab"]
time = ["slab"]
udp = ["io-driver"]
uds = ["io-driver", "mio-uds", "libc"]

Expand Down
7 changes: 7 additions & 0 deletions tokio/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,13 @@
//! control what features are present, so that unused code can be eliminated.
//! This documentation also lists what feature flags are necessary to enable each API.
//!
//! The easiest way to get started is to enable all features. Do this by
//! enabling the `full` feature flag:
//!
//! ```toml
//! tokio = { version = "0.2", features = ["full"] }
//! ```
//!
//! [features]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section
//!
//! ## Working With Tasks
Expand Down
2 changes: 2 additions & 0 deletions tokio/tests/_require_full.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#![cfg(not(feature = "full"))]
compile_error!("run main Tokio tests with `--features full`");
1 change: 1 addition & 0 deletions tokio/tests/buffered.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::net::TcpListener;
use tokio::prelude::*;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/fs_dir.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::fs;
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/fs_file.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::fs::File;
use tokio::prelude::*;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/fs_file_mocked.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

macro_rules! ready {
($e:expr $(,)?) => {
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/fs_link.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::fs;

Expand Down
3 changes: 3 additions & 0 deletions tokio/tests/io_async_read.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::AsyncRead;
use tokio_test::task;
use tokio_test::{assert_ready_err, assert_ready_ok};
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_chain.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::AsyncReadExt;
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_copy.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::{AsyncRead, AsyncReadExt};
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_driver.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::net::TcpListener;
use tokio::runtime;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_driver_drop.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::net::TcpListener;
use tokio::runtime;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_lines.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::AsyncBufReadExt;
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_read.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::{AsyncRead, AsyncReadExt};
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_read_exact.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::AsyncReadExt;
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_read_line.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::AsyncBufReadExt;
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_read_to_end.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::AsyncReadExt;
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_read_to_string.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::AsyncReadExt;
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_read_until.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::AsyncBufReadExt;
use tokio_test::assert_ok;
Expand Down
3 changes: 3 additions & 0 deletions tokio/tests/io_split.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::{split, AsyncRead, AsyncWrite, ReadHalf, WriteHalf};

use std::io;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_take.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::AsyncReadExt;
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_write.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::{AsyncWrite, AsyncWriteExt};
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/io_write_all.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::{AsyncWrite, AsyncWriteExt};
use tokio_test::assert_ok;
Expand Down
3 changes: 3 additions & 0 deletions tokio/tests/net_bind_resource.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::net::TcpListener;

use std::convert::TryFrom;
Expand Down
4 changes: 2 additions & 2 deletions tokio/tests/process_issue_42.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#![cfg(feature = "process")]
#![cfg(unix)]
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]
#![cfg(unix)]

use tokio::process::Command;
use tokio::runtime;
Expand Down
2 changes: 1 addition & 1 deletion tokio/tests/process_smoke.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#![cfg(feature = "process")]
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::process::Command;
use tokio_test::assert_ok;
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/rt_basic.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::runtime::Runtime;
use tokio::sync::oneshot;
Expand Down
5 changes: 3 additions & 2 deletions tokio/tests/rt_common.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Tests to run on both current-thread & therad-pool runtime variants.

#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

// Tests to run on both current-thread & therad-pool runtime variants.

macro_rules! rt_test {
($($t:tt)*) => {
Expand Down
1 change: 1 addition & 0 deletions tokio/tests/rt_threaded.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]

use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio::net::{TcpListener, TcpStream};
Expand Down
3 changes: 2 additions & 1 deletion tokio/tests/signal_ctrl_c.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#![cfg(unix)]
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]
#![cfg(unix)]

mod support {
pub mod signal;
Expand Down
3 changes: 2 additions & 1 deletion tokio/tests/signal_drop_recv.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#![cfg(unix)]
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]
#![cfg(unix)]

mod support {
pub mod signal;
Expand Down
3 changes: 2 additions & 1 deletion tokio/tests/signal_drop_rt.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#![cfg(unix)]
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]
#![cfg(unix)]

mod support {
pub mod signal;
Expand Down
3 changes: 2 additions & 1 deletion tokio/tests/signal_drop_signal.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#![cfg(unix)]
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]
#![cfg(unix)]

mod support {
pub mod signal;
Expand Down
3 changes: 2 additions & 1 deletion tokio/tests/signal_multi_rt.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#![cfg(unix)]
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]
#![cfg(unix)]

mod support {
pub mod signal;
Expand Down
3 changes: 2 additions & 1 deletion tokio/tests/signal_no_rt.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#![cfg(unix)]
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]
#![cfg(unix)]

use tokio::signal::unix::{signal, SignalKind};

Expand Down
3 changes: 2 additions & 1 deletion tokio/tests/signal_notify_both.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#![cfg(unix)]
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]
#![cfg(unix)]

mod support {
pub mod signal;
Expand Down
3 changes: 2 additions & 1 deletion tokio/tests/signal_twice.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#![cfg(unix)]
#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]
#![cfg(unix)]

mod support {
pub mod signal;
Expand Down
Loading

0 comments on commit 9f6a161

Please sign in to comment.