Changelog
View SourceAll notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
[0.2.1] - 2025-09-29
Added
- Dirty scheduler support for all CPU-intensive and I/O-bound NIFs, enabling true parallel rendering across multiple cores.
- Parallelization guide (
guides/PARALLELIZATION.md) with examples and performance considerations. - Integration tests for parallel rendering scenarios.
Changed
- All rendering NIFs now use
DirtyCpuscheduler:encode_webp,fill_rect,fill_circle,draw_oval,draw_text,clear,get_rgba_buffer. - Font loading uses
DirtyIoscheduler for file system operations. - Normal Erlang schedulers are no longer blocked during rendering, improving system responsiveness.
Performance
- ✅ Multiple canvases can now render in parallel without blocking each other
- ✅ Batch rendering operations scale with available CPU cores
- ✅ Other Erlang processes maintain responsiveness during heavy rendering workloads
[0.2.0] - 2025-09-28
Added
- Scene-level options in
render/2(aa/background/font) and per-elementaa:support across helpers. - New UI helpers:
linear_gradient_rect,radial_gradient_circle,chip,paragraph, and realtextwith font loading. - Kitchensink example refactor: palette, balanced header, system meters with percentages, and split analytics into non-overlapping subplots (trend, scatter, OHLC).
Fixed
- Anti-aliasing now works for circles (Rust NIF
fill_circleuses MSAA samples); visuals are smoother. - Consistent AA pass-through in named-property helpers (grid/line_chart/candle_chart/etc.).
Changed
- README updated with accurate run commands and Hex badge.
[0.1.0] - 2025-09-28
Added
- Minimal, fully working Skia backend via Rustler NIF producing real WEBP binaries (in-memory, zero-FS path).
- Public API facade (
CanvasCraft) withcreate_canvas/2-3,export_webp/1-2, andexport_raw/1. - Declarative DSL (
CanvasCraft.Scene) with positional and named properties, including per-element antialiasing. - Shapes and primitives: clear, rect, circle, panel, donut segment, grid, scatter, progress bar.
- Chart helpers: line chart and candle chart; text helpers:
text_bar. - Capability discovery (
CanvasCraft.Capabilities). - Reference backend for fast tests and benchmarks.
- Examples:
earth_planetandkitchensink(1080p dashboard) using the declarative DSL. - Benchmarks for draw ops, images/filters, and in-memory encoding.
Changed
- CI runs formatting, Credo, Dialyzer, tests, and non-blocking benchmarks.
Notes
- Requires Rust toolchain for building the NIF.