This file summarizes the major and interesting changes for each release. For a
detailed list of changes, please see the git history.
0.14.0 (2026-02-04)
-------------------
### What's new
* Support extracting multiple archives in one call by specifying them via
`-F` or `--file`. ([issue #11](https://github.com/bdrung/3cpio/issues/11))
0.13.1 (2026-01-25)
-------------------
### Fixed
* do not panic when writing `--help`/`--version` to stdout fails
([issue #34](https://github.com/bdrung/3cpio/issues/34))
0.13.0 (2026-01-03)
-------------------
### What's new
* use `pigz` for gzip compression when available
([issue #32](https://github.com/bdrung/3cpio/issues/32))
* build: use LTO and only one codegen unit
([issue #35](https://github.com/bdrung/3cpio/issues/35))
### Fixed
* improve error message for failed `getpwuid_name`/`getgrgid_name`
* retry `getpwuid_r`/`getgrgid_r` on `ERANGE` with larger buffer
* consider `ENOENT` error as user/group not found
0.12.0 (2025-11-11)
-------------------
### What's new
* skip special files (like block devices, character devices, fifos, and sockets)
when extracting to stdout
* improve error message for invalid file type
* support extracting all types of special files (block devices, fifos, and
sockets)
* test: Support running the 3cpio cli tests against the installed 3cpio binary
by setting the environment variable `THREECPIO_BIN`.
### Fixed
* Remove executable permissions from the LICENSE file
([issue #30](https://github.com/bdrung/3cpio/issues/30))
* test: do not hard-code expected mode and gid in block device test
([issue #28](https://github.com/bdrung/3cpio/issues/28))
0.11.0 (2025-08-26)
-------------------
### What's new
* set `--stream-size` on `zstd` compressor command
([issue #15](https://github.com/bdrung/3cpio/issues/15))
* doc: document all public const/functions
* introduce a `Logger` struct and macros and use an enum for log level
* let `--examine` print the size and extracted size
([issue #13](https://github.com/bdrung/3cpio/issues/13))
* Add `--raw` option to `--examine` for the current format and make a
human readable format the default.
0.10.2 (2025-08-13)
-------------------
### Fixed
* skip data alignment for files where `PATH_MAX` is exceeded
0.10.1 (2025-08-13)
-------------------
### Fixed
* flush stdout at the end of each cpio
0.10.0 (2025-08-13)
-------------------
### What's new
* add `--data-align` option to the `--create` mode
0.9.1 (2025-08-11)
------------------
### Fixed
* limit filename length to `PATH_MAX`
* Support running tests without lzop installed
0.9.0 (2025-08-09)
------------------
### What's new
* support extract/list cpio based on globbing patterns
* support `--to-stdout` on extraction
* limit compression level to min/max (instead of ignoring invalid levels)
* support `--parts` on `--extract` and `--list`
([issue #14](https://github.com/bdrung/3cpio/issues/14))
* add `--make-directories` option for `--extract`
* build: enable t64 on 32-bits architectures
### Fixed
* test:
- manifest: allow for EPIPE as a valid compression failure mode
- set current directory only if needed (to avoid race conditions)
0.8.1 (2025-07-31)
------------------
### Fixed
* test:
- use temporary directory for write tests
- canonicalize `/dev/console`
([bug #16](https://github.com/bdrung/3cpio/issues/16))
0.8.0 (2025-07-11)
------------------
### What's new
* Use a write buffer for `--create` for a massive performance improvement
### Fixed
* Check exit status of compressor commands
* test:
- Use `gzip` instead of `true` which might be a symlink
- Skip `test_file_from_line_location_*` if required file is missing
0.7.0 (2025-07-10)
------------------
### What's new
* Add support for creating cpio archives from a manifest file
([feature #3](https://github.com/bdrung/3cpio/issues/3))
* Print inode on `--list --debug`
0.6.0 (2025-06-30)
------------------
### What's new
* doc: add 3cpio man page
### Fixed
* Fix "No such file or directory" error when using `--subdir`
* test: fix race condition in tests by using a lock
0.5.1 (2025-04-11)
------------------
### Fixed
* Fix directory traversal vulnerability: Prevent extracting CPIOs outside of the
destination directory to prevent directory traversal attacks. This new
behaviour is similar to `cpio --no-absolute-filenames`.
0.5.0 (2025-03-30)
------------------
### What's new
* add `--count` parameter
0.4.0 (2025-03-11)
------------------
### What's new
* add support for extracting character devices
### Fixed
* print major/minor of character devices in long format
0.3.2 (2024-08-19)
------------------
### What's new
* Support lzma compression ([bug #8](https://github.com/bdrung/3cpio/issues/8))
### Fixed
* Avoid `timespec` struct literal
([LP: #2076903](https://launchpad.net/bugs/2076903))
* Include missing helper program name in error message
([bug #4](https://github.com/bdrung/3cpio/issues/4))
0.3.1 (2024-08-06)
------------------
### What's new
* Various changes to speed up `3cpio --list --verbose` to make 3cpio faster
than bsdcpio in all benchmarks.
0.3.0 (2024-08-03)
------------------
### What's new
* support preserving the owner/group of symlinks
* Add `--verbose` mode to `--list` mode. The output will be similar to
`cpio --list --verbose` and `ls -l`.
### Fixed
* 3cpio: fix setting the directory/file permissions
([bug #5](https://github.com/bdrung/3cpio/issues/5))
0.2.0 (2024-07-05)
------------------
### What's new
* Add support for extracting (`--extract`) cpio archives. New parameters are
`--directory`, `--preserve-permissions`, and `--subdir`.
* Add `--verbose` and `--debug` log levels
### Changed
* Replace command line argument parser `gumdrop` by `lexopt`, because the
latter has no dependencies.
* Drop `assert_cmd` and `predicates` dev dependencies.
### Fixed
* 3cpio: fix binary name in `--version` output
0.1.0 (2024-04-18)
------------------
Initial release. 3cpio only supports examining (`--examine`) and listing
(`--list`) the content of the initramfs cpio.