|
1 | 1 | # PythonQwt Releases |
2 | 2 |
|
| 3 | +## Version 0.16.0 |
| 4 | + |
| 5 | +### Performance |
| 6 | + |
| 7 | +- Major performance optimizations addressing [Issue #93](https://github.com/PlotPyStack/PythonQwt/issues/93) (rendering performance degradation with Qt 6, also benefitting Qt 5): |
| 8 | + - `QwtText`: removed unnecessary `QObject` inheritance and added a font key cache to avoid expensive `QFont` hashing on every text rendering operation |
| 9 | + - `QwtText`: cached Qt alignment and text format flags as plain integers to bypass `PyQt6` enum overhead in hot paths |
| 10 | + - `QwtText`: enabled font key caching fast path for Qt 6, kept disabled for Qt 5 to preserve consistent text rendering |
| 11 | + - `QwtGraphic` and `QwtPainterCommand`: cached Qt flags as integers to reduce per-command overhead, especially under PyQt6 |
| 12 | + - `QwtScaleDraw`, `QwtScaleEngine`, `QwtScaleMap` and `QwtScaleDiv`: micro-optimizations on the tick computation and coordinate transform code paths |
| 13 | +- Added benchmarking and visual regression scripts under `scripts/` (`bench_qt.ps1`, `bench_plotpy_loadtest.py`, `profile_loadtest.py`, `lineprofile_loadtest.py`, `capture_screenshots.py`, `diff_screenshots.py`) to measure and validate rendering performance and correctness |
| 14 | + |
| 15 | +### Bug fixes |
| 16 | + |
| 17 | +- Merged [PR #105](https://github.com/PlotPyStack/PythonQwt/pull/105): fixed legend icon being rendered incorrectly - thanks to @Adrian-B-Moreira |
| 18 | +- Fixed `QPaintDevice` warnings on `DevicePixelRatio` and `DevicePixelRatioScaled` metrics in `QwtNullPaintDevice` |
| 19 | +- Fixed integer division in `QwtScaleEngine` so that medium ticks are actually produced (previously, the medium tick step was truncated to zero in some configurations) |
| 20 | +- Fixed `QwtScaleMap` rectangle transform and degenerate scale handling (when source or destination interval has zero width) |
| 21 | + |
| 22 | +### Other changes |
| 23 | + |
| 24 | +- Internal refactor: removed unnecessary `QObject` inheritance from `QwtText` (`QwtText` instances are no longer `QObject` subclasses; this is an internal change with no impact on the public plotting API, but downstream code relying on Qt signals/slots on `QwtText` instances should be adapted) |
| 25 | +- Development workflow: replaced legacy `.bat` scripts with a unified `scripts/run_with_env.py` environment loader, refactored VS Code tasks, added coverage tasks and CI gating of PyPI deployment on the test suite passing |
| 26 | +- Documentation: updated README, Sphinx documentation, dependencies and added AI coding agent instructions |
| 27 | + |
3 | 28 | ## Version 0.15.0 |
4 | 29 |
|
5 | 30 | - Added support for `QwtDateTimeScaleDraw` and `QwtDateTimeScaleEngine` for datetime axis support (see `QwtDateTimeScaleDraw` and `QwtDateTimeScaleEngine` classes in the `qwt` module) |
|
0 commit comments