NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3331 most downloaded on crates.io
A library for reading and writing MCAP files
Last release 3 months ago
11 Jun 2026
Release timing varies
gaps range from 2 weeks to 6 months
Rarely documented
notes for 3 of 35 stable releases
2 versions withdrawn
withdrawn after publishing
4 years old
37 releases · first in 2022
One column per quarter.
Writer::add_schema_with_id and Writer::add_channel_with_id for writing records with explicit IDs without content de-duplication, so distinct IDs from
Writer::add_schema_with_id and Writer::add_channel_with_id for writing records with explicit IDs without content de-duplication, so distinct IDs from a source file are preserved even when content is identical (#1632).mcap::VERSION and mcap::LIBRARY_IDENTIFIER constants (#1702).WriteOptions::DEFAULT_CHUNK_SIZE constant.Header.library string is now mcap-rust/<version> (was mcap-rs-<version>) (#1702). Breaking for anyone asserting on the exact string.rust-version = "1.81") (#1710).binrw 0.12 → 0.15, thiserror 1 → 2 (#1705, #1710).McapError variants AttachmentInProgress, RecordTooShort, and UnexpectedChunkRecord (#1494). Breaking for code matching on these variants.McapError messages (e.g. expeted → expected, mulitple → multiple) — note these are user-visible error string changes (#1492).ChunkIndex::compressed_data_offset now correctly documenting BadChunkStartOffset (#1607, #1516).Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
The old --include-metadata / --include-attachments flags are now hidden deprecated no-ops that warn on stderr.
mcap filter is now lossless by default: metadata and attachments are kept unless you pass the new --exclude-metadata / --exclude-attachments flags. The old --include-metadata / --include-attachments flags are now hidden deprecated no-ops that warn on stderr. (#1756)mcap filter --start / --end now apply to messages only; attachments are no longer dropped when their log_time falls outside the window (use --exclude-attachments to drop them). (#1756)mcap filter, mcap compress, and mcap decompress no longer silently re-sort indexed inputs: an out-of-order indexed file was previously re-sorted to log time, but the default is now --order preserve (keep stored message order). Pass --order log_time to restore the previous behavior. (#1762)filter, compress, decompress, sort) now write records in a standardized physical layout (metadata after the header → messages → attachments before Data End), so byte-level output can differ from 0.2.0 even when logical content is unchanged. (#1756, #1757)--order <preserve|log_time|topic> flag on filter, compress, decompress, and sort. preserve keeps stored order, log_time sorts by ascending log time (log-time alias), and topic groups each channel's messages together (channels by topic name then channel ID), placing each channel in its own chunk(s) when chunking is enabled for contiguous single-topic reads. Note that topic always buffers the selected messages in memory, and log_time buffers them when the input has no summary. (#1762, #1754, #1757)mcap filter gains --exclude-metadata and --exclude-attachments to opt out of the new lossless default. (#1756)mcap filter gains --no-chunks (write records outside of chunks). (#1763)mcap filter, compress, and decompress gain --no-crc (disable all output CRC fields), matching convert/merge/sort. (#1763)mcap sort gains an overridable --order flag (defaults to log_time), and its input and output are now optional — it reads from stdin and writes to stdout when omitted. (#1757)--help text across commands (remote URL inputs and --allow-remote-scan, log-time semantics for time filters, corrected cat --json encoding names, attachment retrieval, and in-place add corruption warnings), and hid the deprecated --start-nsecs / --end-nsecs flags from help (they remain accepted). (#1774)mcap cat --json now emits protobuf fields set to their proto3 default value (e.g. 0, "", false, enum zero-variants) instead of omitting them from the output. (#1765)Statistics record disagrees with its chunk message indexes (or a message index can't be parsed); the engine falls back to a linear scan. (#1771)mcap compress --compression invalid values are now rejected at parse time (exit code 2, [possible values: zstd, lz4, none]) instead of failing at runtime. (#1767)These flags were renamed for consistency across the rewrite commands; the old names still work as hidden aliases that print a stderr warning, so existing invocations keep functioning.
mcap filter --output-compression renamed to --compression, matching sort and the other rewrite commands (which already used --compression); --compression wins if both are set. (#1761)mcap sort --output-file renamed to --output (-o is unchanged), matching the other rewrite commands — previously only sort and merge used --output-file. filter, compress, and decompress also accept the deprecated --output-file as a hidden alias for uniformity. (#1757)mcap merge --output-file renamed to --output (-o is unchanged), for the same cross-command consistency. (#1771)mcap list attachments , mcap list metadata , mcap get attachment , and mcap get metadata can read local MCAP files that omit summary/index records by
mcap list attachments, mcap list metadata, mcap get attachment, and mcap get metadata can read local MCAP files that omit summary/index records by scanning when needed. (#1723)mcap merge now guarantees log-time ordered output, using command-line file order and per-file input order as stable tie-breakers for equal timestamps. (#1730)mcap doctor now reports invalid Statistics channel counts that lack prior summary Channel records. (#1722)mcap info now reports numeric counts for files without a Statistics record instead of unknown when the data can be derived. (#1725)mcap doctor now treats spec-legal out-of-order top-level message times as warnings by default, while --strict-message-order still errors. (#1724)mcap --version instead of reporting unknown. (#1727)mcap doctor -v no longer emits the low-value Examining ... progress line on clean diagnostics. (#1731)kB, MB, GB), and throughput labels use /s. (#1733)merge, filter, sort, compress, and decompress; this is benchmark coverage rather than a runtime performance change. (#1732)Nothing published for this version
The mcap CLI has been rewritten in Rust. It is a drop-in replacement for the previous release (v0.0.x) with the same commands, a smaller binary, new r
The mcap CLI has been rewritten in Rust. It is a drop-in replacement for the
previous release (v0.0.x) with the same commands, a smaller binary, new remote
and read capabilities, and a number of other changes described below.
info,list, single-record get) use the file index to fetch only the bytes they.db3 conversion. mcap convert reads the message--ament-prefix-path required.mcap cat now reads local filesmcap sort now sortscat, filter, compress, and decompress accept pipedproducer | mcap filter -o out.mcap works.info, list, and catsummary section not available; full scan may be slow warning tomcap doctor no longer crashes when examining files with malformed summarymcap recover always produces a valid, readable output file. Recoverymcap filter topic-regex filtering behaves correctly.--include-topic-regex matched no channels (or--exclude-topic-regex matched every channel), the resulting empty topic setsort), or silently write a file containing none of the input'scompress). The new CLI fails with a clear, actionable errormcap recover.compress, decompress, andfilter. The previous CLI omitted attachments that weren't listed in anmcap du totals now add up to the file size. Each record's reported size66.666667).mcap version subcommand — use mcap --version, which now reports both themcap version --library).--config global flag (no $HOME/.mcap.yaml config file) — the flag was--pprof-profile global flag.convert --ament-prefix-path — ROS 2 .db3 conversion now uses embeddedcompress --unchunked — compressed output is always chunked by definition.recover --always-decode-chunk — chunks are now always decoded.mcap recover signals data loss through its exit code: 0 = full recovery,3 = recovered but lossy/truncated, 1 = nothing recovered. Previously it exited0 as long as recovery started, even when data was lost. It now defaults to--compression preserve (was zstd) and always decodes and re-encodes everymcap convert selects the input type by file extension (.bag for ROS 1,.db3 for ROS 2) instead of inspecting file contents, so inputs must use a.db3 bags that have no embeddedros2 bag convert first.sort and convert. Using the--compression values are now rejected everywhere instead of beingmcap add metadata rejects duplicate --key names instead of silently= inside values (e.g. -k key=a=b).mcap completion <shell> now also supports elvish (in addition to bash,zsh, fish, and powershell), and rejects an unknown shell name with a usagemcap doctor reports every structural problem it finds and writes all2 (the conventional code) and errorsError: on stderr.--include-crc → --no-crc and --chunked →--no-chunks on convert, merge, and sort (effective defaults unchanged).--color {auto,always,never}, -v/--verbose--allow-remote-scan.--allow-remote-scan. Indexed readsinfo, list, single-record get) need no flag, but commands that read orfilter, merge, convert, recover, or anyHeader.library = mcap-cli/<version> mcap-rust/<version>) for compress,decompress, filter, sort, recover, merge, and convert, and no longerlibrary value. mcap add leaves the originalmcap info now sorts compression lines, renders wall-clock start/end timesYour coding agent can read these notes before it upgrades. Set up the MCP server →