Open Cascade is publishing Open CASCADE Technology version 8.0.1, the first regular maintenance release in the 8.0 series.
This release consolidates the fixes, performance work, and build improvements merged after 8.0.0p1. The main focus is modeling reliability, shape healing, periodic geometry, meshing, STEP export, concurrent fillet construction, and Windows/MSYS2 build integration. The C++17 and core library API and ABI baseline established by 8.0.0.p1 remains unchanged.
The previous release notes are available in:
Highlights
- Boolean and periodic-curve stability: periodic B-spline parameters are normalized in constant time, preventing Boolean section operations from hanging when parameters are many periods outside the valid range.
- Shape-healing robustness: several crashes were fixed for missing pcurves, replaced faces, empty wire sequences, non-manifold boundaries, and periodic conical faces.
- Modeling performance: face validation with many disjoint holes is substantially faster, and curve-on-surface deviation checks avoid expensive global optimization when sampled geometry is already coincident within numerical precision.
- Thread-safe fillet reconstruction: independent fillet operations on separate threads no longer share reconstruction and solver scratch state.
- STEP export reliability: oversized STEP strings are split safely across output records, and missing writer healing parameters are restored before transfer.
- Gordon surface quality: rational curve networks, closed-network contact selection, deviation validation, and approximate fallback construction were improved.
- Periodic seam meshing: mesh constraints are created only for the pcurve belonging to the current wire occurrence, while all representations retain valid polygon-on-triangulation node indices.
- Windows/MSYS2 integration: CMake can discover system TBB packages on Windows and correctly resolve MSYS2 FreeType import libraries and runtime DLLs.
Modeling Algorithms
- Reworked
Geom_BSplineCurve::PeriodicNormalization()to shift a parameter by the required number of periods in one operation rather than repeatedly adding or subtracting the period. The implementation preserves the accepted closed-interval behavior at the last parameter and handles floating-point residuals for very large values. This removes the reported infinite loop in Boolean section processing. #1329 - Improved
GeomFill_Gordonconstruction for rational B-spline networks. Rational curves are reparametrized exactly when possible, homogeneous reference-surface weights are preserved, closed-network contacts are selected more reliably, and curve-to-surface deviation validation was strengthened. Approximate fallback construction now uses grid evaluators, with expanded regression coverage for rational, periodic, closed, and dense networks. #1335 - Fixed
BRepGProp_EdgeTool::IntegrationOrder()for Bezier and B-spline edges represented only by a curve on surface. The integration order now uses the adaptor's virtualNbPoles()method instead of dereferencing a missing 3D curve, preventing crashes when computing linear properties of degenerate or sewing-generated edges. #1382 - Guarded five missing-pcurve paths in
ShapeUpgrade_UnifySameDomain. Candidate edges without a pcurve are skipped, and cases without a usable current-edge pcurve fall back safely instead of dereferencing a null handle. This is particularly relevant to topology produced from mesh sewing or other partially defined inputs. #1392 - Optimized
BRepCheck_Face::ClassifyWires()for faces containing many holes. Wire UV bounding boxes are precomputed so disjoint wire pairs bypass exact containment classification, whileGeomLib_Tool::Parameter()uses closed-form parameter evaluation for elementary curves. The contributor's benchmark for 2,000 holes improved from 9.21 seconds to 1.11 seconds, approximately eight times faster. #1375 - Added a flat-deviation fast path to
GeomLib_CheckCurveOnSurface. Coincident elementary curve/surface compositions can now accept the existing sampled result without running PSO, Newton minimization, and fallback PSO; non-elementary cases receive an additional half-step validation before taking the shortcut. Reported Boolean workloads improved by roughly 17–20% in native and WebAssembly builds without changing result shapes or test outcomes. #1373 - Hardened
ChFi3d_Builder::StartSol()against invalid faces, edges, vertices, adaptors, and missing pcurves. Oversized or otherwise invalid chamfer construction now terminates withIsDone() == falsewhere possible instead of crashing in curve-on-surface evaluation. #1407 - Made fillet solid reconstruction reentrant across threads by converting cross-call reconstruction state and reusable blend scratch objects to
thread_local. IndependentBRepFilletAPI_MakeFilletoperations no longer race throughTopOpeBRepBuildstate and silently produce invalid solids. #1374
Modeling Data
- Validated edge ranges against the effective basis curve before constructing
Geom_TrimmedCurveinBRep_Tool::CurveOnPlane(). Nested trimmed curves are unwrapped for validation, bounded curves reject out-of-domain or zero-length ranges, and periodic curves retain support for shifted full-period ranges. #1402
Shape Healing
- Fixed
ShapeFix_Face::FixPeriodicDegenerated()when used without aShapeBuild_ReShapecontext. Healing a periodic conical face bounded by a single closed edge now preserves the result without unconditionally dereferencing a null context. [#1380] - Updated
ShapeFix_Face::Perform()to detect when an earlier operation has removed a face or replaced it with a non-face shape such as a compound. The existing replacement is returned directly instead of being cast back toTopoDS_Face, preventing heap corruption while healing self-intersecting faces split into multiple results. [#1323] - Ensured
ShapeAnalysis_FreeBoundsreturns an initialized empty wire sequence when no unconsumed edges remain after closed-loop extraction. Multiple disjoint closed components no longer propagate a null sequence intoNCollection_HSequence::Append(). [#1377] - Stabilized free-boundary connection for empty, manifold, and non-manifold wire inputs. Initialization now selects a valid manifold wire before processing, handles internal or external-only wires without stale loop state, and avoids invalid memory access when an iteration is skipped. [#1331]
- Restricted
ShapeAnalysis_FreeBounds::ConnectEdgesToWires()to forward and reversed boundary edges. Internal and external edges are skipped, while orientation changes are still mapped back to the correct original edge indices. [#1408]
Mesh
- Corrected constraint generation at periodic seams in
BRepMesh_BaseMeshAlgo. Only the pcurve corresponding to the current wire occurrence creates mesh links, avoiding duplicate constraints; all other pcurves still receive node indices soPoly_PolygonOnTriangulationdata remains valid. Regression coverage includes trimmed cylinders, Boolean-trimmed tori crossing a seam, and closed-cylinder seam polygons. [#1338]
Data Exchange
STEPControl_Writer::Transfer()now initializes missing shape-processing parameters before transfer. The same defaults are applied throughSTEPCAFControl_Writer, including after callers explicitly replace the parameter map with an empty map. [#1334]- Reworked
StepData_StepWriter::AddString()for text that cannot fit in the 72-character STEP output buffer. Oversized raw strings are emitted in chunks, and continuation indentation is dropped when it would leave no room for pending text, eliminating an infinite flush loop. [#1318]
Configuration, Documentation And Project Workflow
- Improved third-party discovery for Windows and MSYS2. CMake now supports system TBB discovery when no explicit OCCT third-party location is selected, preserves imported targets during CSF processing, recognizes MinGW FreeType import libraries and versioned runtime DLLs, and validates TBB-enabled MSYS2 GCC and Clang builds in CI. [#1403]
- Corrected obsolete APIs, links, terminology, examples, and contribution instructions across the documentation. Doxygen example paths are generated from OCCT package metadata, resource directories are included correctly, license markup was fixed, and obsolete documentation CMake, layout, and PDF-generation files were removed. [#1404]
- Replaced the bottle tutorial point diagram with a smaller, accessible SVG and aligned the illustrated point names with the tutorial source. [#1325](#1325)
- Added a GitHub pull-request template covering pre-submission checks, problem statement, proposed solution, validation, CLA confirmation, and reviewer notes. [#1411]
- Finalized the CMake version metadata as
8.0.1by removing the development suffix. [#1412]
New Contributors
- [@cmoliverio](https://github.com/cmoliverio) made their first contribution in [#1325].
- [@bwross](https://github.com/bwross) made their first contribution in [#1375].
- [@andymai](https://github.com/andymai) made their first contribution in [#1373].
- [@davidgilkaufman](https://github.com/davidgilkaufman) made their first contribution in [#1331].
Thanks to all contributors who reported, investigated, tested, reviewed, and fixed issues for this maintenance release: @AtheneNoctuaPt, @dpasukhi, @gsdali, @cmoliverio, @bwross, @andymai, and @davidgilkaufman.
Full Changelog: V8_0_0_p1...V8_0_1