Release Notes#
This chapter lists new features, API changes, and bug fixes. For a complete history, see the Git commit log.
Version 0.20.0#
Fixed cjdrake/bvwx#5:
Got rid of the Tuple type from 0.18.
The either is either fundamentally terrible, or not baked yet.
Either way, let’s just get rid of it.
Fixed cjdrake/bvwx#6:
Python 3.14 broke Struct and Union due to API changes for
deferred annotations.
Used annotationlib to get things working again.
Version 0.19.0#
Minor readability and performance improvements. No functional change.
Version 0.18.0#
Implemented a new Tuple data type.
It works like a Struct, but instead of str attributes,
it has int indices.
For example:
>>> from bvwx import Tuple
>>> t = Tuple("2b00", "2b11")
>>> t
bits("4b1100")
>>> type(x)
bvwx._tuple.Tuple[Vector[2], Vector[2]]
>>> t[0]
bits("2b00")
>>> t[1]
bits("2b11")
Version 0.17.0#
Simplified the type hierarchy.
Removed Bits base class. Now Array is the base class.
Also removed Composite class.
Now Struct and Union extend from Vector.
Version 0.16.0#
Renamed Bits.xes to just Bits.xs.
To match with new method Bits.ws.
Changed all references to “DC” to just “W”.
This includes methods like Bits.has_w,
but also the Enum.W default attribute.
Started using __slots__.
Maybe it’ll save some memory for large models.
Version 0.15.0#
Changed the Bits.has_* properties back to methods.
Version 0.14.0#
Changed
Bits.has_0from method to propertyChanged
Bits.has_1from method to propertyChanged
Bits.has_xfrom method to propertyChanged
Bits.has_dcfrom method to propertyAdded
Bits.has_wandBits.has_wxproperties
Updated PyRight typeCheckingMode to strict,
which required lots of miscellaneous changes.
A few invalid argument errors changed from TypeError to ValueError.
Version 0.13.0#
Updated class inheritance of Array, Vector, Scalar, and Empty.
Now Array is a subclass of Bits,
Vector is a subclass of Array,
Scalar and Empty are subclasses of Vector.
For example:
>>> from bvwx import *
>>> x = bits("1b1")
>>> type(x)
bvwx._bits.Scalar
>>> isinstance(x, Array)
True
>>> isinstance(x, Vector)
True
>>> isinstance(x, Scalar)
True
>>> isinstance(x, Vec[4])
False
>>> isinstance(x, Vec[1])
True
Changed the matmul operator so it only works for Array instances.
It didn’t make any sense for Composite instances.
Added Composite class to top level namespace.
Consolidated some of the code related to Struct and Union.
Lots of internal type annotation work.
Version 0.12.0#
Updated tooling to use uv and ruff.
Version 0.11.1#
Fixed cjdrake/bvwx#3
Version 0.11.0#
Implemented a matrix multiply operator (cjdrake/bvwx#2).
Version 0.10.0#
No API changes.
Bug fixes:
Fixed issue w/
Struct/Unionstring representation.Sign extend (
sxt) empty input raisesTypeError.
Added quickstart guide to documentation.
Updates to unit tests to improve code and branch coverage.
Version 0.9.0#
Update xt and sxt functions to accept Bits object for n arg.
For example
>>> xt("4b1010", "2b10")
bits("6b00_1010")
>>> sxt("4b1010", "2b10")
bits("4b11_1010")
Version 0.8.0#
Added cpop, clz and ctz functions.
Version 0.7.0#
Removed bitwise nand, nor, and xnor operators.
Moved clog2 function into bvwx namespace.
Version 0.6.0#
Added lit2bv function to top level API.
Version 0.5.0#
Improved the type annotations.
Now allows W character to represent DC in string literals.
For example bits("4bW10X").
Version 0.4.0#
Added logical operators: lor, land, and lxor.
Similar to bitwise, but they only take scalar-like inputs.
Removed uxnor function.
Added some installation docs.
Version 0.3.0#
Add initial documentation.