takeaway 0.1.0

An efficient work-stealing task queue with prioritization and batching.
Documentation
# `takeaway`: High-performance task queues

`takeaway` is a Rust library providing a high-performance, work-stealing task
queue data structure.  It is perfect for task architectures where:

- There may be thousands of tasks ready to run at any time.
- Tasks are small, synchronous, and CPU-bound.
- All available CPUs should be used to maximum capacity.
- (Optional) Some tasks have a higher priority than others.
- (Optional, coming soon) Grouping certain tasks lets them be executed
  efficiently.

`takeaway` tries to provide the lowest overhead possible.  It is designed from
the ground up to process everything in batches; this amortizes synchronization
costs and makes way for interesting features like task prioritization.

## Alternatives

[`crossbeam-deque`] is a popular Rust crate which also provides work-stealing
task queues.  However, `takeaway` provides a higher-level API with more features
and comparable (if not better) performance.

| | | |
:---:|:---:|:---:
![]./assets/compare-noop-4096b.svg | ![]./assets/compare-light-4096b.svg
![]./assets/batch-sizes-noop-takeaway.svg | ![]./assets/batch-sizes-noop-crossbeam-deque.svg

## Questions / Contributing

`takeaway` currently uses [the `krabby` mailing lists].  Feel free to reach me
on IRC (`bal-e` on Libera.Chat) or [the `krabby-discuss` mailing list].  Use
[`krabby-devel`] for discussing `takeaway` or sending in patches.  You can track
the progress on internal TODO items on [the `krabby` ticket tracker].

[the `krabby` mailing lists]: https://sr.ht/~bal-e/krabby/lists
[the `krabby-discuss` mailing list]: https://lists.sr.ht/~bal-e/krabby-discuss
[the `krabby` ticket tracker]: https://todo.sr.ht/~bal-e/krabby?search=label%3A%22takeaway%22

## Origin

`takeaway` was developed for [`krabby`], an experimental Rust compiler, due to
the feature limitations of [`crossbeam-deque`].  It is offered as a standalone
crate in the hope that it may prove useful for other highly-parallel and
CPU-intensive applications.

[`krabby`]: https://sr.ht/~bal-e/krabby
[`crossbeam-deque`]: https://crates.io/crates/crossbeam-deque

## License

Copyright (C) 2025 arya dradjica (<uhe8ob7m71igsl1d@bal-e.org>)

`takeaway` is available under the MIT or Apache-2.0 licenses, at your option.
Their terms are available in `LICENSES/MIT.txt` and `LICENSES/Apache-2.0.txt`
respectively.

In addition, some code from [`crossbeam-utils`] has been vendored in, under the
MIT or Apache-2.0 licenses.  See `REUSE.toml`.

[`crossbeam-utils`]: https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils