NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
A CPU-based renderer for Vello, optimized for SIMD and multithreaded execution.
Last release 11 days ago
02 Oct 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 12 of 12 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
12 releases · first in 2025
One column per month.
Breaking change: Updated vello_common to v0.2.0.
Glifo v0.3.0 has been released.
This release has an MSRV of 1.88.
vello_common to v0.2.0.Full Changelog: glifo-v0.2.0...glifo-v0.3.0
This release has an MSRV of 1.89.
As part of this release, Vello Hybrid has been renamed to Vello GPU.
Vello CPU is our 2D renderer which doesn't use a GPU.
The imaging model exposed by Vello CPU is very similar to that of Vello Research.
This implementation is now broadly usable, with a reasonably complete imaging model and competitive performance.
It does not, however, have any API stability guarantees, as we intend to redesign the API to be consistent across the Vello renderers.
Performance information can be seen at https://laurenzv.github.io/vello_chart/ (although this URL is not time-locked, so it might show results from a slightly newer or older version than this tag).
RenderContext::push_clip_rect for non-isolated rectangular clipping. (#1916 by @LaurenzV)ImageSampler::alpha. (#1880 by @LaurenzV)CompositeMode with TargetInit, adding configurable target clears. (#1866 by @LaurenzV)RenderContext::pop_clip_path to pop_clip. (#1942 by @LaurenzV)GlyphRunBuilder::fill_glyphs and stroke_glyphs now return Result<(), glifo::GlyphRenderError>. (#1944 by @LaurenzV)fearless_simd to v0.7.0. (#1853 by @LaurenzV)Paint re-export. (#1881 by @LaurenzV)ImageQuality::Medium) instead of switching to bicubic sampling when downscaled. (#1970 by @LaurenzV)Repeat, Reflect, and bilinear/bicubic filtering. (#1946, #1950 by @LaurenzV)sbix glyphs caused by the Apple Color Emoji workaround. (#1936 by @LaurenzV)sbix glyph placement caused by sign errors in bearing offsets. (#1939 by @LaurenzV)This release is a minor release of Vello GPU (formerly Vello Hybrid), which uses the CPU for preprocessing and the GPU for rasterization. The imaging model exposed by Vello GPU is very similar to that of Vello Research.
This implementation is in its early stages and does not yet provide any API stability guarantees (see the roadmap for more details). It also doesn't have feature parity with Vello CPU. A few known issues remain, which we plan to address soon.
unminified feature in vello_gpu_shaders for readable shader output. (#1851 by @grebmeg)WebGlRenderer::begin and begin_with. (#1823 by @grebmeg)Scene::push_clip_rect for non-isolated rectangular clipping. (#1916 by @LaurenzV)ImageSampler::alpha. (#1880 by @LaurenzV)vello_hybrid crate to vello_gpu. HybridGlyphRunBackend is now GpuGlyphRunBackend. (#1883 by @grebmeg, #1918 by @LaurenzV)wgpu to v30 and fearless_simd to v0.7.0. (#1909, #1853 by @LaurenzV)Scene::set_paint, replacing draw_texture_rects and adding support for arbitrary shapes, extend modes, and transparency hints. (#1812, #1813, #1824 by @LaurenzV)use_depth_buffer argument in WebGL. (#1808, #1810 by @grebmeg)TargetInit in wgpu and a clear color in WebGL. (#1869 by @LaurenzV)WebGlError results. (#1892 by @LaurenzV, #1921 by @grebmeg)RenderSize, RenderTargetConfig, atlas configuration, and related dimensions now use u16. (#1826, #1891 by @LaurenzV)atlas_texture takes an AtlasId. (#1859 by @LaurenzV)Scene::pop_clip_path to pop_clip. (#1942 by @LaurenzV)GlyphRunBuilder::fill_glyphs and stroke_glyphs now return Result<(), glifo::GlyphRenderError>. (#1944 by @LaurenzV)failIfMajorPerformanceCaveat. (#1806 by @LaurenzV)ImageQuality::Medium) instead of switching to bicubic sampling when downscaled. (#1970 by @LaurenzV)std feature no longer implicitly enables wgpu. (#1822 by @taj-p)sbix glyphs caused by the Apple Color Emoji workaround. (#1936 by @LaurenzV)sbix glyph placement caused by sign errors in bearing offsets. (#1939 by @LaurenzV)WEBGL_provoking_vertex support. (#1805, #1827 by @LaurenzV)This release also contains Vello Common, a support crate used by Vello CPU and Vello GPU.
Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU and Vello GPU.
TargetInit<C> for configuring target clears or compositing over existing contents. (#1866 by @LaurenzV)pixmap::premultiply_rgba8 and unpremultiply_rgba8 helpers. (#1930 by @LaurenzV)ImageSource::external_texture for external GPU texture paints. (#1824 by @LaurenzV)ImageSampler::alpha. (#1880 by @LaurenzV)ClipContext, ClipState, and ViewportState. (#1916, #1926 by @LaurenzV)Pixmap::from_parts, which now accepts Vec<u8> and PixelMetadata. (#1834 by @LaurenzV)Pixmap::take and take_unpremultiplied with take_rgba8 and try_take_rgb8, adding RGB output support. (#1855 by @LaurenzV)u16; the OffsetU32, SizeU32, and RectU32 geometry types have been removed. (#1826 by @LaurenzV)fearless_simd to v0.7.0 and adapted the SIMD utility APIs. (#1853 by @LaurenzV)ClipContext, ClipState, and ViewportState rename push_clip to push_clip_path, and their clip accessors now return ClipRef instead of PathDataRef. (#1916, #1926 by @LaurenzV)EncodeExt::encode_into now returns Option<Paint>. (#1949 by @grebmeg)EncodedExternalTexture. (#1824 by @LaurenzV)ImageCache::allocate_excluding and MultiAtlasManager::try_allocate_excluding. (#1825 by @LaurenzV)Full Changelog: sparse-strips-v0.2.0...sparse-strips-v0.3.0
This release has an [MSRV][] of 1.75.
Adapter from the utils DeviceHandle ([#634][] by [@cfagot][])wgpu::Textures into a Vello scene ([#636][], [#655][] by [@DJMcNab], [@TrueDoctor][])AaSupport from a set of AaConfigs ([#654][] by [@simbleau][])Encoding for a scene can now be modified, circumventing guardrails for advanced use-cases ([#701][] by [@timtom-dev][])wgpu to 22.1.0 ([#635][] by [@waywardmonkeys])run_app][] API from Winit ([#626][], [#628][] by [@yutannihilation][])vello. ([#677][] by [@waywardmonkeys])Pipelines API from vello_shaders ([#612][] by [@DJMcNab])wgpu_profiler profiler feature is no longer stable ([#694][] by [@DJMcNab])Recording abstraction into a low_level module, as almost all users should prefer the higher-level Renderer ([#711][] by [@DJMcNab])Breaking change: Renderer::new , Renderer::new_with , WebGlRenderer::new , and WebGlRenderer::new_with now return the renderer and its associated Reso…
This release has an MSRV of 1.88.
Vello CPU is our 2D renderer which doesn't use a GPU.
The imaging model exposed by Vello CPU is very similar to that of current Vello.
This implementation is now broadly usable, with a reasonably complete imaging model and competitive performance.
It does not, however, have any API stability guarantees, as we intend to redesign the API to be consistent across the Vello renderers.
Performance information can be seen at https://laurenzv.github.io/vello_chart/ (although this URL is not time-locked, so it might show results from a slightly newer or older version than this tag).
This release is a minor release of Vello Hybrid, which uses the CPU for preprocessing and the GPU for rasterization. The imaging model exposed by Vello Hybrid is very similar to that of current Vello.
This implementation is in its early stages and does not yet provide any API stability guarantees (see the roadmap for more details). It also doesn't have feature parity with Vello CPU. A few known issues remain, which we plan to address soon.
Scene::draw_texture_rects in the webgl backend, bringing it to parity with the wgpu backend. Textures are bound at render time through the new WebGlTextureBindings. (#1792 by @grebmeg)ProbeResult::statistics, ProbeStatistics, and ProbeFeature for diagnosing which renderer-probe features and pixels differ from the reference output. (#1779 by @LaurenzV)PROBE_ELEMENTS for inspecting the active features used by the WebGL compatibility probe. (#1801 by @LaurenzV)Renderer::new, Renderer::new_with, WebGlRenderer::new, and WebGlRenderer::new_with now return the renderer and its associated Resources as a tuple. Resources can no longer be constructed directly and must only be used with the renderer instance that generated it. (#1794 by @LaurenzV)Scene::new_with now takes a Level instead of RenderSettings. (#1794 by @LaurenzV)WebGlRenderer::render and WebGlRenderer::render_to_atlas now take WebGlTextureBindings, providing the external textures referenced by the scene. Pass &WebGlTextureBindings::new() if the scene does not use any. (#1792 by @grebmeg)IntermediateTextureError variants for oversized allocations and texture-count limits. (#1778 by @grebmeg)This release also contains Vello Common, a support crate used by Vello CPU and Vello Hybrid.
Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU and Vello Hybrid.
ProbeResult::statistics, ProbeStatistics, and ProbeFeature for diagnosing which renderer-probe features and pixels differ from the reference output. (#1779 by @LaurenzV)PROBE_ELEMENTS for inspecting the active features used by the shared probe scene. (#1801 by @LaurenzV)AtlasError variants now report configured limits and allocation sizes, with the new AtlasSpaceDiagnostics and AtlasLayerDiagnostics types providing per-layer free-space, utilization, and fragmentation details. (#1778 by @grebmeg)This release also contains Vello Sparse Shaders, a support crate used by Vello Hybrid.
This crate does not currently have any stable API guarantees.
Full Changelog: sparse-strips-v0.1.0...sparse-strips-v0.2.0
Glifo v0.2.0 has been released.
This release has an MSRV of 1.88.
Full Changelog: glifo-v0.1.1...glifo-v0.2.0
This release has an [MSRV][] of 1.75.
From<Encoding> for Scene. ([#538][] by [@waywardmonkeys])vello_shaders crate to load and preprocess WGSL. ([#563][] by [@armansito])#enable post-process directive. ([#550][] by [@armansito])RenderContext::new() no longer returns a Result. ([#547][] by [@waywardmonkeys])wgpu to 0.20. ([#560][] by [@waywardmonkeys])force_rw_storage feature. ([#540][] by [@armansito])draw_leaf uniformity. ([#535][] by [@raphlinus])vello_encoding. ([#573][] by [@armansito])path_reduced_scan buffer size. ([#551][] by [@armansito])Breaking change: The methods render_to_pixmap and composite_to_pixmap_at_offset have been replaced with unified render and render_with methods, whose…
This release has an MSRV of 1.88.
Vello CPU is our 2d renderer which doesn't use a GPU.
The imaging model exposed by Vello CPU is very similar to that of current Vello.
Crates.io | Docs
This implementation is now broadly usable, with a reasonably complete imaging model and competitive performance.
It does not however have any API stability guarantees, as we intend to redesign the API to be consistent across the Vello renderers.
Performance information can be seen at https://laurenzv.github.io/vello_chart/ (although note that this URL is not "time-locked", so might show results from a slightly newer or older version than this tag).
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)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)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)peniko::ImageData by computing and retaining its transparency hint during conversion. (#1760 by @tronical)This release is a minor release of Vello Hybrid, which uses the CPU for preprocessing and the GPU for rasterization. The imaging model exposed by Vello Hybrid is very similar to that of current Vello.
Crates.io | Docs
This implementation is in its early stages and does not yet provide any API stability guarantees (see the roadmap for more details). It also doesn’t have feature parity with Vello CPU. A few known issues remain, which we plan to address soon.
invert parameter on Scene::fill_blurred_rounded_rect, enabling inset box shadows. (#1715 by @nicoburns)Resources::new_with_config for configuring the image and glyph atlas used by resources. (#1750 by @grebmeg)FilterPrimitive::DropShadowOnly for rendering a drop shadow without compositing the original input over it. (#1763 by @LaurenzV)Scene::reset_and_resize, allowing a scene to be reused after its target size changes. (#1769 by @LaurenzV)WebGlRenderer::probe is now asynchronous. It returns a WebGlPendingProbe, which can be polled with try_finish, avoiding a synchronous GPU-to-CPU readback stall and providing specific WebGL error codes on failure. (#1671, #1735 by @LaurenzV)RenderSettings now contains MemorySettings, with separate image-atlas and intermediate-layer configuration. SceneConstraints and RenderError::SlotsExhausted have been removed, and LayersConfig allows applications to limit and tune intermediate textures. (#1759 by @LaurenzV)webgl feature is enabled, including on non-Wasm targets. (#1682 by @jesses-canva)wasm-bindgen-related dependencies. (#1683 by @LaurenzV)u16 coordinates. (#1666 by @dipeshbabu)peniko::ImageData by computing and retaining its transparency hint during conversion. (#1760 by @tronical)This release also contains Vello Common, a support crate used by Vello CPU and Vello Hybrid.
Crates.io | Docs
Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU and Vello Hybrid.
FilterPrimitive::DropShadowOnly for rendering a drop shadow without compositing the original input over it. (#1763 by @LaurenzV)bounds_expansion APIs have been replaced by filter_expansion and source_expansion. (#1701 by @LaurenzV)PaddingU16 type, RectU16::intersect no longer produces inverted rectangles, and strip_bbox now returns Option<RectU16>. (#1751 by @LaurenzV)coarse and render_graph modules. The rewritten CPU and hybrid renderers no longer use them. (#1762 by @LaurenzV)u16 coordinates. (#1666 by @dipeshbabu)peniko::ImageData by computing and retaining its transparency hint during conversion. (#1760 by @tronical)This release also contains Vello Sparse Shaders, a support crate used by Vello Hybrid.
Crates.io | Docs
This crate does not currently have any stable API guarantees.
Full Changelog: sparse-strips-v0.0.9...sparse-strips-v0.1.0
<!-- Note that this still comparing against 0.5.0, because 0.5.1 is a cherry-picked patch --> [0.6.0]: https://github.com/linebender/vello/compare/v0.5.0...v0.6.0 [0.5.1]: https://github.com/linebender/vello/compare/v0.5.0...v0.5.1 <!-- Note that this still comparing against 0.4.0, because 0.4.1 is a cherry-picked patch --> [0.5.0]: https://github.com/linebender/vello/compare/v0.4.0...v0.5.0 [0.4.1]: https://github.com/linebender/vello/compare/v0.4.0...v0.4.1 [0.4.0]: https://github.com/linebender/vello/compare/v0.3.0...v0.4.0 <!-- Note that this still comparing against 0.2.0, because 0.2.1 is a cherry-picked patch --> [0.3.0]: https://github.com/linebender/vello/compare/v0.2.0...v0.3.0 [0.2.1]: https://github.com/linebender/vello/compare/v0.2.0...v0.2.1 [0.2.0]: https://github.com/linebender/vello/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/linebender/vello/releases/tag/v0.1.0
The 9th alpha version of the Vello Sparse Strips renderers (version 0.0.9) has been released.
The 9th alpha version of the Vello Sparse Strips renderers (version 0.0.9) has been released.
This release has an MSRV of 1.88.
You can also follow the roadmap for Vello Sparse Strips.
Vello CPU is our 2d renderer which doesn't use a GPU.
The imaging model exposed by Vello CPU is very similar to that of current Vello.
Crates.io | Docs
This implementation is now broadly usable, with a reasonably complete imaging model and competitive performance.
It does not however have any API stability guarantees, as we intend to redesign the API to be consistent across the Vello renderers.
Performance information can be seen at https://laurenzv.github.io/vello_chart/ (although note that this URL is not "time-locked", so might shows results from a slightly newer or older version than this tag).
This release is a minor release of Vello Hybrid, which uses the CPU for preprocessing and the GPU for rasterization. The imaging model exposed by Vello Hybrid is very similar to that of current Vello.
Crates.io | Docs
This implementation is in its early stages and does not yet provide any API stability guarantees (see the roadmap for more details). It also doesn’t have feature parity with Vello CPU. A few known issues remain, which we plan to address soon.
This release also contains Vello Common, a support crate used by Vello CPU and Vello Hybrid.
Crates.io | Docs
Vello Common itself does not currently have any stable API surface, as it is only an implementation detail of Vello CPU and Vello Hybrid.
This release also contains Vello Sparse Shaders, a support crate used by Vello Hybrid.
Crates.io | Docs
This crate also does not currently have any public API surface.
Full Changelog: sparse-strips-v0.0.8...sparse-strips-v0.0.9
This release has an [MSRV][] of 1.88.
This release has an [MSRV][] of 1.88.
render_decoration on glyph run builders for rendering text decorations with skip-ink behavior. ([#1592][] by [@taj-p][])GlyphRunBuilder::font_embolden and glifo::FontEmbolden. ([#1628][] by [@jrmoulton][])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][])may_have_opacities and *_opacity_hint to may_have_transparency and *_transparency_hint. ([#1613][] by [@upsuper][])vello_api integration and api module. ([#1602][] by [@waywardmonkeys][])f32 to u8 conversion. ([#1563][] by [@LaurenzV][])This release has an [MSRV][] of 1.92.
This release has an [MSRV][] of 1.92.
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][])RenderMode::OptimizeQuality (f32) pipeline. ([#1343][] by [@tomcur][])Breaking change: Updated Peniko to v0.6.0. ([#1349][] by [@DJMcNab][])
This release has an [MSRV][] of 1.88.
See also the vello_hybrid 0.0.6 and vello_common 0.0.6 releases.
This release has an [MSRV][] of 1.88.
This release has an [MSRV][] of 1.88.
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])RenderContext now contains a push_clip_path and pop_clip_path method for performing non-isolated clipping. ([#1203][] by [@LaurenzV])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.None, Mirror, Wrap, Duplicate).
Uses an optimized decimated blur algorithm with automatic downsampling for performance.set_mask method to make it possible to mask rendered paths without inducing layer isolation. ([#1237][] by [@LaurenzV])See also the vello_hybrid 0.0.5 and vello_common 0.0.5 releases.
This release has an [MSRV][] of 1.86.
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.
This release has an [MSRV][] of 1.86.
This release has an [MSRV][] of 1.86.
No changelog was kept for this release.
See also the vello_common 0.0.3 release.
This release has an [MSRV][] of 1.85.
This release has an [MSRV][] of 1.85.
No changelog was kept for this release.
See also the vello_common 0.0.2 release.
This release has an [MSRV][] of 1.85.
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.
Your coding agent can read these notes before it upgrades. Set up the MCP server →