Version history for ZArchiveSharp and the zar CLI. Package versions derive
from v-prefixed git tags via MinVer; since v1.2.2 every project in the
solution (library, CLI, tests, benchmarks) releases together. The detailed
notes for the current release live in
WhatsNew.md.
License: ZArchiveSharp is distributed under the MIT License. Third-party notices: THIRD-PARTY-NOTICES.md.
Highlights
ZarPipeline and the engine
behind it (ZarPackEngine, ProcessRunner, SevenZip,
ProcessableFiles, ZarSettings, the stage/progress model and the CLI
batch orchestration) are now an independent implementation. The public
surface is unchanged — same types, members, progress semantics, collision
policies and exit codes — but the repository no longer contains code
derived from non-MIT sources. All of ZArchiveSharp is MIT.Failed ZarItemResult instead of throwing
AggregateException out of PackBatch/ExtractBatch.v* tags. MinVer now
sees full history, the library suite runs on each target runtime
(net8.0/net9.0/net10.0), and the CLI harnesses fold POSIX exit
statuses and run cross-platform.Upgrade notes
PackageLicenseExpression=MIT;
LICENSE and THIRD-PARTY-NOTICES.md stay in the packages.Full notes: WhatsNew.md.
Highlights
RootNode, TryGetDirEntry), canonical names (TryGetNodeName),
seekable per-entry streams (OpenRead/TryOpenRead), and archive stats
(EntryCount, TotalUncompressedSize) for virtual file systems and other
random-access hosts.ZArchiveOpenFailure plus out
overloads for path/stream/byte-array opens report BadMagic,
UnsupportedVersion, LengthMismatch, SectionOutOfRange,
BadOffsetRecords, BadNameTable, BadFileTree, TooSmall,
InvalidStream, FileNotFound, AccessDenied, ReadError and
InvalidPath instead of a bare null.ZArchiveReaderOptions adds CacheBlockCount
(default 64 × 64 KiB), opt-in corrected extended-name decoding
(DecodeExtendedNames), and FileShare for path opens.ReadFromFile decompresses distinct 64 KiB
blocks outside the global lock (cache bookkeeping and copies stay locked),
so concurrent reads scale; the preallocated LRU buffers are preserved.InvalidPath;
TotalUncompressedSize saturates instead of wrapping.Upgrade notes
InvalidPath for
bad paths, clamped enumeration counts, loud extraction failure on crafted
child ranges, and a saturating archive size.Highlights
--version print ZArchiveSharp from the standalone bundles and zar
from the global tool (falling back to zar for
dotnet ZArchiveSharp.Cli.dll). The substitution is token-aware, so the
.zar extension and zstd are unaffected.ApplicationIcon) and Company =
PureLogicCode.com; Unix bundles are unaffected.Directory.Build.props, so the library, CLI, tests, battle tests and
benchmarks all stamp 1.2.2.release_1.2.2_<rid>.zip): single-file, framework-dependent (no .NET
runtime embedded; .NET 10 runtime required), with the
ZArchiveSharp.Cli.runtimeconfig.json sidecar, README, LICENSE and
THIRD-PARTY-NOTICES, and executable bits set on Unix.Upgrade notes
Highlights
<license type="file">LICENSE</license> and
include the notices file.Upgrade notes
Highlights
--no-telemetry or
ZAR_BUG_REPORT=off; --help/--version never send. Telemetry flush is
bounded (<1 s) and never delays exit.-1; -- ends option parsing
everywhere (including inside zar zstd/zar seekable); value options no
longer swallow the next flag while dashed values remain usable; -c
before or after zstd means compress. Batch runs report -11 when the
only failures are collision refusals and -13 for missing 7z/unreadable
batch input.SeekableReader
range errors are clean -12 failures (not crashes); process-runner
stderr/kill handling hardened; delete-source runs only after the terminal
.zar succeeds.ZstdDecoderOptions.MaxTotalOutputSize (1 GiB default),
ZarPackEngine.MoveIntoPlace, ZarPackEngine.OutputExistsMessage,
ZarPackEngine.MaxExtractDepth; ZarPackEngine.PackEntries returns the
written path and takes a collision policy; PauseTokenSource is
IDisposable.Upgrade notes
SeekableReader.DecompressRange/DecompressFrames now throw
ArgumentOutOfRangeException for range errors (was ZstdException).ZArchiveReader.TryOpen(Stream) disposes the stream when the open fails
(with leaveOpen: false, the default).--help/--version launches.Full notes: WhatsNew.md.
Highlights
ZarPipelineOptions.MaxDegreeOfParallelism fans 64 KiB block
compression/decompression across workers, byte-identical to sequential
output. Direct ZArchiveWriter use stays sequential unless a
compressorFactory is supplied.input [output];
-o occupies the output slot; --iso takes the output positionally or via
-o, never both; extras fail with -1/Too many paths specified.ZArchiveSharp.CliBattleTests) locks exit
codes, stdout, and cross-interop against the reference zarchive.exe
when it is present.1.0.2), single-file bundle named
ZArchiveSharp.exe.Pre-release-notes versions established the ZArchive 0.1.2 container port,
the full RFC 8878 zstd codec (levels 1–22, all 9 strategies), the seekable
zstd format, the pipeline engine, and the initial zar CLI. See the git tags
(v1.0.0, v1.0.1, v1.0.2) for the corresponding sources.