Expand create parity support - #2
Merged
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR expands r7z’s “create parity” with p7zip by introducing a new writer implementation and public option types (compression tuning, streaming spool, split volumes, encryption, and symlink metadata), and by extending interop/audit tests to validate the behavior against p7zip.
Changes:
- Replace the old builder/writer implementation with a new
writemodule that supports codecs, header modes, encryption, solid modes, streaming/spooling, and split volumes. - Extend archive reading APIs with seek-backed open modes, metadata limits, and symlink metadata helpers.
- Add/expand tests and benches covering p7zip create-parity, streaming, metadata, encryption, split volumes, and file-backed open behavior.
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/support/mod.rs | Disable clippy pedantic for shared test support. |
| tests/read_parity_test.rs | Disable clippy pedantic for parity tests. |
| tests/p7zip_extract_parity_test.rs | Update tests for new writer/builder options + ArchiveWriter::new(out, options) signature. |
| tests/lzma_perf_test.rs | Disable clippy pedantic for perf test. |
| tests/interop_write_test.rs | Large interop expansion: metadata, header modes, encryption, streaming, split volumes, symlink behavior. |
| tests/interop_test.rs | Disable clippy pedantic for interop tests. |
| tests/file_backed_open_test.rs | New tests for seek-backed open, metadata limits, and bounded extraction behavior. |
| tests/create_parity_audit_test.rs | New p7zip create-parity audit coverage for compression knobs, split volumes, and link behavior. |
| src/write/model.rs | New public option/model types (ArchiveOptions, CompressionOptions, EntryMeta, etc.). |
| src/write/mod.rs | New builder/writer implementation + streaming/spooling/volumes entrypoints. |
| src/write/header.rs | New header encoding (files info + metadata properties). |
| src/write/encode.rs | Archive encoding, option validation, encryption wrapping, LZMA/LZMA2 tuning. |
| src/lib.rs | Public API re-exports updated; new open options + write APIs exposed. |
| src/files_info.rs | Add ctime/atime/start_pos fields + EntryType and symlink classification; refactor property parsing. |
| src/error.rs | Add InvalidOptions and LimitExceeded error variants. |
| src/codec.rs | Add size-aware decompression chain API and AES truncation support. |
| src/builder.rs | Remove legacy builder/writer implementation. |
| src/bin/build_n64.rs | Update docs to reflect new creation approach. |
| src/bcj.rs | Add streaming BCJ writer + tests for streaming vs batch equivalence. |
| src/archive.rs | Add seek-backed storage mode + metadata limits; refactor to ArchiveSource for ranged reads. |
| src/aes.rs | Add AES property encoding + AES-CBC encryption helper; small doc updates. |
| benches/parse_bench.rs | Add benchmarks for seek vs mmap open + extraction; create sparse fixture. |
| README.md | Update docs for new APIs/options, seek-backed open, encryption, volumes, metadata, link semantics. |
| Cargo.toml | Add getrandom dependency for writer/encryption/spooling. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Verification