Changelog
This release has an MSRV of 1.89.
0.2.0 - 2026-08-07
This release has an MSRV of 1.88.
Fixed
Optimized
- Multi-threaded render contexts now initialize task dispatch lazily on the first drawing operation, avoiding unnecessary setup for empty frames and after resets. (#1787 by @LaurenzV, @yezhizhen)
0.1.0 - 2026-07-29
This release has an MSRV of 1.88.
Added
RenderContext::reset_and_resize, allowing a render context to be reused after its target size changes. (#1705 by @LaurenzV)RenderContext::is_multi_threaded for querying whether the context uses multi-threaded rendering. (#1703 by @LaurenzV)- Inverse blurred rounded rectangles through the new
invert parameter on RenderContext::fill_blurred_rounded_rect, enabling inset box shadows. (#1715 by @nicoburns) FilterPrimitive::DropShadowOnly for rendering a drop shadow without compositing the original input over it. (#1763 by @LaurenzV)
Changed
- Breaking change: The methods
render_to_pixmap and composite_to_pixmap_at_offset have been replaced with unified render and render_with methods, whose settings control the target, pixel format, compositing, and rendering mode. (#1665 by @LaurenzV) - The Vello CPU frontend and coarse rasterizer have been rewritten. As a result:
- Filter layers always render correctly, even at viewport boundaries.
- A number of issues with layer clipping have been fixed.
- Performance improves by up to 10% across a variety of rendering workloads. (#1701 by @LaurenzV)
Fixed
- Opaque image rendering when blend modes or masks are active. (#1697 by @LaurenzV)
- Gaussian blur strength changing abruptly at decimation thresholds. (#1720 by @grebmeg)
- Panics when resetting or dropping a multi-threaded render context while worker tasks are still in flight. (#1732, #1756 by @yezhizhen)
Optimized
- x86 rendering, including blending and high-quality image sampling, through improved SIMD code generation. (#1688 by @LaurenzV)
- Clip-path intersection by skipping rows outside the paths' shared vertical extent and locating the first relevant strip with binary search. (#1690, #1691 by @LaurenzV)
- Radial-gradient evaluation and gradient lookup-table generation. (#1723, #1726 by @LaurenzV)
- Rendering opaque
peniko::ImageData by computing and retaining its transparency hint during conversion. (#1760 by @tronical)
0.0.9 - 2026-05-30
This release has an MSRV of 1.88.
Fixed
Optimized
0.0.8 - 2026-05-15
This release has an MSRV of 1.88.
Added
render_decoration on glyph run builders for rendering text decorations with skip-ink behavior. (#1592 by @taj-p)- Support for rendering VARC glyphs in text paths. (#1594 by @nicoburns, @oscargus)
- Support for synthetic font emboldening in text glyph runs via
GlyphRunBuilder::font_embolden and glifo::FontEmbolden. (#1628 by @jrmoulton)
Changed
- Migrated text rendering to
glifo; rendering, glyph, and image APIs now use an explicit Resources object for persistent image and glyph caches. RenderContext::render_to_buffer, RenderContext::render_to_pixmap, RenderContext::composite_to_pixmap_at_offset, and RenderContext::glyph_run now take resources, and image registration moved from RenderContext to Resources. (#1562 by @LaurenzV) - Renamed image transparency hint APIs from
may_have_opacities and *_opacity_hint to may_have_transparency and *_transparency_hint. (#1613 by @upsuper)
Removed
- Experimental
vello_api integration and api module. (#1602 by @waywardmonkeys) - Support for recordings. This decision was made due to a number of downsides that came with the implementation. See the corresponding PR and Zulip thread for more information. (#1611 by @LaurenzV)
Fixed
- Rendering of rare degenerate radial gradients with undefined regions, which should render those regions transparent. (#1529 by @LaurenzV)
- Incorrect rendering of filter layers containing nested clip layers. (#1541 by @LaurenzV)
- x86 artifacts in bicubic image rendering caused by negative interpolated color values wrapping during SIMD
f32 to u8 conversion. (#1563 by @LaurenzV) - Stroked glyph rendering when scaled glyph runs absorb the transform into the font size, preserving the expected stroke width. (#1576 by @LaurenzV)
- COLR glyph rendering, including glyphs using non-default blend modes. (#1584 by @LaurenzV)
- Rendering of inverted rectangles, including blurred rounded rectangles. (#1589 by @LaurenzV)
Optimized
- CPU fine rasterization performance through improved SIMD codegen. (#1616 by @LaurenzV)
0.0.7 - 2026-03-24
This release has an MSRV of 1.92.
Added
composite_to_pixmap_at_offset method to RenderContext for compositing at specific offsets within a larger pixmap. (#1416 by @grebmeg)ImageResolver for resolving opaque image IDs at rasterization time. (#1451 by @grebmeg)- Support for image tinting. (#1460 by @grebmeg)
Fixed
- Rendering of blurred rounded rectangles with zero or very small blur standard deviations. (#1422 by @tomcur)
- Off-by-one error in gaussian blur decimation filter. (#1488 by @LaurenzV)
- Filter layers with zero clips. (#1437 by @LaurenzV)
Optimized
- Bilinear image sampling in the
RenderMode::OptimizeQuality (f32) pipeline. (#1343 by @tomcur)
0.0.6 - 2026-01-15
This release has an MSRV of 1.88.
Added
Changed
See also the vello_hybrid 0.0.6 and vello_common 0.0.6 releases.
0.0.5 - 2026-01-08
This release has an MSRV of 1.88.
Added
- The
RenderContext now has a set_blend_mode (and a corresponding blend_mode getter method) that can be used to support non-isolated blending. (#1159 by @LaurenzV) - The
RenderContext now contains a push_clip_path and pop_clip_path method for performing non-isolated clipping. (#1203 by @LaurenzV) - Experimental support for image filter effects: (#1286 by @grebmeg)
- New filter API methods on
RenderContext:set_filter_effect() - Set a filter to be applied to subsequent drawing operations.push_filter_layer() - Create a new layer with a filter effect.
FilterEffect trait providing both u8 and f32 precision variants for rendering across different backends.- Gaussian Blur filter with configurable standard deviation and edge modes (
None, Mirror, Wrap, Duplicate). Uses an optimized decimated blur algorithm with automatic downsampling for performance. - Drop Shadow filter with customizable offset, blur radius, and shadow color.
- Flood filter for solid color fills.
- A
set_mask method to make it possible to mask rendered paths without inducing layer isolation. (#1237 by @LaurenzV) - Support for conditionally disabling the u8 or f32 pipeline. (#1294 by @nicoburns)
Changed
- Improved performance of rendering opaque images. (#1327 by @grebmeg)
Known Limitations
- Filter effects currently support only single-primitive filters; filter graphs with multiple chained primitives are not yet supported.
- Multithreaded rendering is not supported for filter effects; filters are only applied in single-threaded mode.
See also the vello_hybrid 0.0.5 and vello_common 0.0.5 releases.
0.0.4 - 2025-10-17
This release has an MSRV of 1.86.
No changelog was kept for this release.
See also the vello_hybrid 0.0.4 and vello_common 0.0.4 releases.
0.0.3 - 2025-10-04
This release has an MSRV of 1.86.
No changelog was kept for this release.
See also the vello_common 0.0.3 release.
0.0.2 - 2025-09-22
This release has an MSRV of 1.85.
No changelog was kept for this release.
See also the vello_common 0.0.2 release.
0.0.1 - 2025-05-10
This release has an MSRV of 1.85.
This is the initial release. No changelog was kept for this release.
See also the vello_common 0.0.1 release.