Releases: linebender/kurbo
polycool v0.4.0
This release has an MSRV of 1.85.
It is the first release since polycool was transferred to the Linebender organization.
Changed
Fixed
- Avoid potential underflow in
DynPoly::deriv(#502 by @jneem) - Avoid NaN during Newton iteration (#502 by @jneem)
Note: A changelog was not kept before this release
Full Changelog: v0.12.0...polycool-v0.4.0
v0.12.0
This release has an MSRV of 1.82. It was increased to support floating point math in const functions.
Added
- Newly public
StrokeCtxallows for reusing allocations when stroking multiple paths. (#475 by @LaurenzV) - New
Axistype. (#476 by @PoignardAzur) - Add
Ellipse::major_radiusandEllipse::minor_radiusmethods. (#497 by @tomcur)
Changed
- The implementation of stroking is much faster. (#427 by @raphlinus)
- More
Vec2methods can now be called inconstcontexts. (#479 by @tomcur) aspect_ratioonRectandSizehas been deprecated and replaced withaspect_ratio_width.
This is because the implementation ofaspect_ratioused the ratio of height to width, whereas
aspect rations are otherwise always ratios of width to height. (#486 by @ErisianArchitect and @DJMcNab)- Deprecated
contained_rect_with_aspect_ratio, replaced withinscribed_rect_with_aspect_ratio, which
incidentally also uses the usual definition of aspect ratio (where the old name didn't). (#486 by @DJMcNab) - Breaking change: The deprecated
offset::CubicOffsethas been removed, and replaced by
offset::offset_cubic. (#489 by @jneem) - Several methods marked
#[inline]. (#472, #480, #496 by @tomcur)
Fixed
- Improved cubic to quadratic conversion handling for degenerate cubic curves with 3-4 consecutive equal control points. The approximation now correctly handles edge cases where cubics degenerate to lines or single points, matching fonttools' cu2qu behavior. (#485 by @anthrotype)
- Fix miter join in dashed strokes. (#490 by @grebmeg)
Removed
- Breaking change:
DashIteratorhas been removed. ReplaceDashIterator::newwithdash. (#488 by @DJMcNab) - Breaking change: The previously deprecated
BezPath::flatten,Ellipse::[with_]x_rotation,{Rect, Size}::is_empty,Shape::[in]to_bez_path,
andTranslateScale::as_tuplehave been removed. (#487 by @DJMcNab)
New Contributors
- @PoignardAzur made their first contribution in #476
- @grebmeg made their first contribution in #490
Full Changelog: v0.11.3...v0.12.0
v0.11.3
This release has an MSRV of 1.65.
Added
- Add
current_positionmethod toBezPath. (#462 by @sagudev) - Add
Fromconversions betweeneuclidandkurbotypes behind theeuclidfeature. (#463 by @sagudev) - Add Green's theorem moments. (#452 by @simoncozens)
- Make
Vec2::splatpublic. (#469 by @xorgy)
Changed
-
Let more methods take
Into<Point>instead ofPoint. (#466 by @sagudev)Note: this can impact type inference.
-
Inline the
Mul<PathEl>implementation forAffine. (#461 by @LaurenzV) -
Inline the
nextmethod of theToQuadsiterator. (#460 by @LaurenzV) -
Avoid calling
f64::hypot, as it calls a slow library function. (#448 by @beholdnec, #451 by @raphlinus)
Fixed
- Documentation of
RoundedRectno longer incorrectly specifies the corner radii are equal. (#447 by @tomcur) - Fixed negative dash offset by normalization. (#454 by @sagudev)
- Use exact endpoints for
PathSeg. (#465 by @jneem)
New Contributors
- @beholdnec made their first contribution in #448
- @sagudev made their first contribution in #454
Full Changelog: v0.11.2...v0.11.3
v0.11.2
0.11.2 (2025-04-28)
This release has an MSRV of 1.65.
Added
Strokeis nowPartialEq,StrokeOptsis nowClone,Copy,Debug,Eq,PartialEq. (#379 by @waywardmonkeys)- Implement
SumforVec2. (#399 by @Philipp-M) - Add triangle shape. (#350 by @juliapaci, #387 by @tomcur)
- Implement
Div<f64>andMul<f64>forInsets. (#384 by @liferooter) - Add
Vec2::turn_90andVec2::rotate_scalemethods (#409 by @raphlinus) - Add
minandmaxmethods toSize. (#412 by @nils-mathieu) - Add an
INFNITYconstant toSize. (#413 by @nils-mathieu) - Add
BezPath::with_capacitymethod (#418 by @LaurenzV) - Add
Affine::scale_aboutandAffine::then_scale_about. (#429 by @xorgy)
Changed
- Reduce number of operations in
Triangle::circumscribed_circle. (#390 by @tomcur) - Numerically approximate ellipse perimeter. (#383, #407 by @tomcur)
- Always inline trivial casts, splats, and swizzles. (#428 by @xorgy)
Fixed
- Fix documentation of
Affine::svd. (#388 by @tomcur) - Fix documentation of cross product. (#409 by @raphlinus)
New Contributors
- @juliapaci made their first contribution in #350
- @tomcur made their first contribution in #383
- @Philipp-M made their first contribution in #399
- @liferooter made their first contribution in #384
- @LaurenzV made their first contribution in #418
- @xorgy made their first contribution in #429
Full Changelog: v0.11.1...v0.11.2
v0.11.1
0.11.1 (2024-09-12)
This release has an MSRV of 1.65.
Added
- Add
From (f32, f32)forPoint. (#339 by @rsheeter) - Add
Rect::overlapsandRect::contains_rect. (#347 by @nils-mathieu) - Add
CubicBez::tangents(#288 by @raphlinus) - Add
Arc::reversed. (#367 by @waywardmonkeys) - Add
CircleSegment::inner_arcandCircleSegment::outer_arc(#368 by @waywardmonkeys) - Add
Rect::is_zero_areaandSize::is_zero_areaand deprecate theiris_emptymethods. (#370 by @waywardmonkeys) - Add
Line::reversedandLine::midpoint. (#375 by @waywardmonkeys) - Allow construction of
Linefrom(Point, Point)and(Point, Vec2). (#376 by @waywardmonkeys)
Changed
- Move
Self: Sizedbound fromShapeto methods. (#340 by @waywardmonkeys) - Enable partial SVG path support in
no_stdbuilds. (#356 by @waywardmonkeys) - Deprecate
BezPath::flatten, preferflatten. (#361 by @waywardmonkeys)
Fixed
- An edge case in
mindistwas fixed. (#334 by @platlas) - Allow lines in simplify input. (#343 by @raphlinus)
- Don't skip first dash in dash pattern. (#353 by @dominikh)
- Documentation for
Arc.perimeterwas corrected. (#354 by @simoncozens) - Parsing scientific notation in an SVG path was fixed. (#365 by @GabrielDertoni)
New Contributors
- @nils-mathieu made their first contribution in #347
- @GabrielDertoni made their first contribution in #365
- @dominikh made their first contribution in #353
Full Changelog: v0.11.0...v0.11.1