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.
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 0.1.0-6405ca0 2020-04-23 Nathan McCarty <firstname.lastname@example.org> 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
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.