A modern archive format for Unix, implemented in Rust
Go to file
Nathan Fisher 2c0fcc47a0 Add detection for zstd compression. Reader must implement Read + Seek 2024-01-23 00:07:03 -05:00
src Add detection for zstd compression. Reader must implement Read + Seek 2024-01-23 00:07:03 -05:00
test Add detection for zstd compression. Reader must implement Read + Seek 2024-01-23 00:07:03 -05:00
.gitignore Add detection for zstd compression. Reader must implement Read + Seek 2024-01-23 00:07:03 -05:00
Cargo.lock Fix Clippy lints and improve documentation 2024-01-17 01:58:36 -05:00
Cargo.toml Fix Clippy lints and improve documentation 2024-01-17 01:58:36 -05:00
Format.md Partial port to new spec revision (won't compile yet); 2023-07-15 11:36:21 -04:00
LICENSE.md Add BSD license 2023-07-04 01:30:11 -04:00
README.md Add detection for zstd compression. Reader must implement Read + Seek 2024-01-23 00:07:03 -05:00

README.md

A modern archive format for serializing files, like Tar or Zip

Contents

Features

For a more full specification of the format, please see Format.md

  • No padding between metadata fields or data segments so it only stores the data required to recreate the original file
  • Optional inline checksumming using a choice of md5, sha1 or sha256 algorithms to ensure data integrity
  • Easily parallelized library code
  • Uses generic Read and Write interfaces from Rust std to support reading archive nodes from anything that can supply a stream of data

Building

The minimum supported Rust version (MSRV) for this project is currently Rust 1.65. The crate can be added to your project by adding it to your Cargo.toml file. Until the api is more mature you will have to use the crate from it's git repository rather than from the crates.io package registry.

[dependencies.haggis]
git = "https://codeberg.org/jeang3nie/haggis.git"

Contributing

Contributions are always welcome. Please run cargo fmt and cargo clippy and fix any issues before sending pull requests on Codeberg or patches via git send-email.

In addition to contributing to the Rust implementation here, it would be welcome to see Haggis implemented in other languages.

Roadmap

  • Create and extract archives
  • List archive nodes
  • Override user/group when creating archives
  • Override user/group when extracting archives
  • Automatically detect zstd compressed archives