[package]
edition = "2024"
rust-version = "1.85"
name = "atap"
version = "0.1.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Threadsafe futureless async runtime for macOS"
readme = "README.md"
keywords = [
"async",
"runtime",
"kqueue",
"macos",
"tasks",
]
categories = [
"asynchronous",
"concurrency",
"network-programming",
"os::macos-apis",
]
license = "MIT"
repository = "https://github.com/Keegan-Wilgermein/atap"
[package.metadata.docs.rs]
targets = [
"aarch64-apple-darwin",
"x86_64-apple-darwin",
]
features = ["tls"]
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
fault-injection = []
tls = [
"dep:rustls",
"dep:rustls-platform-verifier",
]
[lib]
name = "atap"
path = "src/lib.rs"
[[test]]
name = "a_bounded_repeat_of_a_read_runs_its_count"
path = "tests/a_bounded_repeat_of_a_read_runs_its_count.rs"
[[test]]
name = "a_repeat_feeds_every_run"
path = "tests/a_repeat_feeds_every_run.rs"
[[test]]
name = "a_repeat_runs_the_same_program_again"
path = "tests/a_repeat_runs_the_same_program_again.rs"
[[test]]
name = "a_run_blocked_on_input_can_still_be_cancelled"
path = "tests/a_run_blocked_on_input_can_still_be_cancelled.rs"
[[test]]
name = "a_task_that_already_finished_wins_at_once"
path = "tests/a_task_that_already_finished_wins_at_once.rs"
[[test]]
name = "a_task_that_settles_during_registration_is_still_found"
path = "tests/a_task_that_settles_during_registration_is_still_found.rs"
[[test]]
name = "a_timeout_survives_a_manager_restart"
path = "tests/a_timeout_survives_a_manager_restart.rs"
[[test]]
name = "a_worker_dying_mid_help_strands_nothing"
path = "tests/a_worker_dying_mid_help_strands_nothing.rs"
[[test]]
name = "after_can_be_cancelled_before_it_starts"
path = "tests/after_can_be_cancelled_before_it_starts.rs"
[[test]]
name = "an_entire_program_runs_through_the_runtime"
path = "tests/an_entire_program_runs_through_the_runtime.rs"
[[test]]
name = "an_unbounded_repeat_reports_a_lost_race"
path = "tests/an_unbounded_repeat_reports_a_lost_race.rs"
[[test]]
name = "bare_chain_runs_once_now"
path = "tests/bare_chain_runs_once_now.rs"
[[test]]
name = "benchmark"
path = "tests/benchmark.rs"
[[test]]
name = "blocking_compute_uses_sleep_threads"
path = "tests/blocking_compute_uses_sleep_threads.rs"
[[test]]
name = "builder_priority_reaches_the_band"
path = "tests/builder_priority_reaches_the_band.rs"
[[test]]
name = "cancelling_a_spawned_task_settles_every_listener"
path = "tests/cancelling_a_spawned_task_settles_every_listener.rs"
[[test]]
name = "channel"
path = "tests/channel.rs"
[[test]]
name = "cloned_handles_read_the_same_value_across_threads"
path = "tests/cloned_handles_read_the_same_value_across_threads.rs"
[[test]]
name = "compute"
path = "tests/compute.rs"
[[test]]
name = "concurrent_spawn_distinct_results"
path = "tests/concurrent_spawn_distinct_results.rs"
[[test]]
name = "concurrent_tasks_run_in_parallel"
path = "tests/concurrent_tasks_run_in_parallel.rs"
[[test]]
name = "concurrent_tasks_run_in_parallel_long"
path = "tests/concurrent_tasks_run_in_parallel_long.rs"
[[test]]
name = "count_and_deadline_end_at_whichever_is_first"
path = "tests/count_and_deadline_end_at_whichever_is_first.rs"
[[test]]
name = "count_runs_exactly_that_many_times"
path = "tests/count_runs_exactly_that_many_times.rs"
[[test]]
name = "deep_recursion_replaces_blocked_workers"
path = "tests/deep_recursion_replaces_blocked_workers.rs"
[[test]]
name = "every_overlaps_its_runs"
path = "tests/every_overlaps_its_runs.rs"
[[test]]
name = "every_setting_survives_a_repeat"
path = "tests/every_setting_survives_a_repeat.rs"
[[test]]
name = "everyday"
path = "tests/everyday.rs"
[[test]]
name = "file"
path = "tests/file.rs"
[[test]]
name = "finished_and_already_taken_are_different_endings"
path = "tests/finished_and_already_taken_are_different_endings.rs"
[[test]]
name = "for_duration_stops_before_the_run_that_would_overrun"
path = "tests/for_duration_stops_before_the_run_that_would_overrun.rs"
[[test]]
name = "give"
path = "tests/give.rs"
[[test]]
name = "handle_sets"
path = "tests/handle_sets.rs"
[[test]]
name = "high_priority_runs_first"
path = "tests/high_priority_runs_first.rs"
[[test]]
name = "idle_after_burst"
path = "tests/idle_after_burst.rs"
[[test]]
name = "idle_cpu_usage"
path = "tests/idle_cpu_usage.rs"
[[test]]
name = "join_first"
path = "tests/join_first.rs"
[[test]]
name = "join_with_timeout_gives_up_near_its_deadline"
path = "tests/join_with_timeout_gives_up_near_its_deadline.rs"
[[test]]
name = "join_with_timeout_returns_as_soon_as_the_task_does"
path = "tests/join_with_timeout_returns_as_soon_as_the_task_does.rs"
[[test]]
name = "manager_gives_up"
path = "tests/manager_gives_up.rs"
[[test]]
name = "manager_keeps_waits"
path = "tests/manager_keeps_waits.rs"
[[test]]
name = "manager_recovers"
path = "tests/manager_recovers.rs"
[[test]]
name = "memory_many_live"
path = "tests/memory_many_live.rs"
[[test]]
name = "memory_peak"
path = "tests/memory_peak.rs"
[[test]]
name = "memory_peak_at_work"
path = "tests/memory_peak_at_work.rs"
[[test]]
name = "monolithic"
path = "tests/monolithic.rs"
[[test]]
name = "no_leak"
path = "tests/no_leak.rs"
[[test]]
name = "panics"
path = "tests/panics.rs"
[[test]]
name = "pass_back_hands_the_losers_over_in_order"
path = "tests/pass_back_hands_the_losers_over_in_order.rs"
[[test]]
name = "pool_backlog"
path = "tests/pool_backlog.rs"
[[test]]
name = "pool_cancel_frees_threads"
path = "tests/pool_cancel_frees_threads.rs"
[[test]]
name = "pool_grows"
path = "tests/pool_grows.rs"
[[test]]
name = "pool_reaps"
path = "tests/pool_reaps.rs"
[[test]]
name = "pool_waiting_is_free"
path = "tests/pool_waiting_is_free.rs"
[[test]]
name = "process"
path = "tests/process.rs"
[[test]]
name = "racing_first_spawns_all_run"
path = "tests/racing_first_spawns_all_run.rs"
[[test]]
name = "receive"
path = "tests/receive.rs"
[[test]]
name = "recursion"
path = "tests/recursion.rs"
[[test]]
name = "resource_usage"
path = "tests/resource_usage.rs"
[[test]]
name = "shutdown"
path = "tests/shutdown.rs"
[[test]]
name = "signal_arrives"
path = "tests/signal_arrives.rs"
[[test]]
name = "signal_gives_up"
path = "tests/signal_gives_up.rs"
[[test]]
name = "signal_releases_on_drop"
path = "tests/signal_releases_on_drop.rs"
[[test]]
name = "signal_repeats"
path = "tests/signal_repeats.rs"
[[test]]
name = "signal_takes_over"
path = "tests/signal_takes_over.rs"
[[test]]
name = "sleeping_until_counts_from_the_start"
path = "tests/sleeping_until_counts_from_the_start.rs"
[[test]]
name = "spawning_before_init_says_so"
path = "tests/spawning_before_init_says_so.rs"
[[test]]
name = "stress"
path = "tests/stress.rs"
[[test]]
name = "table_recycles"
path = "tests/table_recycles.rs"
[[test]]
name = "table_trims"
path = "tests/table_trims.rs"
[[test]]
name = "tcp"
path = "tests/tcp.rs"
[[test]]
name = "tcp_cancel_frees_parked"
path = "tests/tcp_cancel_frees_parked.rs"
[[test]]
name = "tcp_manager_gives_up_writes_off_parked"
path = "tests/tcp_manager_gives_up_writes_off_parked.rs"
[[test]]
name = "tcp_manager_restart_keeps_parked"
path = "tests/tcp_manager_restart_keeps_parked.rs"
[[test]]
name = "tcp_parked_waits_hold_no_thread"
path = "tests/tcp_parked_waits_hold_no_thread.rs"
[[test]]
name = "tcp_shutdown_writes_off_parked"
path = "tests/tcp_shutdown_writes_off_parked.rs"
[[test]]
name = "test"
path = "tests/test.rs"
[[test]]
name = "the_manager_and_every_thread_die_at_once"
path = "tests/the_manager_and_every_thread_die_at_once.rs"
[[test]]
name = "the_quickest_one_wins"
path = "tests/the_quickest_one_wins.rs"
[[test]]
name = "the_worker_target_bends_under_real_need"
path = "tests/the_worker_target_bends_under_real_need.rs"
[[test]]
name = "timeout"
path = "tests/timeout.rs"
[[test]]
name = "tls"
path = "tests/tls.rs"
[[test]]
name = "tuned_sizes_reach_the_pool"
path = "tests/tuned_sizes_reach_the_pool.rs"
[[test]]
name = "udp"
path = "tests/udp.rs"
[[test]]
name = "unix"
path = "tests/unix.rs"
[[test]]
name = "waiting_repeats"
path = "tests/waiting_repeats.rs"
[[test]]
name = "watch"
path = "tests/watch.rs"
[[test]]
name = "watch_parked_waits_hold_no_thread"
path = "tests/watch_parked_waits_hold_no_thread.rs"
[dependencies.libc]
version = "0.2.186"
[dependencies.rustls]
version = "0.23.44"
features = [
"std",
"aws_lc_rs",
"tls12",
"prefer-post-quantum",
]
optional = true
default-features = false
[dependencies.rustls-platform-verifier]
version = "0.7"
optional = true
[dev-dependencies.rcgen]
version = "0.14"
features = [
"crypto",
"pem",
"aws_lc_rs",
]
default-features = false
[dev-dependencies.time]
version = "0.3"