Skip to content

Commit 4b1f463

Browse files
committed
docs: update changelogs for v0.6.0 release
1 parent ad664ef commit 4b1f463

File tree

2 files changed

+99
-27
lines changed

2 files changed

+99
-27
lines changed

CHANGELOG.md

Lines changed: 74 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,83 @@
11
# Changelog
22

3-
## [Unreleased]
3+
## [0.6.0] - 2025-09-30
4+
5+
### Major Features
6+
7+
#### Image Processing
8+
- **Binary Image Operations**: Complete thresholding and morphology suite
9+
- Otsu and adaptive mean thresholding
10+
- Morphological operations: erosion, dilation, opening, closing
11+
- **Order-Statistic Filters**: Median, minimum, maximum blur filters
12+
- Edge-preserving noise reduction with configurable kernel sizes
13+
- **Image Enhancement**: Histogram equalization and autocontrast
14+
- Adaptive contrast enhancement for improved visibility
15+
- **Edge Detection**: Advanced edge detection algorithms
16+
- **Canny Edge Detection**: Classic multi-stage edge detector with Gaussian smoothing, Sobel gradients, non-maximum suppression, and hysteresis thresholding
17+
- **Shen-Castan**: Edge detection with ISEF smoothing and adaptive gradient computation
18+
- **Canvas Drawing**: Added `drawImage` method for image compositing
19+
- Support for blending modes during insertion
20+
21+
#### Format Support
22+
- **JPEG Encoder**: Complete baseline JPEG encoding implementation
23+
- DCT-based compression with quality control
24+
- Support for grayscale and RGB images
25+
- Optimized encoding performance
26+
27+
#### Compression
28+
- **Deflate/Zlib/Gzip**: Full compression implementation
29+
- Multiple compression levels and strategies
30+
- Dynamic Huffman encoding
31+
- LZ77 hash-based compression
32+
- Compatible with standard zlib format
33+
34+
#### Matrix Improvements
35+
- **Chainable Operations API**: Simplified matrix operations
36+
- Direct method chaining: `matrix.transpose().inverse().eval()`
37+
- Deferred error checking at terminal operations
38+
- Added `dupe()` method for explicit copying
439

540
### Breaking Changes
6-
- **Matrix API Refactoring**: Removed `OpsBuilder` and merged all functionality directly into `Matrix`
7-
- Operations are now chainable directly on Matrix: `matrix.transpose().inverse().eval()`
8-
- Errors are deferred and checked at terminal operation (`.eval()`)
9-
- For operation chains, use `ArenaAllocator` to manage intermediate allocations
10-
- All SIMD optimizations preserved, including optimized GEMM operations
11-
- Added `Matrix.dupe(allocator)` to explicitly copy before in-place chains and avoid aliasing/double-free issues.
41+
- **Image Processing**: Removed `differenceOfGaussians`, easy to do manually
42+
- **Matrix API**: Removed `OpsBuilder`, merged functionality into `Matrix`
43+
- Use `ArenaAllocator` for managing intermediate allocations in chains
44+
- All SIMD optimizations preserved
45+
- **YCbCr Color Space**: Components now use `u8` type instead of other numeric types
46+
- **Alpha Compositing**: Corrected blend mode compositing behavior
47+
48+
### Architecture Improvements
49+
- **Image Module Reorganization**: Separated into focused sub-modules
50+
- `image/binary.zig` - Binary operations and morphology
51+
- `image/convolution.zig` - Convolution framework
52+
- `image/edges.zig` - Edge detection algorithms
53+
- `image/enhancement.zig` - Histogram and contrast operations
54+
- `image/histogram.zig` - Histogram computation
55+
- `image/integral.zig` - Integral image operations
56+
- `image/motion_blur.zig` - Motion blur effects
57+
- `image/order_statistic_blur.zig` - Order-statistic filters
58+
- **Compression Modules**: Modular compression implementation
59+
- Separate modules for deflate, zlib, gzip, huffman, and LZ77
60+
- **ORB Feature Detection**: Improved with learned BRIEF patterns
1261

1362
### Python Bindings
14-
- Consolidated CPython type registration in `bindings/python/src/main.zig` via a compile‑time table + loop.
15-
- Added `py_utils.kw(...)` helper to build CPython kwlists; adopted across transforms, canvas (including macro‑generated methods), filtering, matrix, PCA, motion blur, pixel proxy, rectangle.
16-
- Introduced numeric validators in `py_utils.zig` and normalized error messages:
17-
- `validatePositive`, `validateNonNegative`, `validateRange` used for consistent ValueError messages.
18-
- Standardized tuple messages to "size/shape must be a 2‑tuple of (rows, cols)".
19-
- Unified enum registration/parsing using `enum_utils.zig` (DrawMode, Blending, Interpolation, OptimizationPolicy).
20-
- Reduced boilerplate for returning new images with `moveImageToPython`.
21-
- All Python tests pass (`uv run pytest`), stubs generate successfully.
63+
- Standardized argument parsing with `py_utils.kw()` helper
64+
- Numeric validators for consistent error messages
65+
- Unified enum registration system via `enum_utils.zig`
66+
- Consolidated type registration with compile-time tables
67+
- Reduced boilerplate with `moveImageToPython` helper
68+
69+
### Performance Optimizations
70+
- SIMD-optimized f32 separable convolution
71+
- Vectorized DoG and Gaussian blur calculations
72+
- Optimized JPEG encoding with fast DCT
73+
- Improved PNG compression configuration
74+
75+
### Bug Fixes
76+
- Fixed alpha compositing for blend modes
77+
- Corrected JPEG restart marker handling and partial MCU decoding
78+
- Improved PNG filter selection alignment with spec
79+
- Fixed DoG filter output with offset handling
80+
- Better memory management for convolution operations
2281

2382
## [0.5.1] - 2025-09-03
2483

bindings/python/CHANGELOG.md

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,36 @@
11
# Python Bindings Changelog
22

3-
## [Unreleased]
3+
## [0.6.0] - 2025-09-30
44

55
### Added
6-
- `py_utils.kw(&.{ ... })` helper for building CPython kwlists at comptime.
7-
- `validatePositive`, `validateNonNegative`, `validateRange` numeric validators with consistent error messages.
8-
- Binding conventions documented (see BINDINGS_GUIDE.md) for enums, arg parsing, image wrapping, and exceptions.
6+
- **Binary Image Operations**: Thresholding and morphology functions
7+
- `threshold_otsu()`, `threshold_adaptive_mean()`
8+
- `erode()`, `dilate()`, `opening()`, `closing()`
9+
- **Order-Statistic Filters**: Edge-preserving blur methods
10+
- `blur_median()`, `blur_min()`, `blur_max()`
11+
- **Image Enhancement**: Histogram and contrast operations
12+
- `equalize()` - Histogram equalization
13+
- `autocontrast()` - Automatic contrast adjustment
14+
- **Edge Detection**: Advanced edge detection algorithms
15+
- `canny()` - Classic Canny edge detector with configurable sigma and thresholds (defaults: sigma=1.4, low=50, high=150)
16+
- `shen_castan()` - Edge detection with ISEF smoothing and adaptive gradient computation
17+
- **Canvas**: `draw_image()` method for compositing images with blending
18+
- **Image I/O**: `save()` method now supports JPEG format
19+
- Binding conventions documented in `BINDINGS_GUIDE.md`
920

1021
### Changed
11-
- Consolidated type registration in `src/main.zig` using a compile‑time table.
12-
- Adopted kw helper across the codebase (transforms, canvas, filtering, matrix, PCA, motion blur, pixel proxy, rectangle).
13-
- Normalized tuple error messages to "size/shape must be a 2‑tuple of (rows, cols)".
14-
- Moved new‑image return paths to `moveImageToPython` to reduce duplication.
22+
- **API Improvements**: Standardized argument parsing across all modules
23+
- `py_utils.kw()` helper for CPython keyword argument lists
24+
- Numeric validators (`validatePositive`, `validateNonNegative`, `validateRange`)
25+
- Consistent error messages for invalid inputs
26+
- **Type Registration**: Consolidated in `src/main.zig` using compile-time tables
27+
- **Enum Handling**: Unified registration and parsing via `enum_utils.zig`
28+
- **Image Creation**: Simplified with `moveImageToPython` helper
29+
- Normalized tuple error messages to "size/shape must be a 2-tuple of (rows, cols)"
1530

1631
### Fixed
17-
- Improved consistency of Python exceptions (TypeError vs ValueError) and messages across APIs.
18-
19-
### Quality
20-
- 77 tests passing with `uv run pytest`; stubs regenerated via `zig build python-stubs`.
32+
- Improved consistency of Python exceptions (TypeError vs ValueError)
33+
- Better error messages across all APIs
2134

2235
## [0.5.1] - 2025-09-03
2336

0 commit comments

Comments
 (0)