Skip to content

Commit 4e7c4a4

Browse files
committed
chore: release version 0.7.0
Finalize changelogs and update version numbers across configuration files for the 0.7.0 release. Includes Python 3.14 support metadata.
1 parent 0b3b8d1 commit 4e7c4a4

File tree

4 files changed

+54
-2
lines changed

4 files changed

+54
-2
lines changed

CHANGELOG.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,39 @@
11
# Changelog
22

3+
## [0.7.0] - 2025-10-08
4+
5+
### Major Features
6+
7+
#### Image Quality Metrics
8+
- **Structural Similarity Index (SSIM)**: Added `Image.ssim` to compute perceptual similarity using the standard 11×11 Gaussian window and Rec. 709 luminance weighting, with support for grayscale and RGB/RGBA data.
9+
10+
#### Linear Algebra & Geometry
11+
- **Moore–Penrose Pseudoinverse**: Added `Matrix.pseudoInverse` with tolerance controls and rank reporting, enabling stable solutions for rectangular systems.
12+
- **Improved Affine Fitting**: `AffineTransform.init` now uses the pseudoinverse to support overdetermined point sets while preserving numerical stability.
13+
14+
### Breaking Changes
15+
- **Image Processing Outputs**: All image filters and morphology routines now expect the caller to supply an initialized output image (`Image.initLike`/`dupe`). `Image.crop` and `Image.rotate` return freshly allocated images instead of writing through an output pointer.
16+
- **Geometry Point API**: Replace `Point.point(...)` with the new `Point.init(...)` constructor; the legacy helper has been removed.
17+
- **Meta Utilities**: `meta.clampU8`/`clampTo` have been consolidated into the generic `meta.clamp(T, value)` helper and must be updated accordingly.
18+
19+
### Architecture & API Improvements
20+
- **Unified Border Handling**: Introduced `image/border.zig` to centralize zero, replicate, mirror, and wrap modes used across convolution and order-statistic filters.
21+
- **Running Statistics**: `RunningStats` gains an explicit `.init()` constructor, clearer reset semantics, and broader edge-case coverage in tests.
22+
- **Matrix Errors**: Added `MatrixError.NotConverged` so SVD-backed routines report convergence failures instead of silently returning invalid data.
23+
24+
### Performance Optimizations
25+
- **PCA**: SIMD-accelerated `project`/`reconstruct` paths for f32 and f64 reduce latency on high-dimensional datasets.
26+
27+
### Bug Fixes
28+
- **Compression**: Deflate encoder/decoder now clear internal state when reused, preventing cross-run contamination.
29+
- **Canvas**: Row indexing honors image stride, fixing drawing artifacts on non-contiguous buffers.
30+
- **Geometry**: `Rectangle.contains` rejects NaN inputs and `Rectangle.overlaps` correctly enforces the configured IoU threshold.
31+
- **Edge Detection**: Corrected source/destination ordering during gradient copying, fixing regression in the edges module.
32+
33+
### Tooling & Documentation
34+
- **Python Toolchain**: Minimum supported Python bumped to 3.10 with full CI coverage through Python 3.14.
35+
- **Docs**: Expanded Python README with badges, feature overview, and clarified version matrix.
36+
337
## [0.6.0] - 2025-09-30
438

539
### Major Features

bindings/python/CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Python Bindings Changelog
22

3+
## [0.7.0] - 2025-10-08
4+
5+
### Added
6+
- **Matrix Numeric Protocol**: `Matrix` objects now participate fully in Python arithmetic (`+`, `-`, `*`, `/`, unary `-`, scalar combos, and `@` for matrix multiplication) while preserving float64 semantics.
7+
- **Linear Algebra Suite**: Added `.transpose()`, the `.T` property, `.inverse()`, `.det()`, `.norm()`, `.dot()`, `.gram()`, `.cov()`, and element-wise helpers like `.pow()`, along with new convenience constructors `.zeros()`, `.ones()`, `.identity()`, and `.random(seed=...)`.
8+
- **Decomposition APIs**: New `.lu()`, `.qr()`, `.svd()`, `.rank()`, and `.pinv()` methods expose the underlying Zig implementations and return rich dictionaries (e.g., `{q, r, rank, perm}` for QR).
9+
- **Image Quality Metric**: Added `Image.ssim()` for perceptual comparisons that mirrors the Zig SSIM implementation (requires images ≥11×11).
10+
11+
### Changed
12+
- **Python Support Matrix**: Package now requires Python 3.10 or newer and advertises support through Python 3.14; metadata and documentation were updated accordingly.
13+
- **Integer Handling**: Argument parsing uses CPython’s `LongLong` conversions to accept full 64-bit integers in matrix APIs.
14+
15+
### Fixed
16+
- **Image Ownership**: Resolved stale view pointers when Python takes ownership of image buffers, preventing latent crashes when re-wrapping Zig images.
17+
- **Image Views**: Corrected dereferencing while creating Python image views so stride/addressing stay aligned with Zig-side expectations.
18+
319
## [0.6.0] - 2025-09-30
420

521
### Added

bindings/python/pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "zignal-processing"
7-
version = "0.7.0.dev"
7+
version = "0.7.0"
88
description = "Zero-dependency image processing library"
99
readme = "README.md"
1010
authors = [{name = "zignal contributors"}]
@@ -19,6 +19,7 @@ classifiers = [
1919
"Programming Language :: Python :: 3.11",
2020
"Programming Language :: Python :: 3.12",
2121
"Programming Language :: Python :: 3.13",
22+
"Programming Language :: Python :: 3.14",
2223
"Topic :: Multimedia :: Graphics",
2324
"Topic :: Scientific/Engineering :: Image Processing",
2425
]

build.zig.zon

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
.{
22
.name = .zignal,
3-
.version = "0.7.0-dev",
3+
.version = "0.7.0",
44
.fingerprint = 0x5303c43db377b63a,
55
.minimum_zig_version = "0.16.0-dev.368+2a97e0af6",
66
.dependencies = .{},
77
.paths = .{
88
"build.zig",
99
"build.zig.zon",
1010
"src",
11+
"bindings",
1112
"LICENSE",
1213
"README.md",
1314
},

0 commit comments

Comments
 (0)