Open CASCADE Technology 8.0.0 Release Candidate 5 #1191
Replies: 2 comments 8 replies
-
|
Hey, this looks cool but it begs the question how many "RCs" are we still to expect before an actual release? Typically RCs do not add features and only fix bugs... |
Beta Was this translation helpful? Give feedback.
-
|
Hi, Should it be possible to use an rc with vcpkg? I created an overlay folder in my project and copied the port files from the vcpkg opencascade port into it. Changed the version in vcpkg.json from 7.9.3 to 8.0.0 and changed the first line in portfile.cmake to
(appended "rc5" to the version) and corrected the SHA512 It downloads the correct source but fails applying the patch files. Any ideas? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
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:
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 supportBRepGraphpublic API +BRepGraphIncinternal structure), with bidirectional traversal, typed node IDs, extensible Layer/Cache system, deduplication, history tracking, mutation guards, and roundtrip conversion to/fromTopoDS_ShapeGeom2dProp,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 optimizationsGeomBndLibpackage 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 toGeomBndLibinternallyGeomEval/Geom2dEvalevaluation-focused geometry classes (Bezier surfaces, helicoids, spirals, ellipsoids),ExtremaPCpoint-to-curve extrema with per-geometrystd::variantdispatch and grid evaluationTColGeom/TColGeom2dpackages, harmonized GC/gce maker APIs, new string operators, configurableGeomHashtolerancesBRepCheck_*and Foundation globals,TopExp_Explorerstack refactored toNCollection_LocalArray, BSpline span location optimization, transformed surface caching, memory management improvements in Boolean operationsWhat 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 collectionsNCollection_DynamicArray extensions #1167: New
InsertBefore()/InsertAfter()helpers with element shift semanticsNCollection_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 stateString Enhancements
AssignCat(int/double)andCat(int/double)overloads toTCollection_ExtendedString(plusoperator+=/operator+). AddedAssignCat(TCollection_ExtendedString, replaceNonAscii)and wide-char (wchar_t*) append/concat helpers toTCollection_AsciiStringMath and Solver Enhancements
Modern Math API alignment* #1134: Aligned modern
MathRoot/MathSys/MathLinAPIs with legacymath_*behavior for consistent resultsmath_FunctionRoot constructor safety #1121: Guarded
Sol.NbIterations()calls withif (Done)check, preventingStdFail_NotDoneexception during construction when root is not foundPointSetLib Package
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 extentsGProp_PGProps,GProp_PEquation,GProp_CelGProps,GProp_SelGProps,GProp_VelGPropsGProp_EquaTypeenum (zero consumers)Thread Safety
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_localModeling 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_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_Populate(TopoDS_Shape -> BRepGraph) andBRepGraphInc_Reconstruct(BRepGraph -> TopoDS_Shape) roundtrip conversionBRepGraph_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_ShapeBRepGraph iterators, ref caching, mutation APIs, and layer events #1190: Extensions to the BRepGraph foundation:
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 pruningSetCoEdgePCurve,ClearFaceMesh,ClearEdgePolygon3D,ValidateMutationBoundaryLayerRegistry(deferred/immediate modes)CreateAutoProductoption inBRepGraphInc_Populate::OptionsCoEdgeDef::SensetoOrientation,FreeChildRefIdstoAuxChildRefIdsGeometry Evaluation Classes
New Eval geometry classes #1104: Evaluation-focused geometry classes extending the Geom/Geom2d hierarchies:
Geom2dEval_TBezierCurve,Geom2dEval_AHTBezierCurve,Geom2dEval_SineWaveCurve,Geom2dEval_ArchimedeanSpiralCurve,Geom2dEval_LogarithmicSpiralCurve,Geom2dEval_CircleInvoluteCurveGeomEval_TBezierCurve,GeomEval_AHTBezierCurve,GeomEval_SineWaveCurve,GeomEval_CircularHelixCurveGeomEval_TBezierSurface,GeomEval_AHTBezierSurface,GeomEval_CircularHelicoidSurface,GeomEval_EllipsoidSurface,GeomEval_HyperboloidSurface,GeomEval_ParaboloidSurface,GeomEval_HypParaboloidSurfaceGeom2dEval/GeomEvalpackages and wired into adaptorEvalD*dispatch pathsGeomEval_TBezierSurface derivative optimization #1114: Extracted common subexpressions in
EvalD2(6 products) andEvalD3(10 products) to avoid redundant multiplicationsGeomEval_TBezierSurface MSVC fix #1145: Aligned
IsCNu()/IsCNv()signatures withGeom_Surfacebase class to fix MSVC C4373 warningsDifferential 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 GTestsNew 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 GTestsDerivative 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 samplingProp 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 constructionFix BRepProp_Curve continuity mapping #1141: Fixed condition to include
GeomAbs_G2and higher for D1 evaluation, matchingGeomProp_CurveLProp 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 preservedModernize LProp .gxx templates #1155: Converted legacy
.gxxgeneric templates into.pxxprivate utilitiesRemove 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) APIsFillBoxwith convex hull reduction,BSplCLib::Hunt-based pole index selection avoidingCopy()/Segment()allocationBoxOptimal: PSO + Powell per-coordinate minimization for tight boundsBndLib 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 unchangedGeomBndLib 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 patternTransformed 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_SurfaceOther 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 TKG2dUpdate AppCont_ContMatrices #1117: Replaced public interface with internal namespace-based
.pxxheader structure. Fixed out-of-bounds read inIBPMatrixforclasse=26by adding 3 missing data entriesAdvApp2Var 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_MakeHyprModeling Algorithms
Gordon Surface Construction
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 pipelineExtremaPC Package
std::variant-based dispatch over per-geometry evaluators:ExtremaPC_Line,ExtremaPC_Circle,ExtremaPC_Ellipse,ExtremaPC_Hyperbola,ExtremaPC_BezierCurve,ExtremaPC_BSplineCurve,ExtremaPC_OffsetCurveExtremaPC_Curve: Aggregator dispatcher with unified APIExtremaPC_GridEvaluator: Grid-based sampling for initial extrema bracketingExtremaPC_DistanceFunction: Distance function for root-finding refinementBRepClass Refactoring
TopClass_FaceClassifier/TopClass_Classifier2dimplementations from.gxxtemplates to.pxxutilities. UpdatedBRepClass/Geom2dHatchwrappers. Removed_0.cxxgenerator glue filesPerformance 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 valueTopExp_Explorer stack refactoring #1181: Replaced
NCollection_Vector-based stack withNCollection_LocalArrayand explicit stack-top index management for better cache locality and reduced allocationsBOPAlgo_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 accumulationGeomHash configurable tolerances #1169: Added
CompToleranceandHashTolerancefields + constructors to all geometry hashers. Replaced hardcoded1e-12throughoutBug 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 crashFix 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 cellsFix Hyperbola over-constraining direction errors #1100: Removed invalid
gce_InvertAxisandgce_InvertRadiuserror checks from hyperbola constructors, added collinear point validation for 3-point constructorsFix 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 casesVisualization
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 selectionShader 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 HarnessvshadercommandBuild 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 accuracyRegression GTests across toolkits #1102: New GTests for
BRepMesh_FaceCheckerandOpenGl_View_Raytracetexture transformCoding 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 updatesHarmonize GC/gce maker APIs #1130: Standardized Doxygen documentation, inlined trivial wrappers, removed
.lxxfiles forGC_Rootandgce_Root. No behavioral changesGeom_OffsetSurface evaluator refactoring #1158: Updated UIso/VIso evaluators to store
const Geom_Surface&references, removingocc::handleself-capture patternMigration 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#includedirectivesCode Cleanup
Standardize comment separators #1126: Normalized method separator lines to exactly 100 characters across codebase. Translated remaining French comments to English. Added
[[nodiscard]]toCopy()methodsUpdate method guards #1151: Removed old-style function header guards across codebase
Standardize evaluation parameter names #1165: Unified
EvalD*parameter names totheU/theV/theNacross adaptor classesApplication 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 handlingRemove GeomProp modules #1154: Removed intermediate
GeomProp_Surface*classes that were superseded by the newGeomProppackageDocumentation
Migration Guide
Removed Packages
TColGeom and TColGeom2d
The
TColGeomandTColGeom2dpackages have been removed #1110. These were typedef-only packages. Use the underlyingNCollectiontypes directly:Geom2dLProp and LProp3d Packages
The
Geom2dLPropandLProp3dpackages have been removed and consolidated intoGeomLProptemplate classes #1156. Backward-compatible type aliases are preserved, so existing code should continue to compile.GProp_EquaType Enum
The
GProp_EquaTypeenum has been removed (zero consumers) #1140. UsePointSetLib_Equationwhich provides equivalent dimensionality analysis without the enum.Deprecated APIs
GProp Point Cloud Classes
GProp_PGProps,GProp_PEquation,GProp_CelGProps,GProp_SelGProps,GProp_VelGPropsare deprecated #1140. UsePointSetLib_PropsandPointSetLib_Equationinstead.Handle Out-Parameter Overloads
Methods returning handles via output parameters are deprecated in favor of return-by-value overloads #1185:
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:LProp/Adaptor Evaluation Hierarchy
Value()/D0-DNmethods onAdaptor3d_CurveandAdaptor3d_Surfaceare now non-virtual inline wrappers #1139. If your code overridesD0/D1/D2/D3/DNon an adaptor subclass, you must overrideEvalD0/EvalD1/EvalD2/EvalD3/EvalDNinstead. TheValue()/D*methods now delegate toEvalD*.BRepGraph Renames (within RC5)
CoEdgeDef::Senserenamed toOrientation,FreeChildRefIdsrenamed toAuxChildRefIds#1190.New Migration Script Extensions
The migration scripts in
adm/scripts/migration_800/now support.h/.c/.hpp/.cppfile extensions and can automatically add/replace#includedirectives when replacing typedefs #1178.Removed Functionality
TColGeompackageNCollection_Array1<occ::handle<Geom_*>>TColGeom2dpackageNCollection_Array1<occ::handle<Geom2d_*>>Geom2dLProppackageGeomLProptemplate classes (aliases preserved)LProp3dpackageGeomLProptemplate classes (aliases preserved)LProp_AnalyticCurInffilesGProp_EquaTypeenumPointSetLib_EquationGeomProp_Surface*classesGeomProppackageTopClass_FaceClassifier.gxx.pxxutilitiesTopClass_Classifier2d.gxx.pxxutilitiesDeprecated Functionality
GProp_PGPropsPointSetLib_PropsGProp_PEquationPointSetLib_EquationGProp_CelGProps/GProp_SelGProps/GProp_VelGPropsPointSetLib_PropsGeomAdaptor_TransformedSurface::GeomSurface()Performance Improvements Summary
NCollection_LocalArray-based stack replacingNCollection_Vectorthread_localandstd::atomicreplacing mutex-guarded globalsAcknowledgments
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.
Beta Was this translation helpful? Give feedback.
All reactions