Commit Graph

174 Commits

Author SHA1 Message Date
C J Silverio e34dcfdc25
feature(async): Add tokio as an executor option (#36)
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
2023-01-28 13:01:59 -08:00
C J Silverio 6d84ff0aed
fix(write): set tmpfile length in async writer (#35)
Fixes: https://github.com/zkat/cacache-rs/issues/34

The async `poll_write()` implementation was creating a tempfile as
a backing for its inner mmap, but it was failing to set the length
on the file to match the incoming data. Compare with the sync
implementation!

This bug was exposed when the `memmap2` crate was swapped in
for `memmap`. The older crate was likely more lax about this.

Wrote a pair of new tests for `cacache::write_hash_sync` and
`cacache::write_hash`. The async test fails without this change, as
does any benchmarks run. Everything passes with it.

BREAKING CHANGE: This commit also bumps the MSRV for cacache to 1.66.1.
2023-01-23 17:37:34 -08:00
Kat Marchán 1b29e7435c
(cargo-release) start next development iteration 10.0.2-alpha.0 2022-02-25 09:06:47 -08:00
Kat Marchán e083991a54
(cargo-release) version 10.0.1 2022-02-25 09:06:15 -08:00
Kat Marchán 0877e3e942
docs: update changelog 2022-02-25 09:05:36 -08:00
Kat Marchán 684a3e8a68
fix(mmap): mmap needs equal buffer lengths (#33)
Fixes: https://github.com/zkat/cacache-rs/issues/32
2022-02-25 09:04:28 -08:00
Kat Marchán d9291763ce
(cargo-release) start next development iteration 10.0.1-alpha.0 2022-01-23 10:07:47 -08:00
Kat Marchán 54170f4149
(cargo-release) version 10.0.0 2022-01-23 10:07:08 -08:00
Kat Marchán 8741f4af71
docs: update changelog 2022-01-23 10:06:27 -08:00
Christian Haynes 03d4596baa
fix(security): replaced memmap with memmap2 (#30) 2022-01-23 10:04:07 -08:00
Kat Marchán 9c3cf994ec
misc: cargo fmt 2021-09-15 20:32:18 -07:00
Kat Marchán 323ecacc3b
feat(msrv): bump MSRV to 1.54, thanks to socket 2021-09-15 20:30:40 -07:00
Kat Marchán c5aa6dc24f
(cargo-release) start next development iteration 9.0.1-alpha.0 2021-09-15 20:26:22 -07:00
Kat Marchán 64c60e3f41
(cargo-release) version 9.0.0 2021-09-15 20:25:45 -07:00
Kat Marchán f10cb7f0db
doc: update changelog 2021-09-15 20:25:06 -07:00
Kat Marchán 9163a58481
fix(cleanup): general house cleaning, bumping deps, etc 2021-09-15 20:23:00 -07:00
Kat Marchán 8d08e45298
fix(clippy): appease the paperclip 2021-09-15 19:57:58 -07:00
Kat Marchán 97890872d5
feat(license): change license to Apache-2.0
BREAKING CHANGE: This is a significant licensing change. Please review.
2021-09-15 19:52:50 -07:00
Kat Marchán 6fe12822a9
meta: add publishing bits 2021-09-15 19:42:52 -07:00
Kat Marchán 35a09fe961
8.0.0 2020-07-18 10:46:31 -07:00
Kat Marchán ce75a109e5
docs: update changelog 2020-07-18 10:46:02 -07:00
Kat Marchán 803d0c3ede
feat(write): Use mmap for small writes (#26)
BREAKING CHANGE: This bumps the minimum Rust version from 1.39 to 1.43. Thanks, remove_dir_all! >:(
2020-07-18 10:43:38 -07:00
Kat Marchán addf858ab7 7.0.0 2020-04-29 21:40:47 -07:00
Kat Marchán 2f54c6a85b docs: update changelog 2020-04-29 21:40:02 -07:00
Kat Marchán 9dbb3a39d5 docs: add crates.io badge 2020-04-29 19:43:27 -07:00
Kat Marchán c248be6cc6 docs: rename ci workflow and add status badge 2020-04-29 19:41:57 -07:00
Florian Albertz bb815f5f22 feat(errors): remove anyhow and use custom error types (#24)
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.
2020-04-29 19:34:43 -07:00
Andreas Rammhold 88a76189fc
fix(list_sync): make sure the public interface allows using the Item type (#25)
Before this change the public interface wouldn't allow downstream users
to use the actual items since it wasn't communicated on the function
signature.

Previously a user would run into errors like this:
> no field `key` on type `<impl std::iter::Iterator as std::iter::Iterator>::Item`
2020-04-21 13:42:19 -07:00
Kat Marchán a746fc0216
meta(ci): improve CI workflow 2019-12-16 20:10:39 -08:00
Kat Marchán 513d55833d
meta: remove Cargo.lock from git 2019-12-16 18:54:59 -08:00
Kat Marchán 2413f2e8b1
meta: committing cargo lock 2019-11-11 20:01:17 -08:00
Kat Marchán f596068172
6.0.0 2019-11-11 20:01:09 -08:00
Kat Marchán d7f3216b89
docs: update changelog 2019-11-11 20:00:27 -08:00
Kat Marchán f226a5d1b3
meta: add stable to rust matrix 2019-11-11 19:35:35 -08:00
Kat Marchán c44b781a34
feat(deps): upgrade to latest async-std and regular futures crate
Fixes: #22

BREAKING CHANGE: returned futures are now regular futures crate futures
2019-11-11 19:31:28 -08:00
Kat Marchán a9f8e4e6f4
cleanup: some reorganizing and reformatting of stuff 2019-11-06 23:03:14 -08:00
Kat Marchán b54ec598cb
feat(license): upgrade to Parity 7.0 release
BREAKING CHANGE: There are differences between the prerelease and full release versions of the Parity license. Please read through the terms carefully and consult your own counsel if you have any questions about it.
2019-11-06 20:59:31 -08:00
Kat Marchán d5bb0dffb6
feat(chown): stop changing owner/group on unix platforms
Fixes: #16

BREAKING CHANGE: If you were relying on the chown functionality for the index (which you probably weren't), then your index will no longer be updated that way.
2019-11-06 20:59:24 -08:00
Kat Marchán 864c9314b3
meta: committing cargo lock 2019-10-23 21:21:38 -07:00
Kat Marchán 89d6c23f25
5.0.0 2019-10-23 21:21:29 -07:00
Kat Marchán 95682b203b
docs: update changelog 2019-10-23 21:20:41 -07:00
Kat Marchán 743476b274
feat(api): rewrite entire API to be like std::fs (#21)
Fixes: #13

BREAKING CHANGE: The entire API surface has been rewritten and overhauled. Instead of breaking up the package into get/put/rm/ls modules, everything is now available mostly through the toplevel module, following the same conventions as std:fs for its operations. Associated structs and other types have also been renamed. Please refer to the documentation for the new API, and I hope you find it more ergonomic!
2019-10-23 21:17:57 -07:00
Kat Marchán 0395b0fbff
feat(license): bump Parity license to 7.0.0-pre.3
BREAKING CHANGE: The version of the Parity license has been upgraded. There are no substantial changes to the conditions of the license, but you should still review it in case one of the changes affects you. See LICENSE-PARITY.md for details.
2019-10-22 10:49:03 -05:00
Kat Marchán ccdd8c7578
docs: improve examples 2019-10-21 18:28:00 -04:00
Kat Marchán c619105315
docs: fix v4 changelog headers 2019-10-21 15:42:00 -04:00
Kat Marchán c2b2a22131
meta: committing cargo lock 2019-10-20 23:49:41 -04:00
Kat Marchán 12f7ba02d9
4.0.0 2019-10-20 23:49:09 -04:00
Kat Marchán 20ba4dd3ab
docs: update changelog 2019-10-20 23:49:06 -04:00
Kat Marchán 62298cdf35
feat(errors): improved errors messaging and context (#20)
Fixes: #19

BREAKING CHANGE: Error values have changed. If you were inspecting or
matching against actual return values, you'll need to change your code
to use the new enums.
2019-10-20 23:47:56 -04:00
Kat Marchán 649398512f
feat(rm): Accept AsRef<str> for keys 2019-10-20 23:08:26 -04:00