Announcing Asuran 0.1.0!

I am proud to announce that I have pushed Asuran version 0.1.0 to crates.io!

What this means

In a practical sense, this release mostly signifies that the core API has settled down enough that I am no longer scared of adding new, more complicated, (and more powerful) features.

That doesn’t mean asuran is completely useless though, it already has many of the core features you would come to expect from an archiver. It is actually functional, and can make and restore archives. It even has several knobs for you to tweak!

Not a stability promise

While I will try to avoid changes that break backwards compatibility, and will likely entirely avoid changes that break the ability to read existing repos until at least 0.2.0, there are currently no promises about breaking API changes. I will try to keep these to a minium, but asuran is still experimental software.

On that note, please do not use this as an excuse to rely solely on asuran. It will eat your laundry if you do so.

Testing

Asuran is currently continuously tested on 64bit linux, macos, and windows. All of these are first class support targets, and any test failures on any of them will hold up a release.

Test coverage is decent at the moment but not great. I would like to get automated fuzz testing setup for at least linux in the very near future.

What asuran can do right now

Asuran can create, store, list, and extract archives from within a repository on the local filesystem, with a few other niceties.

Take a look at the output of asuran-cli --help:

Asuran-CLI 0.1.0-6405ca0 2020-04-23
Nathan McCarty <nathan@mccarty.io>
Indicates which subcommand the user has chosen

USAGE:
    asuran-cli [FLAGS] <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -q, --quiet      Squelch non-logging operations
    -V, --version    Prints version information

SUBCOMMANDS:
    bench-crypto    Runs benchmarks on all combinations of asuran's supported crypto primitives
    contents        Lists the contents of an archive, with optional glob filters
    extract         Extracts an archive from a repository
    help            Prints this message or the help of the given subcommand(s)
    list            Provides a listing of the archives in a repository
    new             Creates a new repository
    store           Creates a new archive in a repository

Road Ahead

Now that I am confident the core repository API isnt going to be changing much, its time to work on the more exciting features.

First in line is the S3 backend, I have begun working on it in earnest. Following that will likely be the ability to push/pull archives between repositories.

Another important step I will be taking in the near future will be to provide hostname/machineid based caching of the last times files were modified, so that reprocessing of files can be avoided when possible.

Call for Participation

If you are interested in participating, please do!

Take a look at our CONTRIBUTING.md an issue, or join our matrix chat.