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,
groupes,fuchsiens,théorie,théorème,
iff,
honour,honoured,honours,honouring,thead,optimiser,optimisers,
categorise,categorised,categorises,categorising,
optimisation,optimisations,
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
The “DCE-complete + CGAL-surface-complete” release. Two new discrete-

View File

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

View File

@@ -1,4 +1,7 @@
// 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
//
// This header contains only Doxygen \defgroup commands. It is included

View File

@@ -1,4 +1,7 @@
// 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
//
// 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
need re-verification of the explicit-instantiation list). If a
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
downstream consumers who only need one geometry pay less.
**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
`-include-pch ...gch` path embeds timestamps that miss the cache
lookup. Workaround: set `CCACHE_SLOPPINESS=pch_defines,
include_file_mtime,include_file_ctime,time_macros,file_macro,
system_headers` (tried; still 0 % hit on macOS).
lookup. Workaround: set the environment variable
`CCACHE_SLOPPINESS` to
`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
between configurations; ccache treats each as a fresh compile.
3. **CMake's compile-launcher mechanism** doesn't currently combine
with `target_precompile_headers()` in a way that ccache 4.x
recognises on Apple clang. Tracked upstream as a known issue.
with the `target_precompile_headers` CMake command in a way that
ccache 4.x recognises on Apple clang known-issue upstream.
**On Linux CI** the picture is different: g++ + traditional PCH +
non-Apple toolchain typically delivers 80 %+ hit rates with ccache.
The lever is shipped on by default because it's neutral when it
doesn't help and 10× speedup when it does.
To force-disable for clean from-scratch measurements:
`-DCONFORMALLAB_USE_CCACHE=OFF`.
To force-disable for clean from-scratch measurements, set the CMake
cache variable **CONFORMALLAB_USE_CCACHE** to **OFF** at configure
time.