Releases: Open-Cascade-SAS/OCCT
V8_0_0_rc5
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_AHTBezierSur...
- 2D:
V8_0_0_rc4
Open CASCADE Technology Version 8.0.0 Release Candidate 4
Open Cascade is delighted to announce the release of Open CASCADE Technology version 8.0.0 Release Candidate 4 to the public.
Overview
Version 8.0.0-rc4 is a candidate release incorporating 111 improvements and bug fixes compared to version 8.0.0-rc3, bringing the total improvements since version 7.9.0 to over 400 changes.
This release focuses on:
- Redesigned geometry evaluation architecture: New
EvalD*API with POD result structs replaces old virtualD0/D1/D2/D3methods, elementary geometry evaluation devirtualized viastd::variantdispatch, new EvalRep descriptor system decouples geometry identity from evaluation strategy, all 29 leaf Geom/Geom2d classes markedfinal - Elimination of heap indirection in core geometry classes: BSpline/Bezier classes use direct value-member arrays instead of handle-wrapped heap storage, always-populated weights via static unit-weights buffer eliminates pervasive null-check patterns across ~100 call sites
- Topological data structure overhaul:
TopoDS_TShapehierarchy replaces linked-list child storage with contiguous arrays, bit-packs shape state intouint16_t, devirtualizesShapeType(), and introduces index-based iteration - Modern C++ foundation layer:
Standard_Failureinherits fromstd::exception, error handlers usethread_localstorage eliminating global mutex contention, reference counting uses optimized memory ordering, mesh plugin system replaced with registry-based factory - New high-performance collections: Robin Hood hash maps (
NCollection_FlatDataMap/FlatMap), insertion-order-preserving maps (NCollection_OrderedMap/OrderedDataMap), header-only KD-Tree for spatial queries, C++17 structured binding support viaItems()views, unified map API withContained/TryEmplace/TryBind - Numerical solver improvements: Laguerre polynomial root-finder, coordinate-wise Brent polishing for PSO/DE improving precision by 4+ orders of magnitude, batch 2D curve evaluation, BSplCLib interpolation hot-path optimizations
- Comprehensive automated migration toolkit: 12-phase Python script suite in
adm/scripts/migration_800/for migrating external projects to 8.0.0 APIs
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-rc4
Foundation Classes
High-Performance Collections
-
New
NCollection_FlatDataMapandNCollection_FlatMap#1015: Cache-friendly open-addressing hash containers with Robin Hood hashing:- All key-value pairs stored inline in contiguous array (eliminates per-element heap allocations)
- Robin Hood hashing reduces probe sequence variance for more predictable performance
- Power-of-2 sizing for fast modulo operations via bitwise AND
- Cached hash codes for faster collision handling and rehashing
- Also in this PR: optimized
Standard_Transientreference counting with explicit memory ordering (followingstd::shared_ptrpattern), deprecatedStandard_Mutexin favor ofstd::mutex
-
New
NCollection_KDTree#1073: Header-only static balanced KD-Tree for efficient spatial point queries:- Nearest-neighbor search in O(log N), k-nearest, range (sphere), box (AABB), and sphere containment queries
- Works with
gp_Pnt,gp_Pnt2d,gp_XYZ,gp_XYout-of-the-box - Optional per-point radii via compile-time template parameter
- Weighted nearest queries support
-
New
NCollection_OrderedMapandNCollection_OrderedDataMap#1072: Insertion-order-preserving hash containers using intrusive doubly-linked list:- O(1) hash lookup, O(1) append/remove
- Deterministic iteration in insertion order
- O(1) removal (unlike
NCollection_IndexedMapwhich requires O(n) swap-and-shrink)
-
Try and Emplace methods for NCollection maps* #1022: Non-throwing lookup operations and in-place construction:
if (auto* pValue = aMap.TryBind(key, defaultValue)) { /* use pValue */ } aMap.Emplace(key, constructorArgs...); // No copy/move!
-
Emplace methods for NCollection containers #1035: In-place construction support for
NCollection_List(EmplaceAppend,EmplacePrepend,EmplaceBefore,EmplaceAfter),NCollection_Sequence,NCollection_DynamicArray,NCollection_Array1, andNCollection_Array2 -
Items() views with C++17 structured bindings #1038: Key-value pair iteration for NCollection map classes:
for (auto [aKey, aValue] : aMap.Items()) { ... }
Added
Items()for DataMap, FlatDataMap, IndexedDataMap andIndexedItems()for IndexedMap and IndexedDataMap -
NCollection_List optimization #1040:
std::initializer_listconstructor, improved const-correctness, optimized move constructor,Exchange()method -
Unified map API and collection performance optimizations #1065: API unification and performance improvements across NCollection:
- Unified map API:
Contained()added to all map types returningstd::optional<std::reference_wrapper<T>>,TryEmplace/TryBindparity across all map types - NCollection_UBTree/EBTree: iterative stack-based traversal replacing recursion (prevents stack overflow on deep trees), move semantics
- NCollection_LocalArray: move semantics,
Reallocate()for use as growable stack - NCollection_CellFilter: proper move semantics replacing destructive-copy hack
- Removed dead Sun WorkShop/Borland compiler workarounds
- Unified map API:
-
TColStd_PackedMapOfInteger refactoring #1023: Improved implementation of specialized integer set
-
Keep deprecated NCollection aliases #1026: Deprecated package type aliases (
TColStd_*,TopTools_*) kept for backward compatibility with deprecation warnings
Exception Handling Revolution
-
Standard_Failure inherits from std::exception #984: Bridges OCCT's exception system with standard C++:
- OCCT exceptions now caught by standard
catch (const std::exception&)blocks - Internal storage switched from
occ::handletostd::shared_ptr - New
what()method implements std::exception interface - New
ExceptionType()virtual method for exception class identification - Exception classes simplified to pure data containers
- Removed
Raise(),Instance(),Throw()static methods - usethrowinstead
- OCCT exceptions now caught by standard
-
Thread-local error handler stack #980: Replaced global mutex-protected stack with
thread_localstorage:- Zero lock overhead - no mutex acquisition for error handler operations
- Perfect scalability - threads never contend on error handler state
- Especially beneficial in TBB/OpenMP parallelized algorithms
- Removed:
Catches(),LastCaughtError()methods - Updated
OCC_CATCH_SIGNALSmacro with newRaise()re-throw method
-
Use throw instead of legacy Standard_Failure::Raise #983: Migrated codebase to modern C++ exception throwing
Math and Solver Enhancements
-
Cache-friendly matrix multiplication #1015: Changed
math_Matrix::Multiply()from i-j-k to i-k-j loop order for row-major storage with significant speedup for large matrices -
SIMD-friendly vector norm #1015: 4-way loop unrolling for
math_VectorBase::Norm()/Norm2()with pairwise partial sum combination -
Optimized atomic reference counting #1015:
Standard_Transientuses explicit memory ordering (memory_order_relaxedfor increment,memory_order_releasefor decrement with acquire fence only at zero) -
Laguerre polynomial solver and Newton API refactoring #1086: New
MathPoly_Laguerrefor general polynomial root finding with Laguerre + deflation, including Quintic/Sextic/Octic helpers. Refactored specialized Newton solvers (2D/3D/4D) to unified fixed-size API -
Coordinate-wise polishing for PSO and DE solvers #1088: Brent-based coordinate-wise polishing phase improving component-level precision from ~1e-4 to 1e-8+ for separable functions. New
BrentAlongCoordinateinMathUtils_LineSearch, newMathUtils_Randomutility -
PLib polynomial evaluation optimization #953
-
MathRoot and MathSys enhancements #954: New mathematical utilities
-
**math_DirectPolynomialRoots refactorin...
V8_0_0_rc3
Open CASCADE Technology Version 8.0.0 Release Candidate 3
Open Cascade is delighted to announce the release of Open CASCADE Technology version 8.0.0 Release Candidate 3 to the public.
Overview
Version 8.0.0-rc3 is a candidate release incorporating 157 improvements and bug fixes compared to version 8.0.0-rc2, bringing the total improvements since version 7.9.0 to over 290 changes.
This release focuses on:
- Modernization of math functions with migration to C++ standard library
- Threading improvements with migration from
Standard_Mutextostd::mutex - Performance optimizations across Foundation Classes, especially BSpline computations
- API improvements with
constexpr/noexceptannotations throughout the codebase - Data Exchange enhancements including stream support and STEP metadata export
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-rc3
Foundation Classes
Math Functions Modernization
- Deprecated math global functions in favor of
stdequivalents #833: The following functions are now deprecated and will be removed in future releases:ACos(),ASin(),ATan(),ATan2()→ usestd::acos,std::asin,std::atan,std::atan2Sinh(),Cosh(),Tanh()→ usestd::sinh,std::cosh,std::tanhASinh(),ACosh(),ATanh()→ usestd::asinh,std::acosh,std::atanhSqrt(),Log(),Log10(),Exp()→ usestd::sqrt,std::log,std::log10,std::expPow(),Abs(),Sign()→ usestd::pow,std::abs,std::copysignSin(),Cos(),Tan()→ usestd::sin,std::cos,std::tanFloor(),Ceiling(),Round()→ usestd::floor,std::ceil,std::roundIntegerPart()→ usestd::truncMin(),Max()→ usestd::min,std::maxNextAfter()→ usestd::nextafter
Threading Modernization
- Replaced
Standard_Mutexwithstd::mutex#766: Migrated from legacy mutex implementation to standard C++ mutexes across all modules:- Use
std::lock_guardorstd::unique_lockinstead ofStandard_Mutex::Sentry - Use
std::mutexinstead ofStandard_Mutex - Optional mutex holders now use
std::unique_ptr<std::mutex>
- Use
Geometric Primitives (gp)
- Added standard direction enumerations #803: New
gp_Dir::Dandgp_Dir2d::Denums for standard directions (X, Y, Z, NX, NY, NZ) - Enhanced constructors with
constexpr/noexcept#798, #796, #790: Geometric primitives (circles, cones, cylinders, axes) now have constexpr constructors
Strings
- Added
EmptyString()methods #788: NewTCollection_AsciiString::EmptyString()andTCollection_ExtendedString::EmptyString()for efficient empty string access - Optimized
TCollection_AsciiString#752: Pre-defined string optimization for better performance
Math Containers
- Move semantics for
math_Matrixandmath_Vector#841: Added move constructors and move assignment operators for efficient container transfers
BSpline Optimizations
- Optimized BSpline cache #906, #897: Improved BSpline data containers with
constexprand validation, optimized local calls - Enhanced B-Spline curve computation #855: Performance improvements for curve calculations
Other Foundation Improvements
- Optimized
Bndpackage #839, #856: Bounding box optimizations and fixes - Modernized
Bnd_B2andBnd_B3#838: Template-based implementation - Enhanced BVH implementation #842, #858: Generic vector types and transformation tests
- Performance improvements for
TopExppackage #831 - Optimized
Quantitypackage #834 - Improved
NCollectionvector constructors #835 - Modernized
NCollection_SparseArrayBase#804 - EigenValuesSearcher improvements #714
- Refactored
CSLibpackage with GTests #857 - Refactored
Extremapackage #869 - Compile-time sqrt constants #789
- Precomputed Jacobi coefficients #778
- Constexpr Pascal allocator for
PLib::Bin#777 - Added precision-related methods in
Precision.hxx#811 - Angle normalization refactor for
ElSLib/ElCLib#813
Modeling Data
- New
GeomHashandGeom2dHashpackages #845: Hash functions for geometric curves and surfaces enabling efficient comparison and caching
Modeling Algorithms
- Enhanced periodic curve handling in
ChFi3d_Builder#892 - Improved parameter validation logic in BSplineCache #829
Shape Healing
Data Exchange
Stream Support
- Implemented stream support for
DE_Wrapper#663: Stream-based read/write methods for STEP, STL, VRML, and other formats with validation utilities
STEP Improvements
- STEP General Attributes export #634: Export string metadata as STEP
property_definitionentities - STEP coordinate system connection points import #779
std::string_viewfor STEP type names #784: Performance improvement usingstd::string_viewfor type recognition- Refactored
StepTypeselection #786 - Custom hasher for string_view types in
RWStepAP214#888
Plugin System
- Reorganized DE plugin system #696: New
Register/UnRegistermethods for configuration nodes,DE_MultiPluginHolderfor multiple registrations
Visualization
Build and Configuration
- Fixed C++ standard options and NOMINMAX scope #907
- Modernized compiler flags for C++17 #867
- Updated macOS compiler flags and includes #884
- Updated VCPKG version #878
- Validated configuration on CMake 3.10+ #762
- C++17 version macro #785
- Updated
.gitignorewith explicit allowlist #787
Testing
- Migrated QA DRAW tests to GTest #818, #823
- Migrated QA NCollection to GTests #709
- Added Boolean operation GTests #721
- Added
ShapeAnalysis_CanonicalRecognitionunit tests #720 - Added
Standard_ArrayStreamBufferunit tests #708 - Added PLib functionality unit tests #705
- Covered math module with GTests [#684](https://github.com/Open-Cascade-SAS/OCCT/pul...
V7_9_3
Open CASCADE Technology 7.9.3 Released
Open Cascade is delighted to announce the release of Open CASCADE Technology version 7.9.3 to the public.
Overview
Version 7.9.3 is a maintenance release incorporating over 15 improvements and bug fixes compared to version 7.9.2.
What's New in OCCT 7.9.3
Modeling
- Fix memory consumption in BOPAlgo_PaveFiller_6.cxx (#864)
- Fix BRepBuilderAPI_GTransform face stretch crash (#875)
- Fix Boolean fuse segfaults on loft (#860)
- Fix BRepFilletAPI_MakeFillet::Add hangs on adding edge (#859)
- Fix crash in BRepFilletAPI_MakeChamfer (#743)
- Fix crash in BRepOffsetAPI_MakePipeShell (#740)
- Fix segfault on chamfer or fillet approaching ellipse (#738)
- Fix ShapeUpgrade_UnifySameDomain crash (#876)
Shape Healing
- Optimize FixFaceOrientation (#584)
Visualization
- Improve detection of full cylinder/cone parameters (#830)
Data Exchange
- Fix hang in STEPCAFControl_Reader (#733)
Application Framework
- Early-return null NamedShape when TNaming_UsedShapes is missing (#760)
Full Changelog: V7_9_2...V7_9_3
V7_9_2
Open CASCADE Technology 7.9.2 Released
Open Cascade is delighted to announce the release of Open CASCADE Technology version 7.9.2 to the public.
Overview
Version 7.9.2 is a maintenance release incorporating over 25 improvements and bug fixes compared to version 7.9.1.
What's New in OCCT 7.9.2
Configuration & Build System
- VCPKG add TclTk support (#580)
- Remove jemalloc port files (#581)
- Update C++ standard to C++17
- Fix ARCH for older 32-bit macs (#626)
- Fixed issue with CSF variable overwriting (#561)
Testing & Quality
- Update samples C++ version (#606)
- Remove marking warnings as errors in CI builds
Foundation Classes
Modeling
- Fix array indexing bug in IntAna_IntQuadQuad::NextCurve method (#703)
- CornerMax incorrect realisation in Bnd_Box (#664)
- Fix null surface crash in fixshape (#623)
- Fix null surface crash in UnifySameDomain (#624)
- GeomFill_CorrectedFrenet hangs in some cases (#630)
- Mismatch between projected point and parameter in ShapeAnalysis_Curve (#600)
- Infinite loop when Simplifying Fuse operation, CPU to 100% (#557)
Shape Healing
- Revolved shape in STEP file is imported inverted (#699)
Visualization
- Do not write comment into binary PPM image (Image_AlienPixMap)
Data Exchange
- Crash on empty list in STEP (#671)
- Facets with empty normals like 'f 1// 2// 3//' in RWObj_Reader (#520)
- Fix indices during parsing of arrays in GLTF Reader (#602)
- Preserving control directives in Step Export (#601)
- Optimize entity graph evaluating (#562)
Draw
- Fix message color mixing (#685)
- Misprint in vcomputehlr command leading to error if no Viewer (#526)
Coding
- Reducing relying on exceptions (#676)
Full Changelog: V7_9_1...V7_9_2
V8_0_0_rc2
Open CASCADE Technology Version 8.0.0 Release Candidate 2
Open Cascade is delighted to announce the release of Open CASCADE Technology version 8.0.0 Release Candidate 2 to the public.
(Release Candidate 1: https://github.com/Open-Cascade-SAS/OCCT/releases/tag/V8_0_0_rc1)
Overview
Version V8_0_0_rc2 is a candidate release incorporating over 80 improvements and bug fixes compared to version V8_0_0_rc1, bringing the total improvements since version 7.9.0 to over 130 changes.
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-rc2
Core
- Upgraded minimum C++ version requirement to C++17 #537
- Geometric Classes Optimization: Significantly optimized gp_Vec, gp_Vec2d, gp_XY, and gp_XYZ classes by simplifying mathematical computations, replacing indirect API calls with direct data member access in performance-critical sections, and improving matrix operations including inversion, transposition, and power calculations #578
- Reworked atomic and Standard_Condition implementation #598
- Optimized NCollection_Array1 with type-specific improvements #608
- Reworked math_DoubleTab to use NCollection container #607
- Fixed WinAPI resource leaks #625
- Fixed include brackets type issues #635
- Geom package copy optimization #645
Build System and Configuration
- Comprehensive VCPKG Support: Added full VCPKG layout configuration with CMake file placement in share/ directory for compliance, introduced OCCT_PROJECT_NAME parameter for customizing directory structure, and updated environment scripts while maintaining backward compatibility #618, #637, #638
- Added VCPKG port opencascade with TclTk and GTest support #580, #616
- Implemented flexible project root configuration #641
- Fixed build config file validation issues #647
- Disabled GLTF build without RapidJSON #646
- Fixed link errors on macOS when not building using vcpkg #609
- Fixed CSF variable overwriting issues #561
- Fixed paths to 3rd-party in cmake configuration #523
- Fixed ARCH detection for older 32-bit Macs #626
- Removed unused CMake scripts and dependencies #644, #581
- Fixed samples CMake configuration #643
Modeling
- New Helix Toolkit: Implemented a complete TKHelix toolkit with geometric helix curve adaptor and topological builders, featuring advanced B-spline approximation algorithms for high-quality helix representation and comprehensive TCL command interface #648
- Added option to not build history in BRepFill_PipeShell #632
- Fixed GeomFill_CorrectedFrenet hanging in some cases #630
- Fixed infinite loop in Simplifying Fuse operation #557
- Fixed Bnd_BoundSortBox::Compare failures in some cases #518
- General Fuse Optimization: Improved BOPAlgo_PaveFiller performance by adding null checks for triangulation in BRep_Tool::IsClosed, simplifying index lookup logic in BOPDS_DS, and introducing helper functions for better clarity and robustness #514
- Fixed BRepFilletAPI_MakeFiller segfault with two curves and rim #532
- Fixed mismatch between projected point and parameter in ShapeAnalysis_Curve #600
Shape Healing
- Implemented reusing Surface Analysis for Wire fixing #565
Visualization
- Enhanced FFmpeg Compatibility Layer and updated Video Recorder #582
- Fixed binary PPM image comment writing in Image_AlienPixMap #413c08272b
- Updated Graphic3d_Aspects::PolygonOffsets documentation #519
- Marked Immediate Mode rendering methods as deprecated in AIS_InteractiveContext #521
Data Exchange
- Fixed GLTF indices parsing during array processing #602
- Implemented non-uniform scaling in GLTF Import #503
- Fixed GLTF saving edges when Merge Faces is enabled #554
- Changed GLTF export line type to LINE_STRIP #535
- Fixed missing GDT values in STP Import #617
- Preserved control directives in Step Export #601
- Ignored unit factors during tessellation export #577
- Applied scaling transformation in Step Export #513
- Fixed missing Model Curves in IGES Export transfer cache #483
- Fixed XCAFDoc_Editor::RescaleGeometry not rescaling translation of roots reference #529
- Fixed facets with empty normals handling in RWObj_Reader #520
- Added conversion utilities for STEP geometrical and visual enumerations #545
- Added missing headers #530
- Optimized StepData_StepReaderData #543
- Optimized entity graph evaluating #562
- Removed GLTF files from XDEDRAW #649
- Removed unused dependencies from TKXDEDRAW #650
Testing
- Updated GitHub Actions to use latest versions #640
- Added performance summary posting to PR #612
- Fixed master validation workflow #611
- Added daily vcpkg package validation #605
- Updated samples C++ version #606
- Removed extra GitHub jobs #594
- Added ASCII code validation #593
- Migrated PR actions to VCPKG-based #587
- Added compilation on Clang without PCH #540
- Enabled IR integration concurrency #531, #536
Draw and Tools
- Fixed vcomputehlr misprint leading to error if no Viewer #526
- Updated DrawDefault script to handle missing directory cases #542
Documentation
- Added missing description to HLRBRep_HLRToShape methods #525
- Added Copilot instructions for OCCT development #589
How to Upgrade
There are no critical breaking changes at the API level, however note the following:
- C++17 Requirement: The minimum C++ version has been upgraded to C++17. Ensure your compiler supports this standard.
- Deprecated Methods: Some Immediate Mode rendering methods in AIS_InteractiveContext have been marked as deprecated.
Migration should proceed smoothly for most applications.
Performance Improvements
This release includes several significant performance optimizations:
- Geometric Classes: Major performance improvements in gp_Vec, gp_Vec2d, gp_XY, and gp_XYZ classes through direct data access and simplified computations
- Boolean Operations: General Fuse algorithm opt...
V7_9_1
Open CASCADE Technology 7.9.1 Released
Open Cascade is delighted to announce the release of Open CASCADE Technology version 7.9.1 to the public.
Overview
Version 7.9.1 is a maintenance release incorporating over 30 improvements and bug fixes compared to version 7.9.0.
What's New in OCCT 7.9.1
Configuration & Build System
- Update VTK configuration and enable optional components (#395)
- Update file globbing and condition checks for installation paths (#399)
- Extend CMake file filter regex (#400)
- Modify VTK 9x handling (#401)
- Update VTK optional components (#403)
- Remove BUILD_PATCH option in CMake (#418)
- Checking for FILES content (#424)
- Enhance Qt5 directory detection for Windows (#419)
- Remove -symbolic linker flag (#432)
- TBB configuration prioritization to release (#496)
- Fixed paths to 3rd-party in cmake configuration (#523)
Testing & Quality
- Repeating failed tests in GitHub Actions (#412)
- Inspector build error on latest CMake (#477)
- Add a new compilation on Clang without PCH (#540)
Foundation Classes
- Host resolving by itself (#457)
- Update signal handling for GLIBC compatibility on Linux (#458)
- Checking for MallInfo version (#459)
Modeling
- Degenerated curves were not handled by Arrange function (#396)
- Improve handling of polygon parameters in NURBS conversion (#410)
- Handle void bounding box case in BRepBndLib::AddOptimal (#470)
- Bounding BSpline periodic tolerance issue (#468)
- Periodic BSpline curve bounding (#493)
- XCAFDoc_Editor::RescaleGeometry does not rescale translation of roots reference (#529)
- BRepFilletAPI_MakeFillet Segfault with two curves and rim (#532)
- General Fuse (BOPAlgo_PaveFiller) optimization (#514)
Visualization
- Refactor mouse click handling logic for improved double-click detection (#385)
- AIS_Shape bounding box re-computation is not working properly (#422)
Data Exchange
- DE Wrapper invalidating parameters after 'Load' (#393)
- Datum Axis extraction issue (#407)
- STEP: AP242 SchemaName Remove dot (#448)
- IGES Export: Missing Model Curves in transfer cache (#483)
- Small optimization of StepData_StepReaderData (#543)
Documentation
- Enable server-based search and external search options in Doxyfile
Full Changelog: V7_9_0...V7_9_1
Open CASCADE Technology 8.0.0 Release Candidate 1
Open Cascade is delighted to announce the release of Open CASCADE Technology version 8.0.0 Release Candidate 1 to the public.
Overview
Version V8_0_0_rc1 is a candidate release incorporating over 50 improvements and bug fixes compared to version 7.9.0.
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-rc1
Core
- Moved resource directories to
/resourcefolder #427, #429 - Migration of Inspector to own repository #438
- Migration of ExpToCas to own repository #442
- Reorganize source directory to follow "src/Module/Toolkit/Package/File" template #450
- Host search resolving by itself #457
- Update signal handling for GLIBC compatibility on Linux #458
- Checking for MallInfo version #459
- Introducing
GTesttest system into OCCT as a new way to unit testing to improve stability #443 - HashUtils NoExcept optimization #473
Build system
- Fixed CMake configuration with VTK configuration built with OCCT #395, #403
- TBB configuration prioritization to release #496
- Fixed issue with mismatching installation folder on Unix system #399
- Fixed issue with build patch containing dot symbol #400
- CMake Improvements to work with VTK 9x
- Remove BUILD_PATCH option in CMake #418
- Enhance Qt5 directory detection for Windows #419
- Remove
-symboliclinker flag from Unix system, which can lead to RTTI issues #432 - Re-Configuration time optimization #467
Modeling
- GeomFill updated with fix of incorrect arrangement of Degenerated BSpline curve #396
- Improve handling of polygon parameters in NURBS conversion #410
- Fixed issue with calculation of bounding box with faces without PCurves in BRepBndLib::AddOptimal #470
- Fixed issue with periodic BSpline within bounding box calculation #493
Visualization
- Added possibility to not write warnings about unsupported fonts #392
- Improved double click detection event to prevent long click mismatching #385
- Changed selection behavior and allow HandleMouseClick for schemes, allowing to select an object #416
- Fixed issue with re-computing Bounding box #422
Data Exchange
- Added support for SurfaceStyleReflectanceAmbientDiffuse and SurfaceStyleReflectanceAmbientDiffuseSpecular classes and reorganized Rendering Parameters catching #447
- Added option to decrease STP file size for export by removing duplicate entities. Average size improvement is 20% #475
- Fixed issue with File and System coordinate system mixing on DE Wrapper interface for Mesh formats #393
- Added stream to GLTF JSON parser to read lines and points #489
- Fixed crash with Datum extraction from STP file #407
- Removed dot from AP242 SchemaName in "AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF. {1 0 10303 442 1 1 4 }" #448
- Step entity Direction optimization with decreased memory footprint #479
Testing
- Added option to repeat failed tests automatically in GH Actions #412
- Reorganized GitHub actions #480
- GTest tests integration #471, #481, #443
Documentation
- Fixed various typos found in codebase #413, #414, #495
- Migrated documentation generation from TCL to CMake #441
How to Upgrade
There are no critical changes at the API level. Migration should proceed without issues.
What's Changed
- Coding - Add flag for font mgr to avoid error message #392
- Data Exchange - DE Wrapper invalidating parameters after 'Load' #393
- Visualization - Refactor mouse click handling logic for improved double-click detection #385
- Modeling - Degenerated curves were not handled by Arrange function #396
- Configuration - Update VTK configuration and enable optional components #395
- Configuration - Update file globbing and condition checks for installation paths #399
- Configuration - Extend CMake file filter regex #400
- Configuration - Modify VTK 9x handling #401
- Data Exchange - Datum Axis extraction issue #407
- Configuration - Update VTK optional components #403
- Modeling - Improve handling of polygon parameters in NURBS conversion #410
- Testing - Repeating failed tests in GH Action #412
- Documentation - Fix various typos found in codebase #413
- Documentation - Fix various typos found in codebase #414
- Visualization, Selection - allow HandleMouseClick for schemes, allowing to select an object #416
- Configuration - Remove BUILD_PATCH option in CMake #418
- Configuration - Checking for FILES content #424
- Visualization - AIS_Shape bounding box re-computation is not working properly #422
- Coding - Include gxx files from global path #423
- Configuration - Enhance Qt5 directory detection for Windows #419
- Configuration - Remove -symbolic linker flag #432
- Configuration - Adding resource packages to toolkit #427
- Data Exchange, Step - AP242 SchemaName remove dot #448
- Coding - Migration of Inspector to own repository #438
- Coding - Migration of ExpToCas to own repository #442
- Configuration - Resource structure reorganization #429
- Documentation - Migration to CMake from TCL #441
- Configuration - Reorganize repository structure #450
- Configuration - Resource generation source path fix #453
- Documentation - Generation schema fixing #452
- Configuration - Update resource path references in build scripts #454
- Foundation Classes - Host resolving by itself #457
- Documentation - Convert module and toolkit names to lowercase for URL generation #460
- Foundation Classes - Update signal handling for GLIBC compatibility on Linux [#458](https://github.com/Open-Cascade-SAS/OC...
V7_9_0
Open CASCADE Technology 7.9.0 Released
Open Cascade is delighted to announce the release of Open CASCADE Technology version 7.9.0 to the public.
Overview
Version 7.9.0 is a minor release incorporating over 250 improvements and bug fixes compared to version 7.8.0.
What's New in OCCT 7.9.0
Core
- Improved code quality through static analysis and consistent code formatting with Clang-Format.
- Enhanced
Standard_Typeimplementation for better RTTI support and optimizedIsKindoperations. - Reorganized foundation classes for improved performance, including inlining
Standard_Typeinstances. - Deprecated the old aliasing for Handle types (e.g.,
Handle_<Type>). - Improved memory management and container optimization, including refactoring
ShapeHealingMaptoNCollection. - Updated map operations with the new
NCollection_MapAlgofor union, intersection, and other set operations. - Updated the
RemoveAllmethod inAsciiStringto correctly truncate the string.
Build System
- Added VCPKG manifest mode support (beta) for managing third-party dependencies.
- Improved handling of third-party dependencies, including Draco, VTK, and OpenVR from Ubuntu packages.
- Updated the minimum CMake version requirement to 3.10.
- Added an option to enable/disable Git hash extraction in the version string.
- Introduced a warning message regarding LGPL 2.1 licensing limitations for static linking.
- Fixed an issue where
custom.bat/shwas not regenerated in the build directory. - Added compiler version checks for C++17 support.
- Removed Genproj.
- Fixed static linking failures.
- Implemented new PCH for faster compilation.
- Added MinGW default third-party package support.
Modeling
- Fixed multiple issues in the
UnifySameDomainalgorithm, including cases withSurfaceOfRevolutionorSurfaceOfLinearExtrusionbased onTrimmedCurve. - Improved
BRepOffsetandBRepFillalgorithms, including skipping degenerated curves inBRepOffset_Tool::TryProjectand adding boundary checks inBRepFill_Filling. - Enhanced shape processing and transformation handling, including the removal of surfaces after transformation.
- Fixed various geometric computation issues, including resetting Plane YVector and enhancing intersection handling for closed curves in
IntPatch_Intersection. - Improved the robustness of boolean operations.
- Added a warning for incomplete wire detection in
WireFromList. - Fixed NURB conversion for degenerated cases.
- Disabled exception with scaling transformation.
- Fixed degenerated curves in offset operations.
- Corrected intersection curves handling.
- Resolved BRepOffset_Tool segmentation fault.
- Fixed sphere cutting and Boolean operations.
Visualization
- Enhanced
AIS_Manipulatorfunctionality, including flat skin support and transformation depending on camera rotation. - Improved selection handling and transformation persistence.
- Added support for flat skin in
AIS_Manipulatorpresentation. - Enhanced Z-layer handling in
V3d_View, including an option to dump only a selection of z-layers. - Improved transparency handling in various rendering modes.
- Implemented an interface to change
myToFlipOutputofOpenGl_View. - Fixed direction calculation for
Select3D_SensitiveCylindercreated fromGeom_CylindricalSurface. - Added support for vertical mouse movement zooming.
- Enhanced transparency handling for capping in 'Graphic3d_RTM_BLEND_OIT' mode.
- Fixed selection for simple shapes.
- Resolved manipulator interaction issues.
- Fixed transform persistence and view transformation.
- Addressed transparency and rendering issues.
Data Exchange
- Migrated shape healing settings to a single object,
DE_ShapeFixParameters. - STEP:
- Added metadata support for products, including product attributes.
- Enhanced tessellated geometry handling.
- Improved thread safety.
- Fixed multiple crash issues, including those related to null curves and out-of-range indices.
- Added support for
GENERAL_PROPERTY. - Implemented common logic for scaling during the write procedure.
- GLTF:
- Added vertex and edge support.
- Improved material handling, including fixing material color space and edge colors.
- Enhanced import/export functionality.
- Added metadata support.
- Implemented
XCAFDocfilter tree functionality. - Improved handling of IGES imports, including fixing a resource leak when parsing an invalid file and addressing a crash with degenerated BSplines.
- Moved
StepData_ConfParametersto theDESTEPpackage. - Reorganized DE Wrapper classes to have a single style and logic:
DE<FORMAT>_Parameters,DE<FORMAT>_Provider, andDE<FORMAT>_ConfigurationNode.
Testing
- Implemented comprehensive GitHub Actions workflows for build validation (Ubuntu, Windows, MacOS), code formatting, and documentation building.
- Added automated documentation building.
- Enhanced test result comparison systems.
- Improved cross-platform testing support.
- Added WebAssembly build validation.
- Added a new TCL command to clear the test folder of skipped tests.
Documentation
- Updated code documentation and fixed various typos.
- Enhanced API documentation.
- Improved contributing guidelines.
- Updated issue templates and release notes.
- Updated links in the README.
How to Upgrade
For details on upgrading to the new version check Upgrade 790
Windows packages and 3rd-party
The release delivers x64 and x32 binaries in both Release and Debug configurations and third-party libraries, check GitHub Release
Full Changelog: V7_8_0...V7_9_0
V7_9_0_beta2
Release Information
- Release Date (Stable): February 17, 2025
- Version: 7.9.0.beta2
- Git Tag: V7_9_0_beta2
The Beta1 release: https://github.com/Open-Cascade-SAS/OCCT/releases/tag/V7_9_0_beta1
New changes:
- Fixed issue with documentation version extraction
- Fixes crash in RWMesh interface when using old interface of parsing
- Added material export for GLTF Edge
- Fixed issue with ignore
write.schemafor STEP export - Fixed build with WASM 3.x
- Fixed color space with GLTF Import result
- Added sample build on GH Actions (each PR)
- Fixed exporting for incorrect elements(not free vertexes or edges) for GLTF
- Fixed issue with ignore
write.unitsfor STEP export - Fixed not-stable behavior with Product metadata STEP import
Installation
- Use Git tag
V7_9_0_beta2 - Windows installer available with VS 2022 binaries
- Complete source archive available
Coming Soon
- Detailed release content documentation
- Documentation update
- Development update guide
OCCT3D Development Team
Full Changelog: V7_9_0_beta1...V7_9_0_beta2