linesweeper 0.4.0

Robust sweep-line algorithm and two-dimensional boolean ops
Documentation
# Changelog

## 0.4.0 - 2026-06-14

0.4.0 is the first release with a changelog entry; for previous releases, we
didn't have enough users to worry about it.

### Changed

- There is a new "approximate" output mode, which is now the default. Previous
  versions of linesweeper provided strong correctness guarantees, but those
  guarantees made some cases slow and caused more subdivisions than necessary.
  Also, I think that those stronger guarantees are probably not needed for most
  applications -- other boolean ops libraries don't provide them as far as I
  know. So linesweeper now provides weaker guarantees by default. For the old
  behaviour, see `Topology::contours_correct`.
- The winding direction conventions have changed; output curves have been
  reversed, so that they agree with `kurbo`'s conventions.
- The `BinaryWindingNumber` API has changed; it now uses the `OneOfTwo` enum to
  distinguish the two sets, instead of a `bool`.

### Added

- The new `Topology::has_normal_contours` and `Topology::is_disjoint_tags` allow
  for detecting some no-op (or approximate no-op) situations.