-
Notifications
You must be signed in to change notification settings - Fork 0
Prepare 12.1.0 #52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prepare 12.1.0 #52
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request introduces multi-threaded image processing support across the Colopresso library and applications (Electron/Chrome), fundamentally restructuring the GUI architecture for improved responsiveness and performance. The changes add pthreads support for C code, Rayon thread pools for Rust bridge code, and implement a web worker-based conversion architecture for the frontend.
Key changes:
- Added cross-platform threading support (pthreads on Unix/macOS, Windows Thread API wrapper on Windows, Emscripten pthreads for WASM)
- Implemented parallel processing for CPU-intensive PNG operations (bit-depth reduction, palette quantization)
- Restructured GUI to use web workers for non-blocking conversions with cancellation support
- Added WASM separation mode for stable Rust builds (Chrome Extension/Electron without native threads)
Reviewed changes
Copilot reviewed 68 out of 70 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| library/src/thread.c | New file implementing parallel_for with pthread-based thread pool for C code |
| library/src/portable.c | Added Windows thread API wrapper (pthread compatibility layer) |
| library/src/pngx_reduced.c | Parallelized bitdepth reduction and color quantization operations |
| library/src/pngx_palette256.c | Added prepare/finalize API for separated WASM quantization workflow |
| library/src/pngx_limited.c | Parallelized limited4444 bitdepth reduction |
| library/src/pngx_common.c | Parallelized snap_rgba_image_to_bits operation |
| library/pngx_bridge/src/lib.rs | Implemented thread pool caching for Rayon, added WASM-bindgen support |
| library/pngx_bridge/src/wasm.rs | New WASM module with separate quantization/optimization APIs |
| library/pngx_bridge/Cargo.toml | Added optional rayon and wasm-bindgen features |
| cmake/threads.cmake | New CMake module for cross-platform thread configuration |
| cmake/pngx_bridge_wasm.cmake | Build system for separate WASM bridge module |
| app/shared/core/conversionWorker.ts | New web worker for background image conversion |
| app/shared/core/conversionWorkerClient.ts | Client interface for worker communication |
| app/shared/core/pngxBridge.ts | TypeScript bindings for WASM-separated pngx_bridge |
| app/electron/main.ts | Added cross-origin isolation for SharedArrayBuffer support |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Uh oh!
There was an error while loading. Please reload this page.