Skip to content

Commit c404722

Browse files
committed
Update changelog for version 0.16.0: enhance performance optimizations, add benchmarking scripts, and fix bugs
1 parent ecee0f4 commit c404722

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
# PythonQwt Releases
22

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+
328
## Version 0.15.0
429

530
- Added support for `QwtDateTimeScaleDraw` and `QwtDateTimeScaleEngine` for datetime axis support (see `QwtDateTimeScaleDraw` and `QwtDateTimeScaleEngine` classes in the `qwt` module)

qwt/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
from qwt.text import QwtText # noqa: F401
6464
from qwt.toqimage import array_to_qimage as toQImage # noqa: F401
6565

66-
__version__ = "0.15.0"
66+
__version__ = "0.16.0"
6767
QWT_VERSION_STR = "6.1.5"
6868

6969

0 commit comments

Comments
 (0)