Open CASCADE Technology 8.0.0 Release

Forums: 

Open Cascade is delighted to announce the final release of Open CASCADE Technology version 8.0.0 to the public.

8.0.0 is the largest single-version step in OCCT in many years. The cycle covered five Release Candidates and three Beta builds and accumulated more than 500 changes since 7.9.0.

More details: https://github.com/Open-Cascade-SAS/OCCT/releases/tag/V8_0_0

The full per-area release notes are linked below. Migration guidance is on the developer portal: https://dev.opencascade.org/doc/overview/html/occt__upgrade.html (the page may take a short time to refresh after the tag).

Per-stage release notes

Highlights

  • C++17 baseline: the codebase uses std::variant, std::optional, std::string_view, std::shared_mutex and structured bindings throughout. Pre-C++17 compilers are no longer supported.
  • Standard exceptions: Standard_Failure derives from std::exception (what(), ExceptionType() are exposed); Raise(), Throw() and Instance() static helpers are gone, exceptions use throw. Error handler stack is thread_local.
  • Standard threading: Standard_Mutex and TopTools_MutexForShapeProvider were retired in favour of std::mutex. Standard_Condition was rebuilt on top of standard primitives.
  • Geometry evaluation redesign: 32 leaf Geom*/Geom2d* curve and surface classes use EvalD0/EvalD1/EvalD2/EvalD3/EvalDN returning POD result structs. The 29 concrete leaves are final. Adaptor dispatch is devirtualized through std::variant.
  • New differential-properties packages: Geom2dProp, GeomProp, BRepProp replace the legacy macro-based LProp family with std::variant-dispatched evaluators and result structs.
  • GeomBndLib package: per-type bounding-box evaluators with analytical solutions for conics and quadrics; BndLib now forwards to it.
  • ExtremaPC package: point-to-curve extrema with per-geometry std::variant dispatch.
  • Gordon surface construction: GeomFill_Gordon and GeomFill_GordonBuilder for transfinite interpolation on N x M curve networks.
  • Helix toolkit (TKHelix): geometric helix curve adaptor and topological builders.
  • BRepGraph: a graph-based representation of topology and BRep geometry, complementary to TopoDS_Shape. Typed identifiers, multiple Views, bidirectional traversal, an extensible Layer/Cache system, history, deduplication, validation, and roundtrip conversion to and from TopoDS_Shape.
  • TopoDS optimization: TopoDS_TShape carries shape type plus eight flags in a bit-packed uint16_t, so ShapeType() is non-virtual. TopAbs::Compose/Reverse/Complement are inline noexcept. TopoDS_Iterator supports range-based for.
  • BSpline/Bezier: direct array members, always-populated weights backed by a static unit-weights view, faster BSplCLib interpolation. Several long-standing bugs corrected.
  • NCollection refresh: new FlatMap/FlatDataMap (Robin Hood), OrderedMap/OrderedDataMap (insertion-order), KDTree (header-only), LinearVector (contiguous flat buffer), DynamicArray rebuilt for O(1) indexed access. Unified Contained()/TryEmplace()/TryBind()/Items() API. Size() returns size_t (use Length() for int-typed APIs). IncAllocator fast path is lock-free.
  • Shader-based infinite grid: V3d_RectangularGrid and V3d_CircularGrid unified onto a single shader path with infinite extent, sub-pixel AA, arbitrary gp_Ax3 plane, and bounded clipping. The classical CPU grid is preserved alongside for legacy GL profiles.
  • Selection through group flipping: Graphic3d_Flipper brings flip-aware BVH bounds and frustum overlap testing in line with rendering, fixing missed clicks on AIS_TextLabel and PrsDim_Dimension after camera rotation. Polyline strict-inclusion selection works for all sensitive types.
  • BVH-accelerated polyhedra interference: IntPatch_PolyhedronBVH with dual-tree traversal replaces pairwise triangle scans in IntPatch_InterferencePolyhedron::Interference().
  • STEP: stream-based DE_Wrapper read and write; thread-safe STEP read and write under one-instance-per-thread; STEP General Attributes export, coordinate system connection points import, PMI measurement scaling, ~20% smaller files through duplicate-entity removal, smaller Direction entity. IGES read remains non-thread-safe.
  • Mesh: registry-based factory (BRepMesh_DiscretAlgoFactory) replacing the DISCRETPLUGIN/DISCRETALGO symbol-based plugin system; TKMesh and TKXMesh can be loaded together.
  • Shape Healing: ShapeBuild_ReShape cycle/leaf resolution and DFS guards eliminate stack overflows and edge multiplication on shapes with shared sub-shapes.
  • Numerical solvers: MathPoly_Laguerre for general polynomial roots; coordinate-wise Brent polishing for PSO and DE solvers improves precision by 4 orders of magnitude on separable functions; unified fixed-size 2D/3D/4D Newton API.
  • Build: CMake 3.16+, ARM64 a first-class target on macOS and Windows, comprehensive VCPKG support and upstream opencascade port. VTK is no longer enabled by default: set USE_VTK=ON to opt in.
  • Repository layout: sources reorganized to src/Module/Toolkit/Package/File. Inspector and ExpToCas extracted to their own repositories. GTest is the unit-testing framework; many QADraw tests were migrated to it.
  • Removed: OSD_MAllocHook, QANCollection, PLib_Base, PLib_DoubleJacobiPolynomial, Standard_Mutex-based code paths, TColGeom/TColGeom2d/Geom2dLProp/LProp3d typedef-only packages, BRepMesh_PluginMacro/PluginEntryType/FactoryError.

Best regards, OCCT3D Team!