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_GordonBuilderclasses implementing transfinite interpolation from N x M curve networks via the Boolean sum formula, generalizingGeomFill_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 (
BRepGraphpublic API +BRepGraphIncinternal structure), with bidirectional traversal, typed node IDs, extensible Layer/Cache system, deduplication, history tracking, mutation guards, and roundtrip conversion to/fromTopoDS_Shape - Modern differential properties packages: New
Geom2dProp,GeomProp, andBRepProppackages replace the legacy macro-based LProp/.gxx pattern with C++17std::variant-dispatched evaluators, result structs instead of exceptions, derivative caching, and per-geometry optimizations - Geometry-aware bounding boxes: New
GeomBndLibpackage with per-type evaluators for all Geom curve/surface types,std::variant-based dispatch, analytical solutions for conics/quadrics, and PSO+Powell optimization for tightBoxOptimalresults;BndLibdelegated toGeomBndLibinternally - New evaluation and extrema packages:
GeomEval/Geom2dEvalevaluation-focused geometry classes (Bezier surfaces, helicoids, spirals, ellipsoids),ExtremaPCpoint-to-curve extrema with per-geometrystd::variantdispatch and grid evaluation - API modernization: Return-by-value handle APIs with deprecated out-parameter overloads, removed
TColGeom/TColGeom2dpackages, harmonized GC/gce maker APIs, new string operators, configurableGeomHashtolerances - Thread-safety and performance: Data race fixes in
BRepCheck_*and Foundation globals,TopExp_Explorerstack refactored toNCollection_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-basedforloops 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_Setstorage switched fromNCollection_ListtoNCollection_Vector, reduced redundant lookups/copies inBOPAlgo_Builder, replacedstd::map/std::setwithNCollection_DataMap/NCollection_Mapin ray-tracing state
String Enhancements
- New string operators #1188: Added
AssignCat(int/double)andCat(int/double)overloads toTCollection_ExtendedString(plusoperator+=/operator+). AddedAssignCat(TCollection_ExtendedString, replaceNonAscii)and wide-char (wchar_t*) append/concat helpers toTCollection_AsciiString
Math and Solver Enhancements
-
Modern Math API alignment* #1134: Aligned modern
MathRoot/MathSys/MathLinAPIs with legacymath_*behavior for consistent results -
math_FunctionRoot constructor safety #1121: Guarded
Sol.NbIterations()calls withif (Done)check, preventingStdFail_NotDoneexception during construction when root is not found
PointSetLib Package
- New PointSetLib package #1140: Standalone point cloud analysis in TKMath without
GProp_GPropsinheritance: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_EquaTypeenum (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 viastd::atomic, added mutex-based protection for lazy initialization, introducedstd::call_oncefor Windows host initialization. Converted several TKBool global mutable statics tothread_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_Shapelinked data structure. The foundation provides two levels:- BRepGraph (public): Graph representation with typed
BRepGraph_NodeIdidentifiers, 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), extensibleLayer/Cachesystem, 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) andBRepGraphInc_Reconstruct(BRepGraph -> TopoDS_Shape) roundtrip conversion BRepGraph_Tool: Centralized geometry access API (analogue ofBRep_Tool) for extracting curves, surfaces, locations, tolerances, and flags from graph nodesBRepGraph_Builder: Programmatic graph construction without requiring an inputTopoDS_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 (public): Graph representation with typed
-
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 refsBuilder::AppendFull: Full node append with all propertiesBuilderView::RemoveRefwith orphan pruning- Mutation APIs:
SetCoEdgePCurve,ClearFaceMesh,ClearEdgePolygon3D,ValidateMutationBoundary - Layer event propagation: ref-modification events through
LayerRegistry(deferred/immediate modes) CreateAutoProductoption inBRepGraphInc_Populate::Options- Renamed
CoEdgeDef::SensetoOrientation,FreeChildRefIdstoAuxChildRefIds
- New iterators:
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/GeomEvalpackages and wired into adaptorEvalD*dispatch paths
- 2D:
-
GeomEval_TBezierSurface derivative optimization #1114: Extracted common subexpressions in
EvalD2(6 products) andEvalD3(10 products) to avoid redundant multiplications -
GeomEval_TBezierSurface MSVC fix #1145: Aligned
IsCNu()/IsCNv()signatures withGeom_Surfacebase class to fix MSVC C4373 warnings
Differential Properties Packages
-
New Geom2dProp package #1113: Modern 2D curve differential properties replacing the
Geom2dLPropmacro-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 withIsDefinedflags 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
GeomPropfree functions for BRep edges/faces. Includes staticContinuity()methods replacingBRepLProp::Continuity. 18 GTests -
Derivative caching #1152: Added per-parameter derivative caching to
GeomProp/Geom2dPropevaluators. Direct construction from geometry handles bypassing adaptor creation.DynamicType()comparison instead ofIsKind()virtual walks. Domain structs for trimmed geometry bounds. ImprovedMathRoot_Multiplerobustness 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_G2and higher for D1 evaluation, matchingGeomProp_Curve
LProp Modernization
-
Unify LProp packages #1156: Consolidated duplicated property computation classes (
GeomLProp_CLProps,Geom2dLProp_CLProps2d,LProp3d_CLProps,BRepLProp_CLProps,HLRBRep_CLPropsand SLProps counterparts) into unified template classesGeomLProp_CLPropsBase/GeomLProp_SLPropswith policy-based access. Moved LProp/GeomLProp/GProp packages from TKG2d/TKG3d to TKGeomBase. RemovedGeom2dLPropandLProp3dpackages. Backward-compatible type aliases preserved -
Modernize LProp .gxx templates #1155: Converted legacy
.gxxgeneric templates into.pxxprivate 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
BndLibswitch-based approach:GeomBndLib_Curve/GeomBndLib_Curve2d/GeomBndLib_Surface: Public dispatchers usingstd::variantwithBox()/BoxOptimal()(return by value) andAdd()/AddOptimal()(mutate reference) APIs- Specialized analytical evaluators for Line, Circle, Ellipse, Hyperbola, Parabola (exact conic arc bounds)
- BSpline/Bezier: knot-span
FillBoxwith convex hull reduction,BSplCLib::Hunt-based pole index selection avoidingCopy()/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, andBndLib_Add2dCurvewith thin wrappers delegating toGeomBndLib. Removed dead internal helpers. PublicBndLibAPI 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_Curvewrapping aGeomAdaptor_Curve(orAdaptor3d_CurveOnSurface) with an appliedgp_Trsftransformation. UnifiedEvalD*as primary virtual evaluation methods across allAdaptor3d_CurveandAdaptor3d_Surfacesubclasses --Value()/D0-DNbecome non-virtual inline wrappers. Refactored 15+ adaptor classes to use this pattern -
Transformed surface caching #1147: Added cached transformed data in
GeomAdaptor_TransformedSurfacerebuilt on constructor/Load/SetTrsf. New original/transformed surface accessors; deprecated legacyGeomSurface()usage. ExposedToleranceU()/ToleranceV()onGeomAdaptor_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 usedgp::Resolution()(~1e-290) making the check practically unusable. Replaced withPrecision::Computational()(~DBL_EPSILON). Trimmed curve/surfaceIsClosed()/IsPeriodic()now detect integer-period spans viastd::remainder(). Added 271 new GTests for TKG2d -
Update AppCont_ContMatrices #1117: Replaced public interface with internal namespace-based
.pxxheader structure. Fixed out-of-bounds read inIBPMatrixforclasse=26by 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 inGCE2d_MakeCircle/GC_MakePlane, replaced hardcoded tolerances withPrecision::Confusion(), added near-zero guards ingce_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 interpolationGeomFill_Gordon: High-level wrapper handling arbitraryGeom_Curveinputs, automatic intersection detection, network sorting/orientation, approximation-based reparametrization with kink preservation, scale-relative tolerances, closedness detection, andOSD_ParallelaccelerationApprox_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 APIExtremaPC_GridEvaluator: Grid-based sampling for initial extrema bracketingExtremaPC_DistanceFunction: Distance function for root-finding refinement
- Specialized evaluators:
BRepClass Refactoring
- Refactor BRepClass and FaceClassifier #1167: Migrated
TopClass_FaceClassifier/TopClass_Classifier2dimplementations from.gxxtemplates to.pxxutilities. UpdatedBRepClass/Geom2dHatchwrappers. Removed_0.cxxgenerator 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 withNCollection_LocalArrayand 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
CompToleranceandHashTolerancefields + constructors to all geometry hashers. Replaced hardcoded1e-12throughout
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 gracefulIsDone() == falseinstead 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_SurfaceTransitioninstance-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
theTabWeightsarray to avoid uninitialized cells -
Fix Hyperbola over-constraining direction errors #1100: Removed invalid
gce_InvertAxisandgce_InvertRadiuserror checks from hyperbola constructors, added collinear point validation for 3-point constructors -
Fix KD-Tree empty case handling #1111: Fixed
NCollection_KDTree::KNearestPointsto initialize output arrays to empty instead of callingResizewith invalid bounds for empty tree/K=0 cases
Visualization
-
Sub-owner bounding box with shape transformation #1164: Apply
SelectMgr_SelectableObjecttransformation when computingBndBoxOfSelected()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>andNCollection_Mat4<float>type support inGraphic3d_ShaderVariable. NewPushVariableMat3()/PushVariableMat4()convenience methods onGraphic3d_ShaderProgram. AddedSetUniform()format3inOpenGl_ShaderProgram. New-vec2,-vec3,-vec4,-mat3,-mat4arguments in Draw Harnessvshadercommand
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
TopExpshape mapping,Geom_Circle/Geom_Line/Geom_Planetransformations,GCPnts_AbscissaPointlength calculations,GeomConvertB-spline conversion accuracy -
Regression GTests across toolkits #1102: New GTests for
BRepMesh_FaceCheckerandOpenGl_View_Raytracetexture 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
.lxxfiles forGC_Rootandgce_Root. No behavioral changes -
Geom_OffsetSurface evaluator refactoring #1158: Updated UIso/VIso evaluators to store
const Geom_Surface&references, removingocc::handleself-capture pattern -
Migration scripts update #1178: Scripts now reuse existing
collected_typedefs.json, expanded file-extension filters to include.h/.c/.hpp/.cpp, enhancedreplace_typedefs.pyto add/replace#includedirectives
Code Cleanup
-
Standardize comment separators #1126: Normalized method separator lines to exactly 100 characters across codebase. Translated remaining French comments to English. Added
[[nodiscard]]toCopy()methods -
Update method guards #1151: Removed old-style function header guards across codebase
-
Standardize evaluation parameter names #1165: Unified
EvalD*parameter names totheU/theV/theNacross 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, refactoredBnd_Box/Bnd_Box2dto use default member initializers, improved golden ratio constants in root-finding, enhancedGeomBndLibmonostate handling -
Remove GeomProp modules #1154: Removed intermediate
GeomProp_Surface*classes that were superseded by the newGeomProppackage
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 replacingNCollection_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_localandstd::atomicreplacing mutex-guarded globals
Acknowledgments
We thank all contributors who helped make this release possible through their code contributions, bug reports, and testing.
New Contributors
- @VladislavVitalievichRomashko made their first contribution in #1121
- @Lokestrom made their first contribution in #1100
- @Harishmcw made their first contribution in #1135
- @winzlebee made their first contribution in #1164
Full Changelog: V8_0_0_rc4...V8_0_0_rc5
This discussion was created from the release V8_0_0_rc5.