fxpmath v0.4.10
v0.4.10 is a stability and modernization release focused on packaging updates, correctness fixes, reshape/bitwise behavior alignment, and stronger regression coverage across platforms and Python versions.
Highlights
- Migrated packaging metadata to PEP 517 / PEP 621 with
pyproject.tomlas canonical source. - Added dynamic versioning from
fxpmath.__version__. - Added installation smoke testing to validate install/import/version behavior.
- Fixed complex
urawconversion correctness (#102). - Fixed repeated increment +
int()casting regression (#98). - Implemented/clarified complex bitwise behavior and expanded regression coverage (#55).
- Improved reshape behavior compatibility with NumPy, including explicit
reshape_inplace. - Expanded CI coverage (multi-OS + modern Python matrix) and upgraded core Actions to current versions.
Solved / Addressed Issues
From v0.4.9 changelog
- #41 Overflow behavior at instantiation fails for long words
- #48 Flags not propagated
- #49 Reversal of
.bin() - #76 NumPy issue with bigger bit sizes
- #77 Precision error when
numpy.reshape - #80 Creation of
Fxpwith negativen_frac - #89 Infinite loop on exponent
Addressed in commits/changelog during v0.4.10 cycle
- #55 Complex bitwise behavior confusion
- #66 Unexpected behavior using
equal()with NumPy arrays - #67 Complex
dtypeerror at certain precision - #79 Deprecation using pip v23.1
- #85 Wrap overflow breaks on
0.0value - #86 Rounding-mode feature work and cleanup tracking updates
- #94 Missing
py.typedmarker for typing tools - #95 Invalid dtypes allowed
- #98
'int' object has no attribute 'flatten'regression - #102 Incorrect complex float→integer conversion path
Detailed Change Notes
- Packaging modernization with
pyproject.toml+ dynamic version source. - Added installation smoke tests (
tests/test_installation.py). - Complex
urawconversion fix + regression tests. - Scalar/object int-casting hardening + regression tests.
- Complex bitwise semantics implementation and test expansion.
- Bitwise internals refactor for broadcasted array-vs-array operations.
-
64-bit bitwise regression coverage for scalar/array/broadcast paths.
- Reshape API alignment with NumPy semantics:
reshape()copy-style behaviorreshape_inplace(shape, order='C')for explicit in-place reshape- deprecation warning for
Fxp.shape = ...
- Compatibility/test updates across Python and OS CI matrix.
Thanks
Huge thanks to all reporters and contributors who helped shape this release.
Issue Reporters
- #41 @desvdp
- #48 @edschofield
- #49 @nfrancque
- #55 @ruoting0103
- #66 @pablokrupa
- #67 @VincentChen1017
- #76 @DaveKirkland
- #77 @Ethan-lsh
- #79 @sebaestschn
- #80 @alb-pol
- #85 @sjgallagher2
- #86 @danilo-bc
- #89 @jrmoserbaltimore
- #94 @jtmoon79
- #95 @OliverKillane
- #98 @jmriddell
- #102 @javValverde
Code Contributors (since v0.4.9 to release branch)
- falcaraz
- Matthieu Dartiailh
Upgrade Notes
Fxp.shape = ...is deprecated; usereshape()orreshape_inplace().- Package version for this release is
0.4.10. - Tag to publish after merge:
v0.4.10.