Open Cascade Development Insights #34
dpasukhi
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hello, I would like to share some details about the ongoing OCCT3D (Open Cascade Technologies 3D) 7.9.0 release.
The main topic for today is the changes that will impact the *configuration stage of the OCCT project. In this context, configurations refer to preparing the solution for the build stage.
*Changes to other parts will be shared later.
Agenda:
The main goal of these configuration updates is to simplify and clarify the user and development workflow for everyone.
Removing "genproj" Solution
Starting from OCCT 7.8, the "genproj" solution was marked as "deprecated", meaning it is no longer recommended for use. The "genproj" solution was based on the TK GUI solution and was developed a long time ago when CMake was not as popular or familiar to C++ developers.
The main problem with "genproj" was the complexity of supporting multiple configuration solutions for the OCCT team, compounded by the increasing number of new 3rd-party dependencies in the modern open-source world. Moreover, "genproj" is an internal solution that needs to be reorganized to be comparable with CMake or QMake.
Starting from 7.9, the primary configuration tool will be CMake, meaning only CMake will be supported and maintained by the OCCT team. All scripts, documentation, and solutions for "genproj" will be removed from the official OCCT repository. If your project still requires "genproj", please update your workflow to use CMake before version 7.9.
Benefits of using CMake:
Marking the TBB 3rd-Party as Deprecated
Starting from 7.9, the TBB (Threading Building Blocks, a flexible multithreading library) 3rd-party will be marked as optional and not recommended for general use, although it will still be available.
OCCT 7.8 supports two methods of multithreading: TBB (2021.5+) and standard threads. While TBB is a very flexible and powerful solution, OCCT uses it as an optional 3rd-party library, only leveraging a small portion of its functionality, such as "tbb::for_each" and (optionally) the memory manager. This required delivering a full set of dynamic libraries for just a few functions, sometimes causing conflicts with existing TBB dependencies in user projects.
The primary reason for deprecating TBB is the difficulty of maintaining a high level of integration. Nowadays, we need to avoid deep integration with TBB to comply with certain project licensing requirements.
Our current goal is to avoid extra overhead for most users. Consequently, some internal functionalities will be reorganized to allow disabling OCCT multithreading or making it more flexible from the settings side. This means that even if your project uses TBB and OCCT (without TBB), there will be no issues. However, you will need to reorganize your solutions to call OCCT high-level functions in your multithreaded environment, with internal OCCT multithreading disabled.
The OCCT team will collect feedback on multithreading-related topics from 7.9. Based on the results, TBB may be reintegrated more deeply or removed entirely.
Reorganizing CMake Configuration
OCCT3D is a very powerful solution with many different modules and tools. The primary goal of these changes is to be flexible for our users' needs. For example, some projects require only DE functionality, while others need only modeling. These projects do not need to build and deliver extra functionality.
Planned Extensions:
Integration Support for vcpkg
For a long time, OCCT has been available in the vcpkg package list (see Browse public vcpkg packages). This allowed many users to build and install OCCT with just one click. However, it had some limitations and could not be used if you wanted to debug OCCT.
The primary goal of these changes is to simplify the use of 3rd-party tools and determine the specific list of versions of supported 3rd-party tools.
Starting from 7.9, OCCT will support vcpkg in beta mode. This means the OCCT team will maintain the vcpkg OCCT port, leading to fast package updates and already prepared binary packages in the vcpkg layout for different platforms.
Feel free to share your thoughts and ideas in the comments.
Best regards,
OriginalDmitrii, Technical Leader of OCCT3D.
Beta Was this translation helpful? Give feedback.
All reactions