github Open-Cascade-SAS/OCCT V8_0_0_rc5

pre-release6 hours ago

Open Cascade is delighted to announce the release of Open CASCADE Technology version 8.0.0 Release Candidate 5 to the public.

Overview

Version 8.0.0-rc5 is a candidate release incorporating 64 improvements and bug fixes compared to version 8.0.0-rc4, bringing the total improvements since version 7.9.0 to over 460 changes.

This release focuses on:

  • Gordon surface construction: New GeomFill_Gordon / GeomFill_GordonBuilder classes implementing transfinite interpolation from N x M curve networks via the Boolean sum formula, generalizing GeomFill_Coons (4-boundary patch) to arbitrary curve grids with automatic intersection detection, reparametrization, and parallel processing support
  • BRepGraph -- graph-based BRep representation: New foundation for topology representation as incidence tables (BRepGraph public API + BRepGraphInc internal structure), with bidirectional traversal, typed node IDs, extensible Layer/Cache system, deduplication, history tracking, mutation guards, and roundtrip conversion to/from TopoDS_Shape
  • Modern differential properties packages: New Geom2dProp, GeomProp, and BRepProp packages replace the legacy macro-based LProp/.gxx pattern with C++17 std::variant-dispatched evaluators, result structs instead of exceptions, derivative caching, and per-geometry optimizations
  • Geometry-aware bounding boxes: New GeomBndLib package with per-type evaluators for all Geom curve/surface types, std::variant-based dispatch, analytical solutions for conics/quadrics, and PSO+Powell optimization for tight BoxOptimal results; BndLib delegated to GeomBndLib internally
  • New evaluation and extrema packages: GeomEval/Geom2dEval evaluation-focused geometry classes (Bezier surfaces, helicoids, spirals, ellipsoids), ExtremaPC point-to-curve extrema with per-geometry std::variant dispatch and grid evaluation
  • API modernization: Return-by-value handle APIs with deprecated out-parameter overloads, removed TColGeom/TColGeom2d packages, harmonized GC/gce maker APIs, new string operators, configurable GeomHash tolerances
  • Thread-safety and performance: Data race fixes in BRepCheck_* and Foundation globals, TopExp_Explorer stack refactored to NCollection_LocalArray, BSpline span location optimization, transformed surface caching, memory management improvements in Boolean operations

What is a Release Candidate

A Release Candidate is a tag on the master branch that has completed all test rounds and is stable to use. Release candidates progress in parallel with maintenance releases, with the difference that maintenance releases remain binary compatible with minor releases and cannot include most improvements. The cycle for a release candidate is planned to be 5-10 weeks, while maintenance releases occur once per quarter.


What's New in OCCT 8.0.0-rc5

Foundation Classes

Collection Improvements

  • NCollection_FlatMap/FlatDataMap optimizations #1103, #1108: Internal optimizations for Robin Hood hash maps -- aligned lookup paths, improved probe sequence handling, updated usage notes

  • NCollection_ForwardRange #1166: New lightweight forward-range adapter providing begin()/end() iteration over non-owning index spans, enabling range-based for loops over graph node collections

  • NCollection_DynamicArray extensions #1167: New InsertBefore()/InsertAfter() helpers with element shift semantics

  • NCollection_LocalArray for non-trivial types #1181: Extended to support elements with constructors/destructors using placement-new and explicit destruction, enabling use as a stack for non-POD types

  • NCollection_KDTree extensions #1167: New callback-based range query API for custom filtering during spatial searches

  • Container usage optimizations #1102: Hot-path optimizations in TKBO/TKOffset/TKOpenGl -- BOPTools_Set storage switched from NCollection_List to NCollection_Vector, reduced redundant lookups/copies in BOPAlgo_Builder, replaced std::map/std::set with NCollection_DataMap/NCollection_Map in ray-tracing state

String Enhancements

  • New string operators #1188: Added AssignCat(int/double) and Cat(int/double) overloads to TCollection_ExtendedString (plus operator+=/operator+). Added AssignCat(TCollection_ExtendedString, replaceNonAscii) and wide-char (wchar_t*) append/concat helpers to TCollection_AsciiString

Math and Solver Enhancements

  • Modern Math API alignment* #1134: Aligned modern MathRoot/MathSys/MathLin APIs with legacy math_* behavior for consistent results

  • math_FunctionRoot constructor safety #1121: Guarded Sol.NbIterations() calls with if (Done) check, preventing StdFail_NotDone exception during construction when root is not found

PointSetLib Package

  • New PointSetLib package #1140: Standalone point cloud analysis in TKMath without GProp_GProps inheritance:
    • PointSetLib_Props: Weighted point set properties (mass, barycentre, inertia matrix via Huygens theorem)
    • PointSetLib_Equation: PCA-based dimensionality analysis (point/line/plane/space detection) with principal axes and extents
    • Deprecates GProp_PGProps, GProp_PEquation, GProp_CelGProps, GProp_SelGProps, GProp_VelGProps
    • Removed GProp_EquaType enum (zero consumers)

Thread Safety

  • Fix thread-safety data races #1180: Refactored BRepCheck_* result classes to use always-present mutex with parallel-mode guard. Made Foundation-level globals thread-safe via std::atomic, added mutex-based protection for lazy initialization, introduced std::call_once for Windows host initialization. Converted several TKBool global mutable statics to thread_local

Modeling Data

BRepGraph -- Graph-Based BRep Representation

  • New BRepGraph foundation #1166: A graph-based representation of topology and BRep geometry as an alternative to the TopoDS_Shape linked data structure. The foundation provides two levels:

    • BRepGraph (public): Graph representation with typed BRepGraph_NodeId identifiers, multiple View classes (TopoView, RefsView, CacheView, BuilderView), bidirectional parent/child exploration (BRepGraph_ChildExplorer, BRepGraph_ParentExplorer, BRepGraph_WireExplorer), definition and reference iterators (BRepGraph_DefsIterator, BRepGraph_RefsIterator), extensible Layer/Cache system, mutation guards (BRepGraph_MutGuard), history tracking (BRepGraph_History), deduplication (BRepGraph_Deduplicate), compaction (BRepGraph_Compact), deep copy (BRepGraph_Copy), and validation (BRepGraph_Validate)
    • BRepGraphInc (internal): Incidence table storage with BRepGraphInc_Populate (TopoDS_Shape -> BRepGraph) and BRepGraphInc_Reconstruct (BRepGraph -> TopoDS_Shape) roundtrip conversion
    • BRepGraph_Tool: Centralized geometry access API (analogue of BRep_Tool) for extracting curves, surfaces, locations, tolerances, and flags from graph nodes
    • BRepGraph_Builder: Programmatic graph construction without requiring an input TopoDS_Shape
    • 49,000+ lines of new code with comprehensive GTest coverage (20+ test files covering build, explore, copy, deduplicate, history, events, geometry, polygons, transforms, validation, version stamps, views)
  • BRepGraph iterators, ref caching, mutation APIs, and layer events #1190: Extensions to the BRepGraph foundation:

    • New iterators: BRepGraph_RelatedIterator (navigate related entities), BRepGraph_CacheKindIterator (iterate cache by entity kind), BRepGraph_LayerIterator (iterate registered layers)
    • BRepGraph_RefTransientCache: Cache for transient data associated with refs
    • Builder::AppendFull: Full node append with all properties
    • BuilderView::RemoveRef with orphan pruning
    • Mutation APIs: SetCoEdgePCurve, ClearFaceMesh, ClearEdgePolygon3D, ValidateMutationBoundary
    • Layer event propagation: ref-modification events through LayerRegistry (deferred/immediate modes)
    • CreateAutoProduct option in BRepGraphInc_Populate::Options
    • Renamed CoEdgeDef::Sense to Orientation, FreeChildRefIds to AuxChildRefIds

Geometry Evaluation Classes

  • New Eval geometry classes #1104: Evaluation-focused geometry classes extending the Geom/Geom2d hierarchies:

    • 2D: Geom2dEval_TBezierCurve, Geom2dEval_AHTBezierCurve, Geom2dEval_SineWaveCurve, Geom2dEval_ArchimedeanSpiralCurve, Geom2dEval_LogarithmicSpiralCurve, Geom2dEval_CircleInvoluteCurve
    • 3D curves: GeomEval_TBezierCurve, GeomEval_AHTBezierCurve, GeomEval_SineWaveCurve, GeomEval_CircularHelixCurve
    • 3D surfaces: GeomEval_TBezierSurface, GeomEval_AHTBezierSurface, GeomEval_CircularHelicoidSurface, GeomEval_EllipsoidSurface, GeomEval_HyperboloidSurface, GeomEval_ParaboloidSurface, GeomEval_HypParaboloidSurface
    • EvalRep descriptors moved to Geom2dEval/GeomEval packages and wired into adaptor EvalD* dispatch paths
  • GeomEval_TBezierSurface derivative optimization #1114: Extracted common subexpressions in EvalD2 (6 products) and EvalD3 (10 products) to avoid redundant multiplications

  • GeomEval_TBezierSurface MSVC fix #1145: Aligned IsCNu()/IsCNv() signatures with Geom_Surface base class to fix MSVC C4373 warnings

Differential Properties Packages

  • New Geom2dProp package #1113: Modern 2D curve differential properties replacing the Geom2dLProp macro-based pattern. std::variant-dispatched per-geometry evaluators (Line, Circle, Ellipse, Hyperbola, Parabola, BezierCurve, BSplineCurve, OffsetCurve, OtherCurve) computing tangent, curvature, normal, centre of curvature, curvature extrema, and inflection points. Returns result structs with IsDefined flags instead of exceptions. 106 GTests

  • New GeomProp package #1115: Modern 3D curve and surface differential properties. 9 curve evaluator types + 11 surface evaluator types computing local properties via first/second fundamental forms. Surface curvatures computed via the Weingarten map with correct sign convention. 48 GTests

  • New BRepProp package #1116: Thin wrapper over GeomProp free functions for BRep edges/faces. Includes static Continuity() methods replacing BRepLProp::Continuity. 18 GTests

  • Derivative caching #1152: Added per-parameter derivative caching to GeomProp/Geom2dProp evaluators. Direct construction from geometry handles bypassing adaptor creation. DynamicType() comparison instead of IsKind() virtual walks. Domain structs for trimmed geometry bounds. Improved MathRoot_Multiple robustness with doubled minimum sampling

  • Prop packages extended #1125: Per-type GTests and shared analysis tools across all Prop packages

  • Enforce construction-time initialization #1118: Replaced two-step initialization (default constructor + Initialize()) with direct construction for 8 Prop and GridEval classes. Objects are now always in a valid state after construction

  • Fix BRepProp_Curve continuity mapping #1141: Fixed condition to include GeomAbs_G2 and higher for D1 evaluation, matching GeomProp_Curve

LProp Modernization

  • Unify LProp packages #1156: Consolidated duplicated property computation classes (GeomLProp_CLProps, Geom2dLProp_CLProps2d, LProp3d_CLProps, BRepLProp_CLProps, HLRBRep_CLProps and SLProps counterparts) into unified template classes GeomLProp_CLPropsBase/GeomLProp_SLProps with policy-based access. Moved LProp/GeomLProp/GProp packages from TKG2d/TKG3d to TKGeomBase. Removed Geom2dLProp and LProp3d packages. Backward-compatible type aliases preserved

  • Modernize LProp .gxx templates #1155: Converted legacy .gxx generic templates into .pxx private utilities

  • Remove LProp_AnalyticCurInf #1159: Removed dead files and related references

GeomBndLib Package

  • New GeomBndLib package #1136: Geometry-aware bounding box computation for all standard Geom curve/surface types, replacing the monolithic BndLib switch-based approach:

    • GeomBndLib_Curve / GeomBndLib_Curve2d / GeomBndLib_Surface: Public dispatchers using std::variant with Box()/BoxOptimal() (return by value) and Add()/AddOptimal() (mutate reference) APIs
    • Specialized analytical evaluators for Line, Circle, Ellipse, Hyperbola, Parabola (exact conic arc bounds)
    • BSpline/Bezier: knot-span FillBox with convex hull reduction, BSplCLib::Hunt-based pole index selection avoiding Copy()/Segment() allocation
    • Surfaces: analytical solutions for Plane, Sphere, Cylinder, Cone, Torus; revolution/extrusion surfaces with circle-arc bounding at extremal positions
    • BoxOptimal: PSO + Powell per-coordinate minimization for tight bounds
    • Comprehensive GTest suite covering all types including tilted tori, degenerate cases, and offset geometry
  • BndLib delegation to GeomBndLib #1137: Replaced monolithic switch statements in BndLib_Add3dCurve, BndLib_AddSurface, and BndLib_Add2dCurve with thin wrappers delegating to GeomBndLib. Removed dead internal helpers. Public BndLib API preserved unchanged

  • GeomBndLib refinements #1187: Refined BSpline parameter handling for periodic curves, improved grid sampling for BSpline surfaces

GeomAdaptor Enhancements

  • GeomAdaptor_TransformedCurve #1139: New base class for BRepAdaptor_Curve wrapping a GeomAdaptor_Curve (or Adaptor3d_CurveOnSurface) with an applied gp_Trsf transformation. Unified EvalD* as primary virtual evaluation methods across all Adaptor3d_Curve and Adaptor3d_Surface subclasses -- Value()/D0-DN become non-virtual inline wrappers. Refactored 15+ adaptor classes to use this pattern

  • Transformed surface caching #1147: Added cached transformed data in GeomAdaptor_TransformedSurface rebuilt on constructor/Load/SetTrsf. New original/transformed surface accessors; deprecated legacy GeomSurface() usage. Exposed ToleranceU()/ToleranceV() on GeomAdaptor_Surface

Other Modeling Data Improvements

  • Remove TColGeom2d and TColGeom packages #1110: Removed these empty/typedef-only packages from TKG2d and TKG3d

  • Fix IsClosed/IsPeriodic tolerance #1109: IsClosed() methods across curve/surface classes used gp::Resolution() (~1e-290) making the check practically unusable. Replaced with Precision::Computational() (~DBL_EPSILON). Trimmed curve/surface IsClosed()/IsPeriodic() now detect integer-period spans via std::remainder(). Added 271 new GTests for TKG2d

  • Update AppCont_ContMatrices #1117: Replaced public interface with internal namespace-based .pxx header structure. Fixed out-of-bounds read in IBPMatrix for classe=26 by adding 3 missing data entries

  • AdvApp2Var modernization #1127: Reorganized private data/init code, modernized legacy types

  • Harden geometry builders #1129: Fixed perpendicular direction fallback branches in gce_MakeCone/gce_MakeCylinder, propagated status from delegated builders in GCE2d_MakeCircle/GC_MakePlane, replaced hardcoded tolerances with Precision::Confusion(), added near-zero guards in gce_MakeElips/gce_MakeHypr

Modeling Algorithms

Gordon Surface Construction

  • New Gordon surface construction #1131: Implements transfinite interpolation from curve networks via the Boolean sum formula: S = S_profiles + S_guides - S_tensor:
    • GeomFill_GordonBuilder: Low-level kernel accepting pre-compatible BSpline curves with known intersection parameters. Builds three intermediate surfaces (skin profiles, skin guides, tensor product) then computes the Boolean sum. Supports closed (periodic) curve networks with C2-continuous periodic interpolation
    • GeomFill_Gordon: High-level wrapper handling arbitrary Geom_Curve inputs, automatic intersection detection, network sorting/orientation, approximation-based reparametrization with kink preservation, scale-relative tolerances, closedness detection, and OSD_Parallel acceleration
    • Approx_BSplineApproxInterp: New constrained least-squares B-spline approximation with exact interpolation constraints via a KKT saddle-point system, used internally by the reparametrization pipeline
    • 45 GTests covering bilinear through 6x6 networks, reversed/shuffled inputs, scaled geometry, surface continuity, and the Boolean sum mathematical property

ExtremaPC Package

  • New ExtremaPC package #1168: Point-to-curve extrema computation using std::variant-based dispatch over per-geometry evaluators:
    • Specialized evaluators: ExtremaPC_Line, ExtremaPC_Circle, ExtremaPC_Ellipse, ExtremaPC_Hyperbola, ExtremaPC_BezierCurve, ExtremaPC_BSplineCurve, ExtremaPC_OffsetCurve
    • ExtremaPC_Curve: Aggregator dispatcher with unified API
    • ExtremaPC_GridEvaluator: Grid-based sampling for initial extrema bracketing
    • ExtremaPC_DistanceFunction: Distance function for root-finding refinement

BRepClass Refactoring

  • Refactor BRepClass and FaceClassifier #1167: Migrated TopClass_FaceClassifier/TopClass_Classifier2d implementations from .gxx templates to .pxx utilities. Updated BRepClass/Geom2dHatch wrappers. Removed _0.cxx generator glue files

Performance Optimizations

  • BSpline span location optimization #1174: Non-periodic fast-path in countSpanSize() using next-knot boundary comparison. Span reuse in curve/surface grid loops based on cached span end knot value

  • TopExp_Explorer stack refactoring #1181: Replaced NCollection_Vector-based stack with NCollection_LocalArray and explicit stack-top index management for better cache locality and reduced allocations

  • BOPAlgo_PaveFiller memory management #1044: Improved allocator usage in Boolean operations -- SubShapesOnIn() uses const references instead of copying 4 IndexedMaps, explicit allocator choice comments, reduced memory accumulation

  • GeomHash configurable tolerances #1169: Added CompTolerance and HashTolerance fields + constructors to all geometry hashers. Replaced hardcoded 1e-12 throughout

Bug Fixes

  • Fix segfault in ChFi3d_Builder::IntersectMoreCorner #1163: Added null guards for two crash sites where topology map lookups fail on shapes from prior boolean/chamfer operations due to stale TShape pointers. Exceptions caught by Compute() resulting in graceful IsDone() == false instead of crash

  • Fix multiple bugs in TKGeomAlgo #1182: Fixed singularity flag mixups, swapped bounds, off-by-one index handling, wrong tolerance usage across intersection/transition/bounding logic. Improved robustness against degenerate inputs (zero-length parameter spans, empty polylines, zero-magnitude gradients). Made TopTrans_SurfaceTransition instance-safe (was using static state)

  • Fix tolerance handling in IntAna_QuadQuadGeo #1176: Added near-parallel criterion based on axis deviation over cylinder face height to prevent false non-parallel classification for small-height faces

  • Zero-initialize Weights output array #1175: Initialize full theTabWeights array to avoid uninitialized cells

  • Fix Hyperbola over-constraining direction errors #1100: Removed invalid gce_InvertAxis and gce_InvertRadius error checks from hyperbola constructors, added collinear point validation for 3-point constructors

  • Fix KD-Tree empty case handling #1111: Fixed NCollection_KDTree::KNearestPoints to initialize output arrays to empty instead of calling Resize with invalid bounds for empty tree/K=0 cases

Visualization

  • Sub-owner bounding box with shape transformation #1164: Apply SelectMgr_SelectableObject transformation when computing BndBoxOfSelected() for selected sub-owners. Fixes incorrect bounding boxes for transformed shapes with sub-element selection

  • Shader program mat3/mat4 uniforms #1112: Added NCollection_Mat3<float> and NCollection_Mat4<float> type support in Graphic3d_ShaderVariable. New PushVariableMat3()/PushVariableMat4() convenience methods on Graphic3d_ShaderProgram. Added SetUniform() for mat3 in OpenGl_ShaderProgram. New -vec2, -vec3, -vec4, -mat3, -mat4 arguments in Draw Harness vshader command

Build and Configuration

  • ARM64 architecture support #1149: Added CMake support for ARM64 architecture detection and configuration

  • Windows ARM64 build and test support #1135: Added CI workflow for building and testing on Windows ARM64

  • Windows GTest setup fix #1189: Fixed GTest configuration on Windows platform

Testing

  • Unit tests for geometric classes #1099: New tests for TopExp shape mapping, Geom_Circle/Geom_Line/Geom_Plane transformations, GCPnts_AbscissaPoint length calculations, GeomConvert B-spline conversion accuracy

  • Regression GTests across toolkits #1102: New GTests for BRepMesh_FaceChecker and OpenGl_View_Raytrace texture transform

Coding Quality

API Modernization

  • Return-by-value handle APIs #1185: Introduced return-by-value APIs for handle-returning methods across ApplicationFramework, DataExchange, ModelingAlgorithms, ModelingData, and Visualization. Legacy out-parameter methods marked deprecated and routed through new overloads. Applied [[nodiscard]] and const-correctness updates

  • Harmonize GC/gce maker APIs #1130: Standardized Doxygen documentation, inlined trivial wrappers, removed .lxx files for GC_Root and gce_Root. No behavioral changes

  • Geom_OffsetSurface evaluator refactoring #1158: Updated UIso/VIso evaluators to store const Geom_Surface& references, removing occ::handle self-capture pattern

  • Migration scripts update #1178: Scripts now reuse existing collected_typedefs.json, expanded file-extension filters to include .h/.c/.hpp/.cpp, enhanced replace_typedefs.py to add/replace #include directives

Code Cleanup

  • Standardize comment separators #1126: Normalized method separator lines to exactly 100 characters across codebase. Translated remaining French comments to English. Added [[nodiscard]] to Copy() methods

  • Update method guards #1151: Removed old-style function header guards across codebase

  • Standardize evaluation parameter names #1165: Unified EvalD* parameter names to theU/theV/theN across adaptor classes

  • Application Framework cleanup #1146: Clean up files in OCAF-related packages

  • Fix MSVC warnings and deprecations #1186: Added static methods in TPrsStd_ConstraintTools, refactored Bnd_Box/Bnd_Box2d to use default member initializers, improved golden ratio constants in root-finding, enhanced GeomBndLib monostate handling

  • Remove GeomProp modules #1154: Removed intermediate GeomProp_Surface* classes that were superseded by the new GeomProp package

Documentation

  • Fix typos #1132: Documentation typo corrections across the codebase

Migration Guide

Removed Packages

TColGeom and TColGeom2d

The TColGeom and TColGeom2d packages have been removed #1110. These were typedef-only packages. Use the underlying NCollection types directly:

// Before (removed)
#include <TColGeom_Array1OfCurve.hxx>
TColGeom_Array1OfCurve aCurves;

// After
#include <NCollection_Array1.hxx>
#include <Geom_Curve.hxx>
NCollection_Array1<occ::handle<Geom_Curve>> aCurves;

Geom2dLProp and LProp3d Packages

The Geom2dLProp and LProp3d packages have been removed and consolidated into GeomLProp template classes #1156. Backward-compatible type aliases are preserved, so existing code should continue to compile.

GProp_EquaType Enum

The GProp_EquaType enum has been removed (zero consumers) #1140. Use PointSetLib_Equation which provides equivalent dimensionality analysis without the enum.

Deprecated APIs

GProp Point Cloud Classes

GProp_PGProps, GProp_PEquation, GProp_CelGProps, GProp_SelGProps, GProp_VelGProps are deprecated #1140. Use PointSetLib_Props and PointSetLib_Equation instead.

Handle Out-Parameter Overloads

Methods returning handles via output parameters are deprecated in favor of return-by-value overloads #1185:

// Before (deprecated)
occ::handle<TDocStd_Document> aDoc;
anApp.GetDocument(aLabel, aDoc);

// After
occ::handle<TDocStd_Document> aDoc = anApp.GetDocument(aLabel);

GeomAdaptor_TransformedSurface::GeomSurface()

Deprecated #1147. Use the new original/transformed surface accessors instead.

API Changes

Prop/GridEval Construction

Prop and GridEval classes no longer support two-step initialization #1118. The default constructor and IsInitialized() have been removed. Use constructor-based initialization:

// Before (removed)
GeomProp_Curve aPropCurve;
aPropCurve.Initialize(aCurve);

// After
GeomProp_Curve aPropCurve(aCurve);

LProp/Adaptor Evaluation Hierarchy

Value()/D0-DN methods on Adaptor3d_Curve and Adaptor3d_Surface are now non-virtual inline wrappers #1139. If your code overrides D0/D1/D2/D3/DN on an adaptor subclass, you must override EvalD0/EvalD1/EvalD2/EvalD3/EvalDN instead. The Value()/D* methods now delegate to EvalD*.

BRepGraph Renames (within RC5)

CoEdgeDef::Sense renamed to Orientation, FreeChildRefIds renamed to AuxChildRefIds #1190.

New Migration Script Extensions

The migration scripts in adm/scripts/migration_800/ now support .h/.c/.hpp/.cpp file extensions and can automatically add/replace #include directives when replacing typedefs #1178.


Removed Functionality

Item Commit Replacement
TColGeom package #1110 NCollection_Array1<occ::handle<Geom_*>>
TColGeom2d package #1110 NCollection_Array1<occ::handle<Geom2d_*>>
Geom2dLProp package #1156 GeomLProp template classes (aliases preserved)
LProp3d package #1156 GeomLProp template classes (aliases preserved)
LProp_AnalyticCurInf files #1159 Dead code, no replacement needed
GProp_EquaType enum #1140 PointSetLib_Equation
GeomProp_Surface* classes #1154 GeomProp package
TopClass_FaceClassifier.gxx #1167 .pxx utilities
TopClass_Classifier2d.gxx #1167 .pxx utilities
Prop/GridEval default constructors #1118 Constructor-based initialization

Deprecated Functionality

Item Commit Replacement
GProp_PGProps #1140 PointSetLib_Props
GProp_PEquation #1140 PointSetLib_Equation
GProp_CelGProps / GProp_SelGProps / GProp_VelGProps #1140 PointSetLib_Props
Handle out-parameter overloads #1185 Return-by-value overloads
GeomAdaptor_TransformedSurface::GeomSurface() #1147 Original/transformed surface accessors

Performance Improvements Summary

  • BSpline span location optimization #1174: Non-periodic fast-path with span reuse in grid loops
  • TopExp_Explorer stack optimization #1181: NCollection_LocalArray-based stack replacing NCollection_Vector
  • GeomBndLib per-type dispatch #1136: Analytical bounding box computation replacing monolithic switch statements
  • Derivative caching in Prop evaluators #1152: Cached derivatives avoid redundant evaluations
  • GeomEval_TBezierSurface derivative optimization #1114: Common subexpression extraction
  • Transformed surface caching #1147: Cached transformed data avoiding repeated transformations
  • BOPAlgo_PaveFiller memory optimization #1044: Const references replacing IndexedMap copies
  • Container usage optimizations #1102: Hot-path optimizations in TKBO/TKOffset/TKOpenGl
  • Thread safety without performance cost #1180: thread_local and std::atomic replacing mutex-guarded globals

Acknowledgments

We thank all contributors who helped make this release possible through their code contributions, bug reports, and testing.

New Contributors

Full Changelog: V8_0_0_rc4...V8_0_0_rc5


This discussion was created from the release V8_0_0_rc5.

Don't miss a new OCCT release

NewReleases is sending notifications on new releases.