PackageTrack
Sign in Get early access

binrw

A Rust crate for helping read structs from binary data using ✨macro magic✨

0.15.2 12M downloads/mo #2791 most downloaded on crates.io jam1garner/binrw

What this package is like to depend on

Last release 1 months ago

23 Jul 2026

Ships fairly regularly

a new release about every 4 months

Rarely documented

notes for 6 of 34 stable releases

1 version withdrawn

withdrawn after publishing

6 years old

36 releases · first in 2020

6 releases in the last 12 months

see the full history below

Release timeline

36 releases · Sep 2020 to Jul 2026
2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 36
  1. 0.15.2 23 Jul 2026
    Release notes

    Bug fixes

    • binrw is now future-compatible with pub_use_of_private_extern_crate. (#361. Thanks, @jakobhellermann!)
    Open source →
  2. 0.15.1 04 Mar 2026
    Release notes

    Changes

    • The rarely-used variadic signature for #[binrw::parser] and #[binrw::writer] helper functions now requires a field name (i.e. fn foo(...) must now be fn foo(_: ...) so that the Rust compiler team can do good things. (#342)
    Open source →
  3. 0.15.0 05 May 2025
    Release notes

    Breaking changes

    • The generic parameter lists for binrw::helpers functions have been reordered to put most-frequently-used parameters first.
    • Lifetime parameters have been added to several binrw::helpers functions to support borrowed arguments.
    • The MSRV has been increased to 1.70.
    • Parsing a unit enum with magic will now return an Io(UnexpectedEof) error when all attempts to read magic result in an UnexpectedEof. Previously, this would return NoVariantMatch. (#324, #325. Thanks, @plaflamme!)

    Enhancements

    • PosValue now includes implementations for Default and BinWrite. The BinWrite implementation simply treats PosValue as a wrapper and writes the stored value in place; the pos field is ignored. Use the seek_before and (optionally) restore_position directives if you want to write a PosValue value to a different position in the output stream. (#270, #273. Thanks, @amirbou!)
    • binrw now uses syn 2 internally, which should reduce the build time for most users of binrw when used with other dependencies that have also updated to syn 2. (#285, #299. Thanks, @Urist-McGit!)
    • The amount of code generated has been reduced, improving compilation times. (#319. Thanks, @ScanMountGoat!)
    • Various small documentation improvements. (Thanks, @marxin!)
    • BinWrite::write_ne and BinWrite::write_ne_args convenience functions have been added to match the same functions in the BinRead API.
    • The owo-colors dependency has been updated to version 4.

    Bug fixes

    • Using SeekFrom::End with TakeSeek now correctly seeks relative to the end of the stream if the stream is shorter than the limit. (#291)
    • Using binrw::helpers::count_with to return a Vec<{integer}> using a custom function will no longer ignore the custom function. (#318. Thanks, @kitlith!)
    • It is now possible to pass borrowed values when using binrw::helpers functions.
    • The args directive can now be used when closures are passed to parse_with or write_with.
    • All forwarding calls in the BinReadExt and BinWriteExt traits are now appropriately annotated with #[inline].
    Open source →
  4. 0.14.2 04 Mar 2026

    Nothing published for this version

  5. 0.14.1 13 Oct 2024
    Release notes

    Bug fixes

    • Passing a SeekFrom::End to TakeSeek::seek now correctly seeks from the end of the TakeSeek stream instead of the end of the inner stream. (#291)
    Open source →
  6. 0.14.0 07 Jun 2024
    Release notes

    Breaking changes

    • In derived BinWrite implementations, imported variables are now exposed before field variables, to match the way lexical scoping normally works. If an import and a field have the same name, this will cause the import to be shadowed. Previously, the field would be shadowed.

    Enhancements

    • Diagnostic output is improved when using parse_with and map together in an incompatible way.

    Bug fixes

    • It is now possible to use a mix of generic and concrete types in BinWrite derives without triggering a type mismatch error.
    • It is now possible to use the anonymous lifetime '_ within nested types inside an import directive. (#241)
    • The compiler will no longer panic when verbose-backtrace is enabled and a derived type contains a docblock with a completely empty line. (#263)
    • Generated code will no longer trigger clippy::unnecessary_fallible_conversions lints.
    Open source →
  7. 0.13.4 04 Mar 2026

    Nothing published for this version

  8. 0.13.3 29 Nov 2023
    Release notes

    Bug fixes

    • Using parse_with/write_with, map_stream, and args together will no longer raise an error about incompatible stream types. (#240)
    Open source →
  9. 0.13.2 26 Nov 2023

    Nothing published for this version

  10. 0.13.1 05 Nov 2023

    Nothing published for this version

  11. 0.13.0 27 Oct 2023

    Nothing published for this version

  12. 0.12.1 04 Mar 2026

    Nothing published for this version

  13. 0.12.0 21 Sep 2023

    Nothing published for this version

  14. 0.11.3 04 Mar 2026

    Nothing published for this version

  15. 0.11.2 15 May 2023

    Nothing published for this version

  16. 0.11.1 05 Feb 2023

    Nothing published for this version

  17. 0.11.0 05 Feb 2023

    Nothing published for this version

  18. 0.10.0 17 Sep 2022

    Nothing published for this version

  19. 0.10.0-rc.0 30 Aug 2022 pre-release

    Nothing published for this version

  20. 0.9.2 01 Jul 2022

    Nothing published for this version

  21. 0.9.1 24 Jun 2022

    Nothing published for this version

  22. 0.9.0 24 Jun 2022

    Nothing published for this version

  23. 0.8.4 09 Jan 2022

    Nothing published for this version

  24. 0.8.3 09 Jan 2022

    Nothing published for this version

  25. 0.8.2 09 Jan 2022

    Nothing published for this version

  26. 0.8.0 30 Sep 2021

    Nothing published for this version

  27. 0.7.0 28 Sep 2021

    Nothing published for this version

  28. 0.6.0 25 Aug 2021

    Nothing published for this version

  29. 0.5.1 22 Aug 2021

    Nothing published for this version

  30. 0.5.0 09 Aug 2021

    Nothing published for this version

  31. 0.4.0 02 Jun 2021

    Nothing published for this version

  32. 0.3.1 28 Mar 2021

    Nothing published for this version

  33. 0.3.0 28 Mar 2021 withdrawn

    Nothing published for this version

  34. 0.2.1 24 Mar 2021

    Nothing published for this version

  35. 0.2.0 24 Mar 2021

    Nothing published for this version

  36. 0.1.0 12 Sep 2020

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive