CHANGELOG dune-common 2.11.0
Download the Dune 2.11.0 module sources
- dune-common [ tarball: dune-common-2.11.0.tar.gz , signature: dune-common-2.11.0.tar.gz.asc ]
Release 2.11
Build system:
-
Propagate dependencies of
dune-commonwhen consumed. This means that a CMake project may finddune-commonand consume theDune::Commontarget without the need of the dune build system. -
Change the way include directories are set in dune projects. OLD behavior: use
include_directoriesindune_projectto set include dirs for the current project. NEW behavior: Provide a utilitydune_default_include_directoriesto set include dirs on targets manually. Which behavior to activate can be decided in each module by using the new dune policyDP_DEFAULT_INCLUDE_DIRS, which can be set toOLDorNEWcorrespondingly. -
The CMake function
dune_target_enable_all_packagescan now handle Interface libraries too. -
Add a module-specific CMake target
build_<module>_teststo compile only tests associated to a specific<module>. Additionally, add the<module>-name asLABELproperty to all tests created withdune_add_testsin that module. This allows to run these tests withctest -L <module>. -
Change the behavior of
dune_add_test: Do not add all package flags automatically. This new behavior can be controlled by the new Dune policyDP_TEST_ADD_ALL_FLAGS. -
Change the treatment of optional dependency modules listed in dune.module’s
Suggestssection. OLD behavior: when a suggsted dependency is found by cmake, it becomes a required dependency for all downstream consumers of the module because the generated<module>-config.cmakefile contains a linefind_dependency(<suggested dependency>).find_package(module)fails when<suggested dependency>is not found by the downstream consumer. NEW behavior: suggested dependency are not added to<module>-config.cmakeunless explicitly enforced by calling a new helper macrodune_mark_module_as_required_dependency(<suggested dependency>). The behavior is controlled by setting the Dune policyDP_SUGGESTED_MODULE_DEPENDENCIES_REQUIRED_DOWNSTREAMtoOLDorNEW. When set toNEWthe old behavior is recovered if all suggested dependencies are explicitly marked withdune_mark_module_as_required_dependency(<suggested dependency>). When to mark a suggested dependency in this way? If a suggested dependency, if found, is compiled into targets exported by the dune module (e.g. it is needed to compile the module library) then the suggested dependency becomes a required dependency for all downstream modules and must bet marked with the new macro. If the suggested dependency is only used internally (e.g. in tests) or is used header-only, then there is no need to force the dependency upon downstream consumers. -
The
<module>-config.cmakewritten to the build tree now contains path hints for dune module dependencies. This makes it much easier for downstream consumers that do not use the Dune build system to find all module dependencies including transient module dependencies. Before this change, the downstream consumer would need to know about the build location even of transient dependencies that they do not directly use. We write two different config files, one for the build tree to be used in a build/develop setup and one that is being installed. The installed version does not contain any type hints and is therefore not polluted by local build paths.
C++: Changelog
-
A set of interfaces and utilities for multi-type tree structures was added in the subdirectory
dune/common/typetree/and namespaceDune::TypeTree::. This originates in the dune-typetree module but only provides a modernized slim subset of the latter. This subset contains concepts for tree nodes, a class representing paths in a tree, and utilities for accessing children, traversing trees, and creating nested random-access containers matching the tree structure. Downstream modules that only use this subset can drop dune-typetree as a dependency. However, the legacy interfaces and utilities persist in dune-typetree and can still be used together with the functionality added here. -
The
Dune::HybridMultiIndexclass representing multi-indices with mixed compile time and dynamic index entries has been added. -
Dune::IteratorRangenow supports different types for begin and end iterator to model C++20’s sentinel terminated ranges. -
Add preprocessor macro
DUNE_FORCE_INLINEas a portable attribute to force inlining of functions (if supported). -
Add
bit_widthandcountl_zerooverloads forbigunsignedintobjects. -
DUNE_THROWno longer prevents functions from being used inconstexprcontexts, as long the exception is not thrown. As a sideproduct, the macros now also supports the syntaxDUNE_THROW(ExceptionType, a << b) << c << dandDUNE_THROW(ExceptionType) << a << b. -
Add
constexprqualifiers to many member functions ofDenseMatrix,FieldMatrix,DenseVector,FieldVector,ForwardIteratorFacade,BidirectionalIteratorFacade,RandomAccessIteratorFacade,TupleVectorand to the functionrange. -
Add concepts
Std::three_way_comparableandStd::three_way_comparable_withas well as an algorithmStd::lexicographical_compare_three_wayto provide library utilities for the<=>comparison operator. -
Add deduction guides to
TupleVectoranalogous tostd::tuple. -
Add concept definition
Std::indirectly_copyableto constrain theDenseMatrixAssigner. -
Add concept definition
Concept::Numberto represent scalar number types in containers. -
Add the macro
DUNE_ASSUMEfor portable compiler assumption. -
Fix bug in
operator<andoperator>of the iterators returned byIntegralRange. -
Add converting constructor and assignment operator to
FieldMatrixandDiagonalMatrixto allow assignments betweenFieldMatrixes of different field types.
C++: Deprecations and removals
- Remove deprecated alias
Dune::Std::bool_constant. Please usestd::bool_constantdirectly. - Deprecate the utility
integerSequenceEntryin favour of the shortergetfromintegersequence.hh. - Remove the deprecated alias
CollectiveCommunication, useCommunicationinstead. - Remove deprecated
MPIHelper::getCollectiveCommunication, useMPIHelper::getCommunicationinstead. - Remove the deprecated class
Factorialfrommath.hh. Please use the methodfactorialinstead. - Remove the deprecated class
SizeOf. Usesizeof...instead. - Remove the deprecated header
assertandreturn.hhwhich contained the macroDUNE_ASSERT_AND_RETURN. - Remove the deprecated header
keywords.hhwhich contained the macrosDUNE_INLINE_VARIABLEandDUNE_GENERALIZED_CONSTEXPR. Use C++17’sinlineandconstexprinstead. - Remove the deprecated function
Hybrid::equals, useHybrid::equal_toinstead.
Python: Changelog
- The
sdisttar ball name should not use-(see PEP 625) so use_insteadpip install dune-commonwill still work as expected butpip listwill now showdune_commonso the output ofpip listis parsed anywhere this is a breaking change. - Calling
dune.generator.setModuleLog( __file__ , procs=n)at the top of a script logs the names of all jit modules being loaded while the script is running. If the file exists all modules listed will be rebuild in parallel usingnthreads. Setting the environment variableDUNE_LOGMODULESto an integer greater than zero automatically logs the jit modules and rebuilds them in parallel if the file already exists. The value ofDUNE_LOGMODULESsets the number of threads used during the parallel rebuild. See MR https://gitlab.dune-project.org/core/dune-common/-/merge_requests/1540.
|
Legal Statements / Impressum |
Hosted by TU Dresden & Uni Heidelberg |
generated with Hugo v0.111.3
(Feb 9, 23:36, 2026)