Skip to content
Scott Griffiths edited this page May 21, 2025 · 12 revisions

Roadmap

All dates and features are very subject to change!

Minimal Viable Product

Version 0.1 - Now done 🎉 in September 2024

  • New immutable Bits class.
  • Dtype class.
  • Array class. Mutable, but with proxy to underlying Bits.
  • Field, Format classes.
  • float, int, uint, hex, oct, bin, bytes, bool dtypes.
  • Remove unneeded exception types.
  • pack and unpack methods for Bits.
  • Endianness modifiers for dtypes.

Next targets

Version 0.2 - Done 🎉 in Q1 2025

  • Improve documentation and testing.
  • Replace core with Rust library.
  • Reader class.

Version 0.3 / 0.4 - Done 🎉 Q2 2025.

  • More Dtype classes and functionality.
  • Expression class and usage.
  • Repeat class.
  • If / Else class.

Version 0.5 - Q3 2025?

  • MutableBits class.
  • Better performance.
  • Better platform coverage for Python wheels on PyPI.

Later additions

  • Exotic float types.
  • Bit reverse modifier for dtypes?
  • LSB0 mode.
  • User defined types?

Possible new features:

  • Allow a new dtype to be specified in Array.unpack. Keep the Array's current dtype as the default.
  • Array.from_zeros(dtype, n) method, to match Bits.from_zeros. Don't think we really need Array.from_ones.
  • Array.from_dtype(dtype, list) method. This is essentially just the __init__ method, but nice symmetry with Bits.
  • FieldType.parse should take a **kwargs. Not very useful until expressions are available.
  • Enum class that allows bit values to be named in a Field.
  • split_at method for Bits. Returns tuple of two Bits split at a given bit position. Should not involve any copying.

Not planned

Some features that are in bitstring, but are not planned for bitformat:

  • Exponential Golomb types.
  • Explicit file support.
Clone this wiki locally