Releases: foxglove/mcap
Releases · foxglove/mcap
go/mcap/v1.9.0
What's Changed
- Standardized the default writer
Header.libraryidentifier frommcap go vX.Y.Ztomcap-go/X.Y.Z, matching the format used across MCAP SDKs. (#1702)
releases/rust/v0.25.0
Added
Writer::add_schema_with_idandWriter::add_channel_with_idfor writing records with explicit IDs without content de-duplication, so distinct IDs from a source file are preserved even when content is identical (#1632).- Public
mcap::VERSIONandmcap::LIBRARY_IDENTIFIERconstants (#1702). WriteOptions::DEFAULT_CHUNK_SIZEconstant.
Changed
- Default writer
Header.librarystring is nowmcap-rust/<version>(wasmcap-rs-<version>) (#1702). Breaking for anyone asserting on the exact string. - Default chunk size increased to 1 MiB (was 768 KiB), standardizing with the other MCAP libraries (#1659).
- Established a minimum supported Rust version (
rust-version = "1.81") (#1710). - Dependency bumps:
binrw0.12 → 0.15,thiserror1 → 2 (#1705, #1710).
Removed
- Removed unused
McapErrorvariantsAttachmentInProgress,RecordTooShort, andUnexpectedChunkRecord(#1494). Breaking for code matching on these variants.
Fixed
- Corrected typos in several
McapErrormessages (e.g.expeted→expected,mulitple→multiple) — note these are user-visible error string changes (#1492). - Fixed typos and inaccurate references in doc comments, including
ChunkIndex::compressed_data_offsetnow correctly documentingBadChunkStartOffset(#1607, #1516).
releases/mcap-cli/v0.1.0
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.
New features
- Expanded remote reads: added HTTP(S) and Azure Blob Storage, alongside the
existing Amazon S3 and Google Cloud Storage support. Indexed reads (info,
list, single-recordget) use the file index to fetch only the bytes they
need, with no full download. - Self-contained ROS 2
.db3conversion.mcap convertreads the message
definitions embedded in ROS 2 bags (Iron and later) — no sourced workspace or
--ament-prefix-pathrequired. - Reads and sorts files without an index.
mcap catnow reads local files
that have no index by scanning them in file order, andmcap sortnow sorts
unindexed files, instead of refusing them. - Reads from pipes.
cat,filter,compress, anddecompressaccept piped
(non-seekable) stdin, soproducer | mcap filter -o out.mcapworks. - Reads files with missing or incomplete summaries.
info,list, andcat
fall back to scanning the data section when the summary is absent or incomplete
(printing asummary section not available; full scan may be slowwarning to
stderr), and resolve schemas/channels that are defined only inside chunks — the
previous CLI silently reported such files as empty. - Smaller binary: roughly half the size. The Linux amd64 binary is ~13.6 MiB,
down from ~27.0 MiB.
Bug fixes
mcap doctorno longer crashes when examining files with malformed summary
records (a truncated or corrupt ChunkIndex, AttachmentIndex, Schema, Channel,
Message, Metadata, MetadataIndex, or Header record previously caused a
segmentation fault).mcap recoveralways produces a valid, readable output file. Recovery
previously could write internally inconsistent chunk indexes for some inputs.mcap filtertopic-regex filtering behaves correctly.
Previously, when--include-topic-regexmatched no channels (or
--exclude-topic-regexmatched every channel), the resulting empty topic set
was treated as "no filter" and every message was silently passed through. Both
cases now produce an empty result, as expected.- No more crashes or silent data loss on malformed files. On chunk-indexed
files whose summary does not fully list their channels and schemas (disallowed
by the MCAP spec), the previous CLI could segfault and leave a corrupt partial
output (sort), or silently write a file containing none of the input's
messages (compress). The new CLI fails with a clear, actionable error
pointing tomcap recover. - Attachments are no longer silently dropped by
compress,decompress, and
filter. The previous CLI omitted attachments that weren't listed in an
attachment index; they are now preserved and indexed in the output. mcap dutotals now add up to the file size. Each record's reported size
includes its on-disk framing (the 1-byte opcode + 8-byte length prefix), and
attachment records are now included in the table; previously both were omitted,
so the totals undercounted the file. Percentages are computed in double
precision, removing rounding artifacts in the last digits (e.g.66.666667).
Removed
mcap versionsubcommand — usemcap --version, which now reports both the
CLI and library versions (replacingmcap version --library).--configglobal flag (no$HOME/.mcap.yamlconfig file) — the flag was
never actually used; no command ever read a value from the config file.--pprof-profileglobal flag.convert --ament-prefix-path— ROS 2.db3conversion now uses embedded
message definitions.compress --unchunked— compressed output is always chunked by definition.recover --always-decode-chunk— chunks are now always decoded.
Other changes
mcap recoversignals data loss through its exit code:0= full recovery,
3= recovered but lossy/truncated,1= nothing recovered. Previously it exited
0as long as recovery started, even when data was lost. It now defaults to
--compression preserve(waszstd) and always decodes and re-encodes every
chunk to guarantee valid output.mcap convertselects the input type by file extension (.bagfor ROS 1,
.db3for ROS 2) instead of inspecting file contents, so inputs must use a
recognized extension. To convert pre-Iron.db3bags that have no embedded
message definitions, useros2 bag convertfirst.- Writing over the input file is refused by
sortandconvert. Using the
same path for input and output previously truncated the input and lost data. - Invalid
--compressionvalues are now rejected everywhere instead of being
silently accepted. mcap add metadatarejects duplicate--keynames instead of silently
keeping the last value, and now allows=inside values (e.g.-k key=a=b).mcap completion <shell>now also supportselvish(in addition tobash,
zsh,fish, andpowershell), and rejects an unknown shell name with a usage
error instead of printing help.mcap doctorreports every structural problem it finds and writes all
diagnostics to stderr (previously it stopped at the first error and wrote some
warnings to stdout).- Usage/argument errors exit with code
2(the conventional code) and errors
are prefixed withError:on stderr. - CRC/chunk flags renamed:
--include-crc→--no-crcand--chunked→
--no-chunksonconvert,merge, andsort(effective defaults unchanged). - New global flags:
--color {auto,always,never},-v/--verbose
(repeatable), and--allow-remote-scan. - Remote whole-file scans require
--allow-remote-scan. Indexed reads
(info,list, single-recordget) need no flag, but commands that read or
download the whole file (filter,merge,convert,recover, or any
linear-scan fallback) require it. With multiple remote inputs, each is
downloaded independently, so peak temporary disk usage can approach the combined
input size. - Rewritten files record the CLI as the writing library
(Header.library = mcap-cli/<version> mcap-rust/<version>) forcompress,
decompress,filter,sort,recover,merge, andconvert, and no longer
carry forward the source file'slibraryvalue.mcap addleaves the original
header untouched. mcap infonow sorts compression lines, renders wall-clock start/end times
in UTC, and shows absolute RFC3339 timestamps only for recordings dated
2000-01-01 or later (older/relative timestamps render as decimal seconds).
releases/mcap-cli/v0.0.62
What's Changed
- mcap du: close chunkDataReader by @mguida22 in #1534
- mcap du: add --approximate flag for fast results on large files by @mguida22 in #1527
Full Changelog: releases/mcap-cli/v0.0.61...releases/mcap-cli/v0.0.62
releases/cpp/v2.1.3
What's Changed
Full Changelog: releases/cpp/v2.1.2...releases/cpp/v2.1.3
releases/mcap-cli/v0.0.61
Added
filter: Added--last-per-channel-topic-regex. This option includes the last message before the start time for matching topics when filtering on time. This helps produce well-formed MCAPs when some topics are logged very infrequently.
go/mcap/v1.8.0
What's Changed
- Added
Info.CanReadMessagesUsingIndex()to report whether a file can be read through the indexed message iterator. (#1518) - Fixed
Reader.Messages(mcap.UsingIndex(true), mcap.InOrder(mcap.LogTimeOrder))incorrectly failing on MCAP files with no messages. (#1518) - Improved
Reader.Messagesbehavior for unindexed files by returning a clear error when non-file-order reads are requested without an index. (#1456) - Fixed an incorrect error message when parsing chunk indexes. (#1483)
releases/mcap-cli/v0.0.60
Fixed:
- cli: fix support for piping stdin to cat (#1515)
releases/python/mcap/v1.3.1
What's Changed
- python: allow topics specified as string by @james-rms in #1509
releases/python/mcap-ros2-support/v0.5.7
What's Changed
- python: allow topics specified as string by @james-rms in #1509