Repository navigation
Merge plan for the dev-clean series of pull requests (#407 to #469) #470
Description
Cette issue présente la série de pull-requests #407 à #469, qui remplace #403. Elles viennent de la branche dev-clean de Jordan08/codac, partent de l'état actuel de codac2 et y apportent, en 63 commits d'une taille relisible, le travail fait dans les branches fix-warnings-v2 puis GAOL-v2.
Démarche
- Remplacer IBEX par GAOL. Codac ne se servait d'IBEX que pour GAOL, sur lequel repose
codac2::Interval. Codac trouve maintenant GAOL sur le système ou compile le master du fork Jordan08/GAOL, qui porte les correctifs dont Codac a besoin : les garde-fous que Codac maintenait autour de GAOL disparaissent, et les options de compilation (arrondi, FMA) viennent de GAOL lui-même. - Outiller le debug et la CI. ASan/UBSan en Debug, couverture de code (
WITH_COVERAGE), exemples lancés comme tests, workflows Debug sous Linux, macOS et Windows, vérification du paquet installé (find_packageet pkg-config). - Reprendre le reste de Fix warnings v2 #403. Corrections de bugs relevés par les sanitizers, corrections d'avertissements, packaging CMake, opérateur
@en Python, documentation.
Chaque commit correspond à une PR, dont la description explique d'où vient la modification et à quoi elle sert. Chaque commit qui touche au code ou au build a été compilé et testé seul (Linux, Clang 18, Release, avec les bindings Python et les exemples) : la suite de tests passe à chaque étape. L'extension CAPD, non installée, n'a pas été compilée : #423 n'est vérifiée que par relecture. L'état final a en plus passé la CI complète du fork (Linux, macOS, Windows, Docker, Debug sous sanitizers) sur la branche GAOL-v2, qui a le même contenu ; celle de dev-clean est en cours.
Organisation de la série
| Bloc | Rangs | PR | Contenu |
|---|---|---|---|
| 0 | 1 | #407 | .gitignore |
| 1 – GAOL | 2–10 | #408–#416 | Conversions IBEX retirées, Approx relatif, passage à GAOL, CI et manuel sans IBEX, std::abs, garde-fous retirés, atan2 de GAOL |
| 2 – FMA | 11–12 | #417–#418 | Activation de GAOL_FMA, export de Threads |
| 3 – Debug | 13–28 | #419–#434 | Les 10 correctifs C++, puis ASan/UBSan, en-têtes dans src/, WITH_COVERAGE, exemples, make check |
| 4 – CI | 29–37 | #435–#443 | Workflows sur toutes les branches, Doxygen, wheels, workflows Debug, doc des tests |
| 5 | 38–62 | #444–#468 | CMake et packaging, warnings, opérateur @, documentation |
| 6 | 63 | #469 | Page de couverture |
Merger dans l'ordre
Les PR se suivent : chacune part de la précédente. Il faut donc les merger dans l'ordre de la liste ci-dessous, en commençant par #407.
- Tant que les PR précédentes ne sont pas mergées, une PR affiche aussi leurs commits ; le sien est toujours le dernier. Une fois la précédente mergée, elle ne montre plus que le sien.
- Pour que cela marche, il faut merger avec « Create a merge commit » ou « Rebase and merge ». Avec « Squash and merge », les PR suivantes ne reconnaîtraient plus les commits déjà intégrés et devraient être rebasées.
- Les workflows d'une PR venant d'un fork attendent l'approbation d'un mainteneur avant de tourner.
Liste des PR à valider, dans l'ordre
- Ignore .pydevproject and CMakePresets.json #407 Ignore .pydevproject and CMakePresets.json
- Remove the IBEX conversions and the IBEX functions of vibes.h #408 Remove the IBEX conversions and the IBEX functions of vibes.h
- Make Approx<double> relative for large values, handle NaN and inf #409 Make Approx relative for large values, handle NaN and inf
- Build Codac on GAOL from Jordan Ninin's fork instead of IBEX #410 Build Codac on GAOL from Jordan Ninin's fork instead of IBEX
- Stop installing IBEX in the workflows, Docker scripts and packages #411 Stop installing IBEX in the workflows, Docker scripts and packages
- Drop the MinGW jobs whose mingw-w64 the GAOL fork refuses #412 Drop the MinGW jobs whose mingw-w64 the GAOL fork refuses
- Document in the manual that Codac depends on GAOL instead of IBEX #413 Document in the manual that Codac depends on GAOL instead of IBEX
- Call std::abs in Interval::smag() #414 Call std::abs in Interval::smag()
- Call GAOL directly, without the guards its fork makes unnecessary #415 Call GAOL directly, without the guards its fork makes unnecessary
- Take atan2 from GAOL, whose fork now implements it #416 Take atan2 from GAOL, whose fork now implements it
- Build GAOL with the FMA instructions and pass its flags on #417 Build GAOL with the FMA instructions and pass its flags on
- Hand Threads to the users of codac-config.cmake #418 Hand Threads to the users of codac-config.cmake
- Add assert_release_unreachable and fix Interval::init_from_list #419 Add assert_release_unreachable and fix Interval::init_from_list
- Break the shared_ptr cycle between PavingNode parents and children #420 Break the shared_ptr cycle between PavingNode parents and children
- Fix object ownership in the tube and contractor Python bindings #421 Fix object ownership in the tube and contractor Python bindings
- Fix the acos/sinh bindings and the | in the cart_prod assertions #422 Fix the acos/sinh bindings and the | in the cart_prod assertions
- Rename the CAPD PEIBOS result alias T to PEIBOS_CAPD_Result #423 Rename the CAPD PEIBOS result alias T to PEIBOS_CAPD_Result
- Avoid log10(0) when formatting integer values in IPE figures #424 Avoid log10(0) when formatting integer values in IPE figures
- Replace resize_save_values with Eigen's conservativeResize #425 Replace resize_save_values with Eigen's conservativeResize
- Define Eigen's MADD and ASSUME_ALIGNED macros for MSVC arm64 and UBSan #426 Define Eigen's MADD and ASSUME_ALIGNED macros for MSVC arm64 and UBSan
- Generalize IsIntervalDomain to any type flagged is_interval_based #427 Generalize IsIntervalDomain to any type flagged is_interval_based
- Use the portable PI constant instead of the non-standard M_PI #428 Use the portable PI constant instead of the non-standard M_PI
- Enable ASan/UBSan in Debug builds when the toolchain ships the runtime #429 Enable ASan/UBSan in Debug builds when the toolchain ships the runtime
- Compile against the headers in src/ instead of build/include copies #430 Compile against the headers in src/ instead of build/include copies
- Add the WITH_COVERAGE option and the coverage targets #431 Add the WITH_COVERAGE option and the coverage targets
- Update the examples to axis() in set_axes and draw every subset #432 Update the examples to axis() in set_axes and draw every subset
- Build and run the examples as ctest tests when TEST_EXAMPLES is ON #433 Build and run the examples as ctest tests when TEST_EXAMPLES is ON
- Fix make check stopping on a non-existent codac target #434 Fix make check stopping on a non-existent codac target
- Run the workflows on every branch and cancel superseded runs #435 Run the workflows on every branch and cancel superseded runs
- Retry the Doxygen install on Windows, pin 1.17.0 on Intel macOS #436 Retry the Doxygen install on Windows, pin 1.17.0 on Intel macOS
- Build the wheels with python -m build and an SPDX license #437 Build the wheels with python -m build and an SPDX license
- Run only the Python tests in the wheel-building matrices #438 Run only the Python tests in the wheel-building matrices
- Add Debug workflows with sanitizers and coverage #439 Add Debug workflows with sanitizers and coverage
- Run the examples in every workflow job that runs the tests #440 Run the examples in every workflow job that runs the tests
- Build Catch2 for the macOS deployment target, not Homebrew's #441 Build Catch2 for the macOS deployment target, not Homebrew's
- Request the arm64 Python interpreter on Apple Silicon runners #442 Request the arm64 Python interpreter on Apple Silicon runners
- Document the tests, sanitized Debug builds, examples and coverage #443 Document the tests, sanitized Debug builds, examples and coverage
- Set C++20 without compiler extensions on every target #444 Set C++20 without compiler extensions on every target
- Treat the Eigen and Catch2 headers from FetchContent as system headers #445 Treat the Eigen and Catch2 headers from FetchContent as system headers
- Set CMP0156 so that each static library is linked once #446 Set CMP0156 so that each static library is linked once
- Add the DEB CPack generator only when dpkg-deb is available #447 Add the DEB CPack generator only when dpkg-deb is available
- Set CMAKE_POSITION_INDEPENDENT_CODE before src/, drop the manual -fPIC #448 Set CMAKE_POSITION_INDEPENDENT_CODE before src/, drop the manual -fPIC
- Initialize PYTHON_EXECUTABLE from the interpreter pybind11 found #449 Initialize PYTHON_EXECUTABLE from the interpreter pybind11 found
- Require CMake 3.10 in the standalone example and test projects #450 Require CMake 3.10 in the standalone example and test projects
- Export the Codac targets and fix codac.pc for installed consumers #451 Export the Codac targets and fix codac.pc for installed consumers
- Check in CI that find_package and pkg-config consumers agree #452 Check in CI that find_package and pkg-config consumers agree
- Fix missing override, class/struct mismatch and hidden overloads #453 Fix missing override, class/struct mismatch and hidden overloads
- Fix C++20 operator== ambiguity, static functions in headers, printf #454 Fix C++20 operator== ambiguity, static functions in headers, printf
- Fix unused-parameter warnings in CtcDeriv binding and style parsing #455 Fix unused-parameter warnings in CtcDeriv binding and style parsing
- Fix braced-scalar-init, shadowing and unused variables in tests #456 Fix braced-scalar-init, shadowing and unused variables in tests
- Fix the misleading-indentation warning in convex_hull #457 Fix the misleading-indentation warning in convex_hull
- Fix Visual C++ warnings and the extra semicolons of vibes.h #458 Fix Visual C++ warnings and the extra semicolons of vibes.h
- Disable Clang's -Wself-assign-overloaded in in-place operator bindings #459 Disable Clang's -Wself-assign-overloaded in in-place operator bindings
- Add the @ operator for matrix products to the Python binding #460 Add the @ operator for matrix products to the Python binding
- Upgrade the Doxyfile to 1.17 and expand the operator macros #461 Upgrade the Doxyfile to 1.17 and expand the operator macros
- Make doxygen2docstring independent of the Doxygen version #462 Make doxygen2docstring independent of the Doxygen version
- Fail the configuration when Doxygen or doxygen2docstring.py fails #463 Fail the configuration when Doxygen or doxygen2docstring.py fails
- Fix the Sphinx warnings and build the manual into manual/html #464 Fix the Sphinx warnings and build the manual into manual/html
- Compile the parallelepiped, peibos and shape snippets as tests #465 Compile the parallelepiped, peibos and shape snippets as tests
- Add the Python pendulum stability analysis to the Ellipsoid manual #466 Add the Python pendulum stability analysis to the Ellipsoid manual
- Document how to use Codac from an external C++ or Python project #467 Document how to use Codac from an external C++ or Python project
- Add an Examples section and the 2.0.3 to 2.1.1 changelog #468 Add an Examples section and the 2.0.3 to 2.1.1 changelog
- Add the summary page of the code coverage #469 Add the summary page of the code coverage
Activity
Jordan08 commentedon Sep 19, 2026
Fermée avec les PR #407 à #469 : la série est refaite sous forme de graphe de dépendances, depuis la branche
dev-clean-v2. Une nouvelle issue la récapitulera.Jordan08 commentedon Sep 20, 2026
La série en graphe annoncée ici est ouverte : #471 la récapitule (démarche, graphe des dépendances, règles de merge, validation et liste des PR #472 à #535 dans l'ordre conseillé).