Files
pdfcraft/vendor/vello_cpu/CHANGELOG.md
T
KenM76andClaude Opus 5.5 05630b5f15 fix(render): a gray drawn with the Color blend mode is no longer drawn black
vello_cpu 0.0.8's clip_color, shared by the nonseparable blend modes,
divided 0 by 0 when a gray's equal components were rounded just below 0
or above 1 after set_lum. The NaN drew the pixel black at the source's
alpha whatever the backdrop: nine gray levels under /BM /Color in an
empty isolated group (0.96 g among them) rendered (0, 0, 0), and two
more at half opacity came out wrong.

Vendor vello_cpu 0.0.8 (Apache-2.0 OR MIT) with a backport of
linebender/vello#2000, which clips only when the denominator is
positive. No vello_cpu release carries the fix yet; drop the copy when
one does.

Tests in it::nonseparable_gray run every gray level. The two Color
ramps fail with the unpatched blend.rs. The Luminosity ramp (black over
each opaque gray, upstream's other case) passes either way here: pages
use the u8 pipeline, and that case only failed in the f32 one; it stays
as a guard.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SqmHYx8FiWM5PcsoiErgp9
2026-10-28 14:45:32 -04:00

9.7 KiB

Changelog

Unreleased

This release has an MSRV of 1.88.

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.