Features of this crate:
- A
no_std + allocoptimized reimplementation of the streaming infrastructure ofstd::io. - Custom
ReadandWritetraits that support user defined error types.
- Fully
no_std + alloccompatible. - A usable streaming frontend API for the
miniz_oxidecrate. - Supports concatenated gzip, zlib and raw deflate streams.
- Supports auto detection of gzip, zlib, raw deflate, uncompressed streams.
- Fully
no_std + alloccompatible. - A streaming implementation that implements the
Writetrait. - Supports all common tar formats:
ustar,v7,pax, andgnu. - It is very forgiving and strives to limit panics and resource exhaustion attacks.
- Most commonly used metadata is preserved.
- Creates tarballs using the
paxformat. - Writing the gnu sparse
1.0format is also supported.
- Add
stdfeature to enablestd::iocompatibility. - Add more impls for Rc Arc and Mutex for std feature for Read and Write traits.
- Add parking lot feature to enable more impls for Read and Write traits.
- After maturing enough move
no_std_ioto its own crate. - Add feature to opt in to time dependency.
- Fix clippy lints
- Add
allocfeature - Add doc comments with examples to all public functions and structs.
- Add audit log to tar parser to track spec violations
- Write a tar fuzzer
- Proper pipe https://doc.rust-lang.org/std/io/fn.pipe.html
- Add chain read extension and ChainedReader (impl buffered reader if both readers are buffered readers)
[copy_to]or[copy_from]or[copy_buffered](picks the bigger buffer)- Add lines, split extension to readbuffered
- Add std::io take extension trait that creates ReaderLimited and WriterLimited
- Add seek trait https://doc.rust-lang.org/std/io/trait.Seek.html and implement it
- Cursor: Read + Seek + BufRead + Write (has inner_buffer and pos) https://doc.rust-lang.org/std/io/struct.Cursor.html replaces writer_buffer
- Add
emscriptenfeature to enableno_std_iocompatibility.
- Make tar creator, extractor, gz compressor, gz decompressor into Read/Write.
- gen tar
- gnu
sparsefiles - Cleanup the pax parser and how it uses the cursor. to do that add write_until and read_until
- https://www.gnu.org/software/tar/manual/html_section/Dumpdir.html#Dumpdir
- Configure limits for all growable buffers in the tar parser.
- Add inode writer trait
- Add filesystem trait and filesystem agnostic file api. (Default ship a memory based implementation serialize to tar_gz and extract from tar_gz.)