Merge pull request 'release: v0.10.0 — reviewer-ready' (#20) from release/v0.10.0 into main
Some checks failed
C++ Tests / test-fast (push) Has started running
C++ Tests / test-cgal (push) Has been cancelled
C++ Tests / quality-gates (push) Has been cancelled
API Docs / doc-build (push) Has been skipped
Mirror to Codeberg / mirror (push) Has been cancelled
Doxygen → Codeberg Pages / publish (push) Failing after 1m2s
Markdown link check / check (push) Successful in 46s
Compile-time perf bench / compile-time-matrix (push) Failing after 51s

This commit is contained in:
2026-05-26 09:25:06 +00:00
6 changed files with 108 additions and 10 deletions

View File

@@ -67,6 +67,7 @@ ignore-words-list = bessel,ist,sinces,nd,te,inout,nin,numer,neet,anc,sinks,doubl
minimisation,maximisation,characterisation, minimisation,maximisation,characterisation,
groupes,fuchsiens,théorie,théorème, groupes,fuchsiens,théorie,théorème,
iff, iff,
honour,honoured,honours,honouring,thead,optimiser,optimisers,
categorise,categorised,categorises,categorising, categorise,categorised,categorises,categorising,
optimisation,optimisations, optimisation,optimisations,
acknowledgement,acknowledgements,acknowledging, acknowledgement,acknowledgements,acknowledging,

View File

@@ -6,6 +6,94 @@ project uses [Semantic Versioning](https://semver.org).
--- ---
## [0.10.0] — 2026-05-26
The **"reviewer-ready"** release. Three PRs (#17 + #18 + #19, 13
thematic commits total) landed: a 100 %-Doxygen-covered public API,
a 14-gate structural quality suite (4 of them required CI), a
researcher-targeted reviewer materials package, the `output_uv_map`
named parameter extended to four of the five DCE solvers, six new
roadmap phases from a full Java-library scan, thirteen new Tier-1/2
literature citations, three RESEARCH-only phases with acceptance
criteria, and a six-mode compile-time workflow matrix.
### Added — reviewer materials (PR #19)
* `doc/reviewer/{briefing,questions,agenda,README}.md` — one-page
reviewer briefing + seven scoped questions (Q1Q2 research-track
alignment; Q3Q4 porting decisions; Q5Q6 process; Q7 the "no"
question) + internal meeting agenda + landing index.
* `doc/reviewer/hub.html` — hand-curated reviewer landing page,
in-repo so the publish URL survives every merge.
* `code/deps/THIRD-PARTY-LICENSES.md` — per-vendored-dep SPDX with
MIT-compatibility analysis (CGAL LGPL §3 vs §4 distinction).
* `doc/architecture/dependencies.md` — required vs optional deps;
standalone-verification recipe.
### Added — new roadmap content (PR #19)
* Six new phases from full Java-library scan: Phase 9d (cones),
9d.4 (variational Möbius centring), 9e (circle-pattern layout),
10d (Koebe circle-domain), 10e (quasi-isothermic, ~800 lines, 6
classes), 10f (Koebe polyhedra), 10g (cyclic-symmetry quotients).
* Three RESEARCH phases with acceptance criteria: 9d.2 (non-Euclidean
cone extensions), 9f (polygon Laplacian on non-triangular meshes,
no Java parent), 10c (Koebe polyhedron rigidity).
* 13 new Tier-1/Tier-2 citations in `doc/math/references.md`.
### Added — compile-time workflow matrix (PR #19)
* PCH + Unity Build defaults: CGAL test wall-time **78 s → 55 s**
(30 %), CPU time 676 s → 167 s (75 %).
* Five new opt-in workflow modes (`BUILD_TESTING=OFF`,
`CONFORMALLAB_HEADERS_CHECK`, `CONFORMALLAB_DEV_BUILD`,
`CONFORMALLAB_FAST_TEST_BUILD`, `CONFORMALLAB_USE_CCACHE`).
* `doc/architecture/compile-time.md` — full measurement + workflow
matrix + macOS-vs-Linux honesty notes.
* `.gitea/workflows/perf-compile-time.yml` — Linux CI bench.
### Added — output_uv_map covers 4 of 5 DCE entries (PR #19)
* `CGAL::discrete_inversive_distance_map` honours `output_uv_map`
via Bowers-Stephenson edge-length reconstruction.
* `CGAL::discrete_circle_packing_euclidean` rejects `output_uv_map`
with a clear `std::runtime_error` (face-based DOFs, Phase 9c).
### Added — structural quality gates (PR #18)
Four scripts promoted to required CI: `license-headers.sh`,
`cgal-conventions.py`, `codespell.sh`, `shellcheck.sh --strict`.
Seven additional local-only gates: clang-format, cmake-format,
cppcheck, sanitizers (ASan + UBSan), clang-tidy, multi-compiler,
reproducible-build, CGAL-version-matrix.
### Added — Doxygen 100 % public-API coverage (PR #17)
* Doxygen coverage: **24 % → 100 %** (396/396 public symbols).
* Fixed `EXCLUDE_PATTERNS` bug that previously silently excluded
every `.hpp`/`.h` — pre-fix HTML had ~0 % API surface.
* MathJax + CGAL `\cgalParam*` aliases.
* New scripts: `scripts/doxygen-coverage.sh` (CI-gateable),
`scripts/gen-headers-md.py` (auto-regenerates `doc/api/headers.md`).
### Changed
* Three headers `<Eigen/Dense>` → `<Eigen/Core>` (none use Eigen
decompositions): `projective_math.hpp`,
`hyper_ideal_visualization_utility.hpp`, `mesh_utils.hpp`.
* `doc/api/tests.md` — CGAL suite 234 → 236 tests.
* `code/.gitignore` — un-ignore `code/deps/THIRD-PARTY-LICENSES.md`.
### Numbers at release
* 259 / 259 tests pass, 0 skipped.
* 100 % Doxygen coverage on public API, 0 warnings.
* 14 / 15 quality gates green, 1 SKIP (no CGAL tarballs locally).
* CI build wall: ~55 s on Apple M1 (30 % vs v0.9.0).
* 13 Tier-1 / Tier-2 literature citations integrated.
---
## [0.9.0] — 2026-05-22 ## [0.9.0] — 2026-05-22
The “DCE-complete + CGAL-surface-complete” release. Two new discrete- The “DCE-complete + CGAL-surface-complete” release. Two new discrete-

View File

@@ -7,8 +7,8 @@ authors:
email: Tarik.moussa95@gmail.com email: Tarik.moussa95@gmail.com
title: "conformallab++" title: "conformallab++"
version: 0.9.0 version: 0.10.0
date-released: 2026-05-22 date-released: 2026-05-26
url: "https://codeberg.org/TMoussa/ConformalLabpp" url: "https://codeberg.org/TMoussa/ConformalLabpp"
repository-code: "https://codeberg.org/TMoussa/ConformalLabpp" repository-code: "https://codeberg.org/TMoussa/ConformalLabpp"
license: MIT license: MIT

View File

@@ -1,4 +1,7 @@
// Copyright (c) 2024-2026 Tarik Moussa. // Copyright (c) 2024-2026 Tarik Moussa.
/*! \file CGAL/Conformal_map/doxygen_groups.h
\brief Doxygen `\defgroup` registrations for the Conformal_map package.
*/
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
// //
// This header contains only Doxygen \defgroup commands. It is included // This header contains only Doxygen \defgroup commands. It is included

View File

@@ -1,4 +1,7 @@
// Copyright (c) 2024-2026 Tarik Moussa. // Copyright (c) 2024-2026 Tarik Moussa.
/*! \file CGAL/Conformal_map/doxygen_namespaces.h
\brief Doxygen `\namespace` documentation blocks for the project namespaces.
*/
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
// //
// Doxygen namespace documentation only — no declarations. Centralised // Doxygen namespace documentation only — no declarations. Centralised

View File

@@ -99,7 +99,7 @@ The four candidate quick-wins from the prior analysis were:
add a fragile maintenance burden (every Eigen version-bump would add a fragile maintenance burden (every Eigen version-bump would
need re-verification of the explicit-instantiation list). If a need re-verification of the explicit-instantiation list). If a
future Eigen update breaks the PCH, this is the next lever. future Eigen update breaks the PCH, this is the next lever.
3. **Header split** for `<CGAL/Discrete_conformal_map.h>** — separate 3. **Header split** for `<CGAL/Discrete_conformal_map.h>` separate
into `_euclidean.h` / `_spherical.h` / `_hyper_ideal.h` so into `_euclidean.h` / `_spherical.h` / `_hyper_ideal.h` so
downstream consumers who only need one geometry pay less. downstream consumers who only need one geometry pay less.
**Deferred**: our test build pulls all three, so the gain is **Deferred**: our test build pulls all three, so the gain is
@@ -232,19 +232,22 @@ Three issues defeat the hot rebuild:
1. **PCH artefacts are not cached by default.** Apple clang's 1. **PCH artefacts are not cached by default.** Apple clang's
`-include-pch ...gch` path embeds timestamps that miss the cache `-include-pch ...gch` path embeds timestamps that miss the cache
lookup. Workaround: set `CCACHE_SLOPPINESS=pch_defines, lookup. Workaround: set the environment variable
include_file_mtime,include_file_ctime,time_macros,file_macro, `CCACHE_SLOPPINESS` to
system_headers` (tried; still 0 % hit on macOS). `pch_defines,include_file_mtime,include_file_ctime,time_macros,file_macro,system_headers`
(tried; still 0 % hit on macOS).
2. **Unity Build .cxx files** have generated paths that change 2. **Unity Build .cxx files** have generated paths that change
between configurations; ccache treats each as a fresh compile. between configurations; ccache treats each as a fresh compile.
3. **CMake's compile-launcher mechanism** doesn't currently combine 3. **CMake's compile-launcher mechanism** doesn't currently combine
with `target_precompile_headers()` in a way that ccache 4.x with the `target_precompile_headers` CMake command in a way that
recognises on Apple clang. Tracked upstream as a known issue. ccache 4.x recognises on Apple clang known-issue upstream.
**On Linux CI** the picture is different: g++ + traditional PCH + **On Linux CI** the picture is different: g++ + traditional PCH +
non-Apple toolchain typically delivers 80 %+ hit rates with ccache. non-Apple toolchain typically delivers 80 %+ hit rates with ccache.
The lever is shipped on by default because it's neutral when it The lever is shipped on by default because it's neutral when it
doesn't help and 10× speedup when it does. doesn't help and 10× speedup when it does.
To force-disable for clean from-scratch measurements: To force-disable for clean from-scratch measurements, set the CMake
`-DCONFORMALLAB_USE_CCACHE=OFF`. cache variable **CONFORMALLAB_USE_CCACHE** to **OFF** at configure
time.