Skip to content

Releases: linebender/peniko

v0.5.0

01 Oct 16:01
15466cf

Choose a tag to compare

Crates.io | Docs

This release has an MSRV of 1.82.

Added

  • Style now implements PartialEq. (#114 by @liferooter)
  • Add Bgra8 variant to ImageFormat. (#120 by @sagudev)
  • Provide ImageAlphaType with ImageData. (#121 by @sagudev)
  • Breaking change: Add InterpolationAlphaSpace to Gradient to chose how color channels should be handled when interpolating between transparent colors. (#115 by @sagudev)

Changed

  • Breaking change: Each GradientKind now contains a corresponding internal struct, from struct variants.
    GradientKind::Linear { ... } is now written as LinearGradientPosition { ... }.into() (or, more explicitly, as GradientKind::Linear(LinearGradientPosition { ... })).
    The equivalent transform applies for GradientKind::Sweep { ... } and GradientKind::Radial { ... }. (#119 by @nicoburns)
  • Breaking change: Image has been renamed to ImageBrush, which now consists of an ImageData and an ImageSampler. (#117, #123 by @nicoburns, @DJMcNab)
    To create an ImageBrush easily, you can use ImageData {...}.into().
  • Breaking change: Font has been renamed to FontData to match ImageData. (#126 by @nicoburns)
  • Breaking change: The angle directions of SweepGradientPosition are now described to be clockwise in a Y-down coordinate system, as is common in computer graphics.
    This is reversed from the most likely reading of the previous wording.
    More generally, the angle directions are now described numerically to be unambiguous across coordinate systems.
    The angle unit is also now specified to be in radians. (#130 by @tomcur)
  • Breaking change: Update to Kurbo v0.12.0. (#127 by @nicoburns)
  • Mix::Clip is now deprecated. To access the same functionality of optimised clips in Vello, you should now use push_clip_layer. (#144 by @DJMcNab)

New Contributors

Full Changelog: v0.4.0...v0.5.0

v0.4.1

15 Sep 10:46
0c0b6d0

Choose a tag to compare

Crates.io | Docs

This release has an MSRV of 1.82.

Changed

Linebender Resource Handle

Peniko's Font (and therefore also Blob) are used as vocabulary types for font resources between crates.
However, this means that when Peniko made semver-incompatible releases, those crates could no longer (easily) interoperate.
To resolve this, Font, Blob, and WeakBlob are now re-exports from a new crate called Linebender Resource Handle.
These types have identical API as in previous releases, but will now be the same type across Peniko versions.

Full Changelog: v0.4.0...v0.4.1

v0.3.2

02 May 09:32
a454154

Choose a tag to compare

Crates.io | Docs

0.3.2 (2025-05-02)

This release has an MSRV of 1.82.

This change is a semver trick release, following the pattern documented at https://github.com/dtolnay/semver-trick.
Blob, WeakBlob and Font are now the types from Peniko's 0.4.0, which have the same public API as in the 0.3.0 series.
This enables compatibility between Vello 0.5.0 and Parley 0.3.0.

Full Changelog: v0.3.1...v0.3.2

v0.4.0

30 Apr 15:50
87be8cd

Choose a tag to compare

Crates.io | Docs

0.4.0 (2025-04-30)

This release has an MSRV of 1.82.

Added

Changed

Full Changelog: v0.3.1...v0.4.0

v0.3.1

20 Jan 13:36
0586f40

Choose a tag to compare

Crates.io | Docs

This release has an MSRV of 1.82.

Changed

Full Changelog: v0.3.0...v0.3.1

v0.3.0

18 Dec 16:41
bf5f998

Choose a tag to compare

Crates.io | Docs

This release has an MSRV of 1.82.

Added

  • Gradient, Image, Brush now have with_alpha and Gradient also gets a multiply_alpha (#67 by @waywardmonkeys)
  • Gradient now tracks a hue direction and interpolation color space (#71 by @waywardmonkeys)
  • Compose, Extend, Fill, and Mix now optionally impl bytemuck traits (#72 by @waywardmonkeys)
  • Add x/y extend modes and quality hint to images, rename Format to ImageFormat (#77 by @dfrg)

Changed

Removed

  • Removed the deprecated Gradient::with_alpha_factor in favor of Gradient::multiply_alpha (#82 by @waywardmonkeys)

Color Changes

The old code behind peniko::Color has been removed and color functionality is now provided by the [color] crate.

This leads to a number of breaking changes:

  • peniko::Color is now a type alias for AlphaColor<Srgb> from the color crate.
  • AlphaColor does not, at this time, impl Default, PartialOrd, or Hash.
  • ColorStop no longer impls Default or PartialOrd.
  • Brush, BrushRef, and ColorStop can be constructed from a variety of color types, although, for now, Brush and BrushRef convert this internally into an unclipped AlphaColor<Srgb>.
  • ColorStops is now a newtype wrapper, rather than a type alias for SmallVec.
    This allows it to be used with CacheKey from Color.
  • The color crate is re-exported as peniko::color, so access to functionality from there is easy.
  • The various pre-defined color constants like peniko::Color::YELLOW are no longer available.
    Instead, use the CSS palette provided within color: peniko::color::palette::css::YELLOW.
  • Similarly, parsing a color string is now provided by the color crate.

This is the first step towards providing better support for richer color functionality throughout the Linebender stack.

New Contributors

Full Changelog: v0.2.0...v0.3.0

v0.2.0

19 Sep 16:18
29d2486

Choose a tag to compare

Crates.io | Docs

This release has an MSRV of 1.70.

Added

Changed

  • Breaking: Mark Format as #[non_exhaustive] (#47 by @DJMcNab)
  • Rename with_alpha_factor to multiply_alpha (#52 by @DJMcNab)

Full Changelog: v0.1.1...v0.2.0

v0.1.1

27 May 15:59
22a89cb

Choose a tag to compare

Crates.io | Docs

Added

  • #26 - Add serde feature to enable serde support by @ratmice

New Contributors

Full Changelog: v0.1.0...v0.1.1

v0.1.0

14 Feb 17:55
e8e53e4

Choose a tag to compare

add features for kurbo's std/libm features (#23)

Co-authored-by: Daniel McNab <36049421+DJMcNab@users.noreply.github.com>