Skip to content

v3.0.0

Latest

Choose a tag to compare

@gsdali gsdali released this 18 Aug 20:24
0c9f927

macOS / iOS (device + simulator) | OCCT 8.0.1 + seventeen carried patches

A correctness and consolidation release. Read docs/SEMVER.md#v300 before upgrading from v2.x: it lists both breaking changes with the migration for each.

Breaking changes

Selector.SubShapeType.compsolid is renamed .compSolid (#844). Four independent Swift mirrors of TopAbs_ShapeEnum had drifted in casing; consolidating them onto ShapeType picks one spelling. Shape.ShapeFilterType becomes a ShapeType typealias in the same change, so its RawValue moves from Int32 to Int. Migration: rename the case; cast explicitly if you name the raw type.

Six bounding-box accessors become Optional (#943). Shape.bounds, Shape.size, Shape.center, Wire.bounds, Edge.bounds and Face.bounds returned (0,0,0)-(0,0,0) for a shape with no bounding box, indistinguishable from a genuine zero-size shape at the world origin. They now return nil, and the verdict is OCCT's own Bnd_Box::IsVoid() carried across the bridge as a Bool rather than inferred from the coordinates — inferring it would be the same fabrication relocated, since a vertex at the origin measures exactly (0,0,0)-(0,0,0) through BRepBndLib::AddOptimal. Shape.boundingBox already behaved this way and is unchanged. Migration: unwrap.

The kernel was rebuilt

The v2.0.0 asset carried fifteen patches. Two more had landed in Scripts/patches/ since and were in no built kernel, so both were exercised by no CI job at all:

  • 0026 (#905) — BRepOffsetAPI_ThruSections no longer marks a loft Closed(true) when it could not cap a non-planar extremity.
  • 0027 (#913) — CreateSmoothed refuses mismatched section edge counts under checkCompatibility(false) instead of overrunning a fixed-stride array.

Both fixes previously existed only in the source tree, so a consumer installing the package received neither. This asset is byte-identical to the v3.0.0-kernel.1 pre-release; checksum: is unchanged from it, only url: moved.

Also in this release

Duplication passes 2a and 2b (#382, #383) and the completion of the bridge sibling-entry-point census (#794); refman coverage audits for the Shape/Topology and Selection/Construction lanes (#808, #809), plus the over-coverage detector that makes those audits reproducible (#928); the upstream-OCCT fork workflow (#803); and code-style enforcement across the Swift and bridge layers (#876, #906, #942). Full detail in CHANGELOG.md.

Verification

Full suite 5618 tests / 1461 suites / 0 failures; ten gate scripts and nine --self-tests clean; operation count 4339 agreeing across README and API_REFERENCE; patch count agreeing across disk, Package.swift's enumeration and CLAUDE.md's prose at seventeen.

v3.0.0-kernel.1 is retained deliberately: commits in the window between the kernel rebuild and this release pin it, and deleting it would make them unbuildable from a clean checkout.