This PR is based on the work @alexschrod did in PR #29. All
I did was carry it over the finish line.
This PR adds a feature to the crate named `tokio-runtime`. If
you disable default features and enable this new one, cacache
uses tokio as its async executor. This makes integrating cacache
with tokio-using projects easier, because the file types leak out
if you use anything more than the top-level convenience functions.
The PR implements the feature using shims in a new submodule named
`async_lib`. This module conditionally uses either async-std
or tokio based on feature selection, and hides some differences with
convenience functions.
This change should not be a breaking change, because the default is
still async-std.
There are a few other small changes in this PR worth noting.
- The README shows how to switch runtimes.
- There's a justfile to run common tasks, including those in makefile.toml.
The default shell is `sh`, so this might not work out of the box for
Windows users.
- The tests can now run under either runtime. The justfile has a recipe
that runs them both.
- The benchmarks can also run under either runtime. The justfile has two
recipe for this, one using bench and the other using criterion's runner.
- The dependencies now pull in async-attributes by default along with
async-std. This made it easier to swap runtimes in the tests.
- All dependency versions have been bumped.
Co-authored-by: @alexschrod
Co-authored-by: Florian Albertz <git@albertz.io>
BREAKING CHANGE: This changes the exported error type(s) for cacache, making it way easier to do error handling when something goes kaput.
BREAKING CHANGE: The license terms have changed. Please refer to LICENSE in the root of this repository for details. Future use of this library may require release of source code for any changes applied to it.