---
title: "onearchive docs"
url: https://recursiveai.org/onearchive/docs/
description: "Everything about OneArchive and OneCompress: getting started, the archive layer and its safety defaults, each container, each codec, checksums, and how…"
version: "0.7.0-preview.1"
---

# onearchive docs

Everything about OneArchive and OneCompress: getting started, the archive layer and its safety defaults, each container, each codec, checksums, and how they are measured. Both packages are previews: 0.7.0-preview.1.

## Start

- [Getting started](https://recursiveai.org/onearchive/docs/getting-started/index.md): Install the OneArchive and OneCompress previews for .NET 10, compress a buffer with Zstandard, then create, list, read and safely extract a .tar.zst…
- [Overview](https://recursiveai.org/onearchive/docs/overview/index.md): Compression codecs and archive formats for .NET, written from first principles in managed code. No native dependencies; the compressed bytes are identical…
- [Archives and safety](https://recursiveai.org/onearchive/docs/archive/index.md): How OneArchive models an archive, what extraction refuses by default, and what the tar reader and writer do. This is normative: a port must reproduce the…
- [Codecs for a small binary](https://recursiveai.org/onearchive/docs/archive-codecs/index.md): Archive and the per-format readers and writers reach codecs only through a registry. By default nothing needs configuring: the first time an archive needs…
- [Codec conventions](https://recursiveai.org/onearchive/docs/conventions/index.md): How every OneCompress codec is shaped, so the codecs look alike and a port can follow them. The Zstandard decoder (src/OneCompress/Zstd/) is the reference…

## Containers

- [Zip encryption](https://recursiveai.org/onearchive/docs/zip-encryption/index.md): WinZip AES (AE-1 and AE-2) is read and written; traditional PKWARE encryption is read only. PKWARE's strong encryption (bit 6) and central-directory…
- [7z reader](https://recursiveai.org/onearchive/docs/7z-reader/index.md): How SevenZipReader (src/OneArchive/SevenZip/) reads 7z archives and the choices the format document leaves open. Sources: 7zFormat.txt (header structures)…
- [7z writer](https://recursiveai.org/onearchive/docs/7z-writer/index.md): How SevenZipWriter (src/OneArchive/SevenZip/) writes 7z archives and the choices the format document leaves open. Sources: 7zFormat.txt (structures) and…
- [7z AES-256](https://recursiveai.org/onearchive/docs/7z-aes-derivation/index.md): 7zFormat.txt and Methods.txt give the method ID and say nothing about its properties, key derivation or padding. Those were pinned by experiment against…
- [cpio and ar](https://recursiveai.org/onearchive/docs/cpio-ar/index.md): Normative notes for the Cpio and Ar containers in RecursiveAI.OneArchive: what is read, what is written, and every choice the formats leave open. A port…
- [ISO 9660](https://recursiveai.org/onearchive/docs/iso/index.md): Normative notes for RecursiveAI.OneArchive.Iso. Clause numbers refer to ECMA-119; SUSP is IEEE P1281 and RRIP is IEEE P1282.
- [Compound files](https://recursiveai.org/onearchive/docs/cfb/index.md): Normative notes for CompoundFileReader and CompoundFileWriter in RecursiveAI.OneArchive.Cfb. Source: [MS-CFB] Compound File Binary File Format, revision…
- [Cabinet reader](https://recursiveai.org/onearchive/docs/cab-reader/index.md): Normative notes for CabReader in RecursiveAI.OneArchive.Cab: read only. Source: Microsoft's [MS-CAB] (Cabinet File Format) 2.1 to 2.4 and 3.1; LZX is in…
- [RAR 5 reader](https://recursiveai.org/onearchive/docs/rar-reader/index.md): Normative notes for RarReader in RecursiveAI.OneArchive.Rar: read only. Source: RARLAB's "RAR 5.0 archive format" technote (section names are cited in the…

## Zstandard

- [Zstandard encoder](https://recursiveai.org/onearchive/docs/zstd-encoder/index.md): What the encoder does where the format leaves a choice. Compressed bytes depend only on the input and the options, so a later port that follows this text…
- [Zstandard decoder](https://recursiveai.org/onearchive/docs/zstd-decoder/index.md): Normative notes for RecursiveAI.OneCompress.Zstd's decoder. The format itself is RFC 8878; this page records what the format leaves to the decoder and the…
- [Dictionary training](https://recursiveai.org/onearchive/docs/zstd-dictionary-training/index.md): ZstdDictionary.Train(samples, options) turns a set of sample payloads into a dictionary in the Zstandard dictionary format (RFC 8878 §5). The pieces are…
- [Seekable format](https://recursiveai.org/onearchive/docs/zstd-seekable/index.md): Reading and writing seekable Zstandard files: ordinary frames, each compressed on its own, followed by one skippable frame (the seek table) that maps…
- [Streams of tiny messages](https://recursiveai.org/onearchive/docs/message-mode/index.md): For a connection that carries many messages of tens to a few hundred bytes, there are two ways to compress them. Both keep the encoder and its buffers for…

## Other codecs

- [LZ4 encoder](https://recursiveai.org/onearchive/docs/lz4-encoder/index.md): How the LZ4 compressors in RecursiveAI.OneCompress.Lz4 choose and write bytes. A later port reproduces the same output from this page and the format…
- [LZ4 decoder](https://recursiveai.org/onearchive/docs/lz4-decoder/index.md): What the LZ4 decoder accepts, rejects and bounds. The format sources are the LZ4 Block Format and Frame Format documents (lz4_Block_format.md…
- [Deflate encoder](https://recursiveai.org/onearchive/docs/deflate-encoder/index.md): Normative and language-neutral: a port that follows this text produces the same bytes. RFC 1951 leaves the parse, the block boundaries and the Huffman…
- [Deflate decoder](https://recursiveai.org/onearchive/docs/deflate-decoder/index.md): What the decoder accepts, rejects and bounds. The format sources are RFC 1951 (Deflate), RFC 1950 (zlib) and RFC 1952 (gzip); section names below refer to…
- [Deflate64 encoder](https://recursiveai.org/onearchive/docs/deflate64-encoder/index.md): Normative notes for Deflate64Encoder: what a later port must do to reproduce the same bytes. The symbols and limits are in deflate64-derivation.md.
- [Deflate64 decoder](https://recursiveai.org/onearchive/docs/deflate64-decoder/index.md): Normative notes for Deflate64Decoder. The format facts (symbols, extra bits, window, header limits) are in deflate64-derivation.md, with the experiment…
- [Deflate64 derivation](https://recursiveai.org/onearchive/docs/deflate64-derivation/index.md): Deflate64 (zip method 9) has no specification we may implement from. This note records, for every difference from Deflate (RFC 1951), the hypothesis…
- [LZMA and xz encoders](https://recursiveai.org/onearchive/docs/lzma-encoder/index.md): Normative and language-neutral: a port that follows this text produces the same bytes. The LZMA specification, the xz file format specification and the…
- [LZMA and xz decoders](https://recursiveai.org/onearchive/docs/lzma-decoder/index.md): RecursiveAI.OneCompress.Lzma, .Xz, .Lzip and .Filters. The formats are specified by the LZMA specification document (lzma-specification.txt), the xz file…
- [bzip2 encoder](https://recursiveai.org/onearchive/docs/bzip2-encoder/index.md): RecursiveAI.OneCompress.BZip2: compression to bzip2 streams. The format is described in bzip2-decoder.md; every choice the format leaves to the writer…
- [bzip2 decoder](https://recursiveai.org/onearchive/docs/bzip2-decoder/index.md): RecursiveAI.OneCompress.BZip2: decoding of bzip2 data. bzip2 has no official specification. This document records the format as the decoder reads it, how…
- [bzip2 encoder derivation](https://recursiveai.org/onearchive/docs/bzip2-encoder-derivation/index.md): bzip2 has no official specification, and the decoder note (bzip2-decoder.md) already records what a reader must accept. This note covers the other half…
- [Brotli encoder](https://recursiveai.org/onearchive/docs/brotli-encoder/index.md): Normative and language-neutral: a port that follows this text produces the same bytes. RFC 7932 fixes what a brotli stream means and leaves the parse, the…
- [Brotli decoder](https://recursiveai.org/onearchive/docs/brotli-decoder/index.md): RecursiveAI.OneCompress.Brotli: decoding of brotli data as RFC 7932 defines it. This document records the choices the RFC leaves to the implementation.…
- [PPMd](https://recursiveai.org/onearchive/docs/ppmd/index.md): Two codecs from Dmitry Shkarin's PPMd family, byte-identical to what 7-Zip writes and reads:
- [LZX decoder](https://recursiveai.org/onearchive/docs/lzx-decoder/index.md): Normative notes for RecursiveAI.OneCompress.Lzx: LZX as cabinet folders store it, decode only. A port should decode the same streams from this text. No…
- [Checksums](https://recursiveai.org/onearchive/docs/checksums/index.md): Normative description of the checksums in RecursiveAI.OneCompress.Checksums. A port must reproduce every value from this text alone.

## How it is measured

- [Benchmark method](https://recursiveai.org/onearchive/docs/bench-method/index.md): Normative description of how the bar is measured. It is language-neutral: another implementation of the runner must produce comparable numbers by…
- [Small payloads](https://recursiveai.org/onearchive/docs/small-payload-bench/index.md): How the per-message path is measured: payloads of a few hundred bytes to a few KiB, each compressed or decompressed on its own with a trained dictionary…
- [Zstandard decoder speed](https://recursiveai.org/onearchive/docs/zstd-decoder-bench/index.md): Method: memory to memory, warm, best pass over 4 s, one thread. The reference is zstd -b -e -i4 (decompression MB/s) on the same file. Frames come from…
- [Hash matrix](https://recursiveai.org/onearchive/docs/hash-matrix/index.md): The compressed bytes of every codec depend only on the input and the options. The hash matrix checks that: it runs the same list of entries in every…

## Reference

- [Changelog](https://recursiveai.org/onearchive/docs/changelog/index.md): All notable changes are listed here. The format follows Keep a Changelog and versions follow Semantic Versioning.

## Cookbook

- [All recipes](https://recursiveai.org/onearchive/cookbook/index.md): 5 short, task-first recipes with complete code.
