v4.0.0-beta.1
Pre-releasePre-release checkpoint toward v4.0.0, not a release in its own right. Per
docs/v4.0.0-plan.md:
betas are published as GitHub pre-releases, never as the repo's latest release, the same
mechanism already used for v2.0.0-kernel.1/v3.0.0-kernel.1. Confirm this looks right on your
own tooling before depending on it: correctly-formed SemVer prerelease tags are excluded from
"latest" resolution by both SwiftPM and the Swift Package Index by design.
The kernel does not move. Still OCCT V8_0_1 plus the seventeen carried patches pinned at
v3.0.0. Nothing in this checkpoint touches Package.swift's kernel pin.
Why v4.0.0 rather than a v3.x patch: five PRs merged since v3.0.0 already carry a MAJOR
## SemVer impact (Document.commitWithDelta()'s undo-limit regression, five nlPlateDeformed*
functions, OCCTDatumInfo.name's removal, and two Bool? migrations across checkOuterBound and
SAWireAnalysis), so the next tag is a major independent of anything in this beta. See the plan
doc for the full breaking-change register (assembled into SEMVER.md at the final v4.0.0 tag,
not per beta).
What's in this checkpoint
Milestone v4.0.0-beta.1, the loose tail
of small, already-scoped chores and doc fixes sitting in Pass 4a's orbit, now fully closed:
- #1010:
BRepGraphoccurrence placements are readable for the first time (shape(nodeKind: .occurrence, nodeIndex:)now applies the occurrence's placement), two orphaned bridge functions
resolved (Shape.edgeEdgeExtremaexposed,OCCTWireMakeWireFromEdgesremoved as redundant), and
a latent bug found along the way:kindFromInt()'s bridge-side node-kind translator never had
cases forProduct/Occurrence, silently mapping both toSolid. - #1044: 65
Class::Memberdoc attributions outside the refman-coverage audit's features lane,
adjudicated against the pinned OCCT 8.0.1 headers; all genuine drift corrected, all legitimate
exceptions recorded. - #1047:
Shape.withPrismnow does what its name and docs say (a feature prism), not an
extrude-plus-boolean. - #1052, #1062, #1063: gate-script and doc-comment accuracy fixes (
check-null-handle-guards.py,
derive-gdt-enums.py,Curve2D.Parameterisation/GD&T doc comments). - #949, #950, #951, #976: bridge-side duplication cleanup (document creation, naming trace,
format-enumeration, and OBJ/PLY export boilerplate). - #781: ten genuinely-computable arrow-notation qualifier sites resolved.
Plus, picked up alongside:
- #687:
Curve2D.swift's foreign material (the Gcc solver family,IntAna2d,Extrema2d, 962
lines across 13 declarations) split into dedicated files. Pure reorganization, no public API
change;#377's file-breakout workstream first item, sequenced ahead of the rest of v4.0.0's
scope so later lanes work in smaller files.
No public Swift API removed or changed signature in this checkpoint. The BRepGraph/
edgeEdgeExtrema additions are purely additive.
Verification
- Full
swift testclean (5,933+ tests) after both merges, no regressions. - All eight static gate scripts plus their
--self-tests clean. python3 Scripts/count-operations.py: 4,369, agrees with README/API_REFERENCE/docs/index.md
(unaffected by either merge, as expected: one is additive, the other is a pure file move).
What's next
Per the plan doc: v4.0.0-beta.2 is Pass 4b (#386, Drawing/2D annotation duplication audit) and
its findings, at minimum, opening at the same kind of natural boundary this one did. Further betas
follow roughly one per closed source lane, with v4.0.0 itself only once Phase 6 closes and the
plan's four release-candidate exit criteria are met with no new findings.