Skip to content

Releases: userepo/MissionPlanner

dflog 0.7.1 — Rust dataflash log core (CLI + Python wheels)

Choose a tag to compare

@userepo userepo released this 30 Aug 19:24

Rust rewrite of Mission Planner's ArduPilot dataflash (.bin) log parsing
(source in rust/ on the rust/dflog-core branch). Byte-for-byte parity with
the C# parser where it matters, and substantially faster where it counts.

Artifacts

  • dflog-cli-0.7.1-win_x64.zip — standalone Windows x64 CLI, no install
    needed: info (summary), dump (numeric columns as CSV), convert (text
    conversion, byte-identical to Mission Planner's bin-to-log output), and
    parquet (one Parquet file per message type, with optional
    --split-instances for per-sensor files like IMU_0.parquet).
  • dflog-0.7.1-linux_x64.tar.gz — Linux x86_64 CLI plus libdflog_ffi.so
    (the C ABI shared library the CLI and wheels are built on, ABI v5).
    Requires glibc 2.34+ (Ubuntu 22.04+, Debian 12+, RHEL 9+); the only
    shared-library dependencies are libc, libm and libgcc_s.
  • dflog-0.7.1-cp39-abi3-win_amd64.whl — Python package, Windows x64.
  • dflog-0.7.1-cp39-abi3-manylinux_2_34_x86_64.whl — Python package,
    Linux x86_64.

One wheel per platform covers every CPython from 3.9 up (abi3), with numpy as
the only dependency: columnar reads to numpy arrays, message iteration,
units/multiplier metadata, GPS time base, and per-instance filtering
(columns(..., instance=0)). Both wheels are validated against the same test
suite on Python 3.12 and 3.14.

Highlights

  • Columnar extraction ~30x faster than pymavlink's DFReader end to end
    (248 MiB / 6.37M-record log: 3.99 s → 0.13 s for ATT columns); full
    iteration ~5x, open ~18x. Values bit-identical, counts identical.
  • convert output verified byte-identical to BinaryLog.ConvertBin over a
    multi-vehicle corpus and a 260 MiB log, including the legacy float-rounding
    quirks.
  • Corrupt/truncated logs parse exactly the way Mission Planner parses them
    (resync behavior, silent skip of undecodable records), pinned by a golden
    characterization suite and coverage-guided fuzzing (multi-hour soaks on the
    scan/convert/columns/access surfaces, zero findings).
  • The same core ships inside this fork as dflog_ffi.dll, used by LogBrowse,
    MagCalib and the FFT views when "Fast native log parsing" is enabled.

macOS builds not provided yet. GPLv3, as part of the Mission Planner fork.