PackageTrack
Sign in Get early access

bitvec

Addresses memory by bits, for packed collections and bitfields

1.1.1 261M downloads/mo #402 most downloaded on crates.io bitvecto-rs/bitvec

What this package is like to depend on

Last release 2 months ago

18 Jun 2026

Ships unpredictably

gaps range from 1 weeks to 3.9 years

Rarely documented

notes for 2 of 27 stable releases

33 versions withdrawn

withdrawn after publishing

8 years old

61 releases · first in 2018

1 release in the last 12 months

see the full history below

Release timeline

61 releases · Jun 2018 to Jun 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 61
  1. 1.1.1 18 Jun 2026

    Nothing published for this version

  2. 1.0.1 10 Jul 2022
    Release notes

    Notes

    Performance regressions have been reported between the development series 0.20 onwards and 1.0. It appears at least some of these regressions are due to the removal of the #[inline] attribute on bitvec public functions.

    This attribute has been applied to all bitvec functions. You may see regressions in size of your final artifact, but you should also see improvements in your runtime speed. This is being tracked in [sharksforarms/deku#246].

    Changes

    • The bits![static mut …] invocation has been made unsafe at the invocation site, in response to [Issue #156] filed by GitHub user [@SimonSapin].

      This is technically an API break (formerly safe code now requires an unsafe block) but as no run-time behavior or compile-time types have changed except for this, and Rust considers breaking incorrect code to be acceptable within SemVer patches, I am publishing it as a patch.

    • GitHub user [@dtolnay] fixed incorrect serde behaviors in [Pull Request #185]. This behavior was first reported in [Issue #167] by GitHub user [@Nelarius].

    • Compilation no longer depends on environment variables set by Cargo, as requested in [Pull Request #162] by GitHub user [@rocallahan].

    • The bitvec![val; len] macro can again take len as a runtime value as well as a compile-time constant. [Pull Request #160] was provided by GitHub user [@coolreader18].

    • The return types of slice::Iter::by_{refs,vals} are restored to named types, rather than impl Iterator... opaque types. This allows them to be used directly in other sites. This defect was reported in [Issue #169] by GitHub user [@dignifiedquire].

    Open source →
  3. 1.0.0 11 Jan 2022
    Release notes

    🚨 THIS IS A BREAKING CHANGE RELEASE! 🚨

    Your code has broken. You will need to change it in order to use this. This work on your part is worth it.

    This release has a great deal of changes from the 0.22 development series! Most breaking changes should have reasonable error messages indicating how they can be repaired.

    Removed APIs do not have deprecation notices! Use of removed APIs will fail to compile. You must check this changelog, or the crate documentation, to find out appropriate replacements.

    Type Parameter Reördering

    The <O, T> type parameter pair that has existed since 0.10 is reversed to be <T, O>! This will cause all of your type definitions to fail, as suddenly all of your chosen type arguments do not satisfy the demanded traits.

    This change was made in accordance with [Issue #136], requested by GitHub user [@changhe3].

    Additional Changes

    • The MSRV is raised to 1.56.
    • BitField now supports signed integers! BitMemory is completely removed.
    • BitSlice::from_slice{,_mut} are now infallible constructors, and panic when the source is too long. The original fallible behavior is renamed to BitSlice::try_from_slice{,_mut}.
    • the {Bit,}DomainMut types have been removed. The {Bit,}Domain types now take a Mutability type parameter instead. The .{bit_,}domain{,_mut}() methods on BitSlice exist as normal, but have changed their return types to specify a Const or Mut type parameter rather than {Bit,}Domain or {Bit,}DomainMut, respectively.
    • Iter::by_{ref,val} are renamed to by_{ref,val}s, to prevent collision with Iterator::by_ref.
    • The long-standing behavior of the &=, |=, and ^= operators has been changed! They now operate directly on data structures, rather than routing through iterators. If you want to perform boolean arithmetic using arbitrary bool streams, use iterator combinators like .iter_mut().zip(stream).for_each(|(mut orig, new)| *orig ^= new). This change allows the arithmetic implementations to be accelerated when working between bit-slices of equal types.
    • BitSlice::set_all is removed, as the standard-library API [T]::fill replaces it.
    • BitSlice::offset_from is removed. Use .as_bitptr().offset_from().
    • BitSlice::as_raw_slice is removed. Use .domain() to access the underlying memory.

    Documentation

    Module and type documentation have been lifted into the doc/ tree as Markdown files. The [user guide], in book/ has been more thoroughly rewritten.

    Please file any problems or confusions about the documentation as an issue! The documentation is a project artifact equally, if not more, important as the Rust library.

    Dependency Raises

    As part of the migration of incidental logic out of bitvec, the following utility libraries have been updated:

    • funty 2.0 provides a more comprehensive coverage of the language primitives.
    • wyz 0.5 contains more logic formerly in the utility module, as well as a stronger system for generalizing over references.

    Version 0 (Prototyping)

    bitvec’s first three and a half years of development used the zero-dot series as it explored its behavior. These versions are now deprecated and will not receive further support. They are listed only in summary, and may be removed from crates.io in the future.

    Open source →
  4. 1.0.0-rc2 05 Jan 2022 pre-release

    Nothing published for this version

  5. 1.0.0-rc1 01 Dec 2021 pre-release withdrawn

    Nothing published for this version

  6. 0.22.3 18 Apr 2021

    Nothing published for this version

  7. 0.22.2 18 Apr 2021 withdrawn

    Nothing published for this version

  8. 0.22.1 01 Apr 2021

    Nothing published for this version

  9. 0.22.0 29 Mar 2021

    Nothing published for this version

  10. 0.21.2 01 Apr 2021

    Nothing published for this version

  11. 0.21.1 04 Mar 2021

    Nothing published for this version

  12. 0.21.0 14 Feb 2021

    Nothing published for this version

  13. 0.20.4 23 Apr 2021

    Nothing published for this version

  14. 0.20.3 23 Apr 2021

    Nothing published for this version

  15. 0.20.2 04 Mar 2021

    Nothing published for this version

  16. 0.20.1 24 Dec 2020

    Nothing published for this version

  17. 0.20.0 22 Dec 2020

    Nothing published for this version

  18. 0.19.6 21 Nov 2021

    Nothing published for this version

  19. 0.19.5 04 Mar 2021

    Nothing published for this version

  20. 0.19.4 26 Oct 2020

    Nothing published for this version

  21. 0.19.3 02 Oct 2020

    Nothing published for this version

  22. 0.19.2 25 Sep 2020

    Nothing published for this version

  23. 0.19.1 19 Sep 2020

    Nothing published for this version

  24. 0.19.0 10 Sep 2020

    Nothing published for this version

  25. 0.18.5 04 Mar 2021

    Nothing published for this version

  26. 0.18.4 19 Sep 2020

    Nothing published for this version

  27. 0.18.3 09 Sep 2020

    Nothing published for this version

  28. 0.18.1 01 Sep 2020

    Nothing published for this version

  29. 0.18.0 01 Sep 2020

    Nothing published for this version

  30. 0.17.4 27 Mar 2020

    Nothing published for this version

  31. 0.17.3 05 Mar 2020 withdrawn

    Nothing published for this version

  32. 0.17.2 23 Jan 2020 withdrawn

    Nothing published for this version

  33. 0.17.1 13 Jan 2020 withdrawn

    Nothing published for this version

  34. 0.17.0 11 Jan 2020 withdrawn

    Nothing published for this version

  35. 0.16.2 07 Jan 2020 withdrawn

    Nothing published for this version

  36. 0.16.1 04 Dec 2019 withdrawn

    Nothing published for this version

  37. 0.16.0 25 Nov 2019 withdrawn

    Nothing published for this version

  38. 0.15.2 16 Sep 2019 withdrawn

    Nothing published for this version

  39. 0.15.1 24 Aug 2019 withdrawn

    Nothing published for this version

  40. 0.15.0 22 Aug 2019 withdrawn

    Nothing published for this version

  41. 0.14.0 21 Jun 2019 withdrawn

    Nothing published for this version

  42. 0.13.0 07 Jun 2019 withdrawn

    Nothing published for this version

  43. 0.12.0 07 Jun 2019 withdrawn

    Nothing published for this version

  44. 0.11.3 08 Jun 2019 withdrawn

    Nothing published for this version

  45. 0.11.2 07 Jun 2019 withdrawn

    Nothing published for this version

  46. 0.11.1 13 May 2019 withdrawn

    Nothing published for this version

  47. 0.11.0 11 May 2019 withdrawn

    Nothing published for this version

  48. 0.10.2 28 Apr 2019 withdrawn

    Nothing published for this version

  49. 0.10.1 12 Apr 2019 withdrawn

    Nothing published for this version

  50. 0.10.0 07 Mar 2019 withdrawn

    Nothing published for this version

  51. 0.9.0 11 Dec 2018 withdrawn

    Nothing published for this version

  52. 0.9.0-e2018 11 Dec 2018 pre-release withdrawn

    Nothing published for this version

  53. 0.8.0 25 Nov 2018 withdrawn

    Nothing published for this version

  54. 0.8.0-e2018 25 Nov 2018 pre-release withdrawn

    Nothing published for this version

  55. 0.6.0 24 Oct 2018 withdrawn

    Nothing published for this version

  56. 0.6.0-e2018 24 Oct 2018 pre-release withdrawn

    Nothing published for this version

  57. 0.5.0 07 Jul 2018 withdrawn

    Nothing published for this version

  58. 0.4.0 04 Jul 2018 withdrawn

    Nothing published for this version

  59. 0.3.0 04 Jul 2018 withdrawn

    Nothing published for this version

  60. 0.2.0 28 Jun 2018 withdrawn

    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