NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1065 most downloaded on crates.io
Geometry primitives
Last release 6 months ago
18 Mar 2026
Release timing varies
gaps range from 9 days to 1.4 years
Rarely documented
notes for 12 of the last 60 stable releases
9 versions withdrawn
withdrawn after publishing
11 years old
99 releases · first in 2015
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Add component-wise multiplication of 2d and 3d vectors
Add component-wise multiplication of 2d and 3d vectors
Fixes #475
Improve the documentation of Transform3D::perspective
Improve the documentation of Transform3D::perspective
There was a bit of confusion about the formulation of the perspective transform in #465. This clarifies things.
(breaking change) Make intersection return Option
(breaking change) Make intersection return Option
Replaces #462
As I go through the webrender update I realize that returning Option<NonEmpty<Self>> adds way more friction than I anticipated. Pretty much all call sites have to be worked around in different ways. #462 helps for at least a good half of the call sites, but there are many other patterns, and I am not running into cases where NonEmpty is adding value, because we end up having to deal with storing something when the intersection is empty (the way webrender's code is shaped).
I'm very woriied that intersection is just going to be a pain to use by default, with NonEmpty providing more friction than value, so considering 0.21 is just out, I would rather make a early 0.22 now before a significant part of downstream users have had time to update to 0.21, and get rid of the thorn before we are stuck with it.
Note that for cases where Option<NonEmpty<Box2D>> would have been desirable, we can still write `b.intersection_unchecked(b2).to_non_empty(), which is not too inconvenient even if not the default.
Fixed backward 3d transform rotation.
Return true in the presence of NaN in is_empty_or_negative.
Return true in the presence of NaN in is_empty_or_negative.
Fixes #443 in which rect intersections don't behave as expected if there is a NaN (is_empty_or_negative returned false causing us to return broken intersection rect).
Beyond intersections, we use is_empty_or_negative to differentiate between rects with positive non-zero area and everything else which we treat as empty or invalid-in-the-sense-that-it-doesnt-contribute-to-rendering rectangles. NaN should be part of this cathegory.
for euclid 0.21 I plan to remove is_empty_or_negative and simply implement is_empty everywhere with the semantics of "every thing that is not a valid non-zero area rectangle" since that's what's useful. It's a breaking unfortunately but there's a number them motivating a 0.21 bump.
See also https://bugzilla.mozilla.org/show_bug.cgi?id=1650990
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
v0.20.3 Compare # Choose a tag to compare
v0.20.3
Compare
Nothing published for this version
v0.20.0 Compare # Choose a tag to compare
v0.20.0
Compare
Nothing published for this version
Nothing published for this version
Nothing published for this version
v0.19.6 Compare # Choose a tag to compare
v0.19.6
Compare
Nothing published for this version
Nothing published for this version
v0.19.3 Compare # Choose a tag to compare
v0.19.3
Compare
v0.19.2 Compare # Choose a tag to compare
v0.19.2
Compare
Nothing published for this version
v0.18.2 Compare # Choose a tag to compare
v0.18.2
Compare
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
v0.17.1 Compare # Choose a tag to compare
v0.17.1
Compare
v0.17.0 Compare # Choose a tag to compare
v0.17.0
Compare
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →