Skip to content

Releases: iShape-Rust/iOverlay

v7.0.0

01 Jun 09:16
110bb32

Choose a tag to compare

Highlights

  • New templated solver with i16, i32, and i64 support.
  • New EdgeOverlay API to preserve edge information after boolean operations.
  • Performance improvements on huge datasets, around 10-15%.

v6.0.0

02 May 11:35

Choose a tag to compare

Migration: FloatPointCompatible now uses an associated scalar type

FloatPointCompatible no longer takes the scalar as a generic parameter. Implementations should define type Scalar instead.

Before:

impl FloatPointCompatible<f32> for MyPoint {
    fn from_xy(x: f32, y: f32) -> Self { ... }
    fn x(&self) -> f32 { ... }
    fn y(&self) -> f32 { ... }
}

After:

impl FloatPointCompatible for MyPoint {
    type Scalar = f32;

    fn from_xy(x: f32, y: f32) -> Self { ... }
    fn x(&self) -> f32 { ... }
    fn y(&self) -> f32 { ... }
}

Public float overlay APIs were simplified accordingly. Types that previously carried both point and scalar generics now generally use only the point type, with scalar values expressed as P::Scalar.

v5.0.0

22 Apr 19:25
fc15109

Choose a tag to compare

Starting with 5.0.0, i_overlay follows SemVer release cycles.

Changes

  • Switched release policy to SemVer.
  • Added cargo-semver-checks to CI.

v4.5.0

22 Mar 18:02
3c4e3f0

Choose a tag to compare

Changes

  • Changed: Reworked buffering algorithm. Now it's relay on default boolean overlay graph. Old legacy buffering overlay graph removed. New algorithm must be more precision stable and safe.
  • Added: Unit tests.

v4.2.1

18 Jan 09:48

Choose a tag to compare

Changes

  • Changed: License updated from MIT to dual MIT OR Apache-2.0.
  • Added: Integration tests.

v4.2.0

31 Dec 10:32

Choose a tag to compare

Changes

  • Added OGC-valid output mode to split composite holes into valid contours.
  • Added fixed-scale/grid_size float overlay support to make operations more stable and predictable.

v4.0.0

26 May 19:02

Choose a tag to compare

Added

  • no_std support
    std math replaced with libm.

Modified

  • Memory-efficient API
    FloatOverlay and Overlay use a reusable buffer to reduce allocation overhead, improving performance by 5–15% in repeated operations.
    OverlayGraph is now a reference view (no longer owns geometry data)

  • Optional multithreading
    allow_multithreading is now an optional feature and disabled by default.

v3.3.0

27 Apr 17:34

Choose a tag to compare

Fixed

API Design: options were mistakenly present in both the constructor and the custom function. Now they are only in the constructor.

v3.2.0

23 Apr 12:48

Choose a tag to compare

Modified

Area type changed: usize -> u64
Using usize caused incorrect results on WebAssembly.

v3.1.1

22 Apr 11:32

Choose a tag to compare

Added

IntOverlayOptions: options for integer boolean operations.

  • preserve_input_collinear: Preserve collinear points before operations.
  • output_direction: Desired output winding order.
  • preserve_output_collinear: Preserve collinear points after operations.
  • min_output_area: Minimum area threshold for output contours.

OverlayOptions<T>: options for float boolean operations.

  • preserve_input_collinear: Preserve collinear points before operations.
  • output_direction: Desired output winding order.
  • preserve_output_collinear: Preserve collinear points after operations.
  • min_output_area: Minimum area threshold for output contours.
  • pub clean_result: If true, the result will be cleaned from precision-related issues (moved from ContourFilter)

❌ Removed

ContourFilter<T>: Previously used for controlling output simplification and area threshold; now replaced by the more unified OverlayOptions.