PackageTrack
Sign in Get early access

tiny-skia-path

A tiny-skia Bezier path implementation

0.12.0 44M downloads/mo #1332 most downloaded on crates.io linebender/tiny-skia

What this package is like to depend on

Last release 6 months ago

02 Feb 2026

Ships unpredictably

gaps range from 8 days to 2.0 years

Nearly every release is documented

notes for 14 of 14 stable releases

Nothing withdrawn

no release was ever pulled

4 years old

14 releases · first in 2022

1 release in the last 12 months

see the full history below

Release timeline

14 releases · Jul 2022 to Feb 2026
2023 2024 2025 2026
Release Pre-release

Releases

latest 14
  1. 0.12.0 02 Feb 2026
    Release notes

    Update version numbers and changelog for v0.12.0 release.

    cargo-semver-checks says that tiny-skia-path also requires a
    semver-breaking release (and it looks like historically it's version has
    been locked to that of tiny-skia anyway), so I've also updated it's
    version number.

    Signed-off-by: Nico Burns [email protected]

    Open source →
    Release notes

    Fixed

    • Fixed a panic when drawing small anti-aliased rectangles. Thanks to @nwhitehead

    Added

    • 2-point conical gradient support for (RadialGradient). Thanks to @wmedrano
    • Sweep gradient support (SweepGradient). Thanks to @wmedrano
    • Support for a small number of color spaces. Thanks to @danieldg
    • Added the is_empty and join methods to Rect. Thanks to @danieldg
    • Implement Hash for PathVerb, Rect and Size and IntSize. Thanks to @LaurenzV
    • Add support for relaxed SIMD in WebAssembly. Thanks to @CryZe
    • Add the from_rgba_unchecked method to Color so it can be created in const contexts. Thanks to @jeffreyrosenbluth
    • Add the scale_by and scale_to method to Size. Thanks to @jermy
    • Add the take_demultiplied method to Pixmap. Thanks to @JustForFun88
    • Add the take method to Mask. Thanks to @valadaptive
    • Add the round_out method to Rect. Thanks to @valadaptive

    Changed

    • The RadialGradient::new requires a start radius now. Set the second argument to 0.0 to preserve the old behavior.
    Open source →
  2. 0.11.4 04 Feb 2024
    Release notes

    Fixed

    • Path::compute_tight_bounds calculation. Thanks to @qbcbyb
    Open source →
  3. 0.11.3 03 Dec 2023
    Release notes

    Added

    • Path::compute_tight_bounds
    Open source →
  4. 0.11.2 01 Oct 2023
    Release notes

    Changed

    • MSRV bumped to stable, because of the flate2 crate.

    Fixed

    • Transform::is_valid was treating 1/4096 as zero. We need a higher precision.
    • Build failure on AVX2 with --no-default-features. Thanks to @linkmauve
    Open source →
  5. 0.11.1 16 Jun 2023
    Release notes

    Changed

    • MSRV bumped to 1.60, because of the log crate.

    Fixed

    • LineJoin::MiterClip handling with small miter_limit. Thanks to @torokati44
    Open source →
  6. 0.11.0 08 Jun 2023
    Release notes

    Added

    Changed

    • Rect::inset and Rect::outset are no longer require a mutable self. Thanks to @wezm
    Open source →
  7. 0.10.0 27 May 2023
    Release notes

    Added

    • PathBuilder::push_path
    • NonZeroRect
    • Size
    • Rect::transform
    • Rect::bbox_transform
    • Transform::from_bbox
    • Transform::is_valid
    • Transform::get_scale
    • Transform::pre_rotate
    • Transform::post_rotate
    • Transform::pre_rotate_at
    • Transform::post_rotate_at
    • Transform::map_point

    Changed

    • ColorU8 and PremultipliedColorU8 are stored as [u8; 4] instead of u32. This fixes potential alignment issues and make the code easier to understand. Thanks to @e00E
    • PathBuilder::push_rect accepts Rect and not f32 numbers now.

    Removed

    • tiny_skia_path::ScreenIntRect. It become private.
    • Path::is_empty. Path cannot be empty by design.

    Removed

    • ColorU8::get and PremultipliedColorU8::get. Use the getters instead.
    Open source →
  8. 0.9.0 23 Apr 2023
    Release notes

    Added

    • Mask::from_vec
    • Mask::from_pixmap to convert Pixmap into Mask by extracting alpha or luminance.
    • Mask::width
    • Mask::height
    • Mask::data
    • Mask::data_mut
    • Mask::fill_path
    • Mask::decode_png
    • Mask::load_png
    • Mask::encode_png
    • Mask::save_png
    • Mask::invert
    • MaskType
    • Pixmap::apply_mask

    Changed

    • Rename ClipMask into Mask.
    • Mask is closer to a 8bit (A8) Pixmap now, rather than being its own thing.
    • Mask::new requires width and height arguments now.
    • Drawing on Mask using Mask::fill_path uses our SIMD pipeline now instead of a scalar code that should make it a bit faster.
    • Painting API no longer returns Option<()>, but simply adds a warning to the log.
    • Paint::anti_alias is set to true by default.

    Removed

    • Mask::set_path. Use Mask::fill_path instead.
    • Mask::default(). Mask cannot be empty anymore.
    Open source →
  9. 0.8.4 22 Apr 2023
    Release notes

    Added

    • Implement PartialEq for Paint and subtypes. Thanks to @hecrj

    Changed

    • MSRV bumped to 1.57, mainly because of the png crate.

    Fixed

    • ClipMasks larger than 8191x8191 pixels. Previously, the creation of a large mask via ClipMask::set_path would have created an empty mask.
    Open source →
  10. 0.8.3 05 Feb 2023
    Release notes

    Fixed

    • Performance regression, probably due to LLVM update in Rust. Thanks to @mostafa-khaled775
    • Big-endian targets support. Thanks to @ids1024
    Open source →
  11. 0.8.2 22 Oct 2022
    Release notes

    Added

    • Pixmap::from_vec.

    Fixed

    • Increase Conic to Quad conversion precision. This allows us to produce nicer round caps. Previously, they were not as round as needed.
    Open source →
  12. 0.8.1 29 Aug 2022
    Release notes

    Fixed

    • Conditional compilation of FasterMinMax on fallback platforms. Thanks to @CryZe
    Open source →
  13. 0.8.0 27 Aug 2022
    Release notes

    Added

    • AArch64 Neon SIMD support. Up to 3x faster on Apple M1. Thanks to @CryZe

    Changed

    • FiniteF32, NormalizedF32 and NonZeroPositiveF32 types have been moved to the strict-num crate.
    • Rename NormalizedF32::from_u8 into NormalizedF32::new_u8.
    • Rename NormalizedF32::new_bounded into NormalizedF32::new_clamped.
    • Use explicit SIMD intrinsic instead of relying on safe_arch.
    • MSRV bumped to 1.51
    Open source →
  14. 0.7.0 03 Jul 2022
    Release notes

    Added

    • tiny-skia-path dependency that can be used independently from tiny-skia. It contains the tiny-skia Bezier path implementation, including stroking and dashing. As well as all the geometry primitives (like Point and Rect).

    Changed

    • When disabling the std feature, one have to enable no-std-float feature instead of libm now.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive