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
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:
@@ -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,
|
||||||
|
|||||||
88
CHANGELOG.md
88
CHANGELOG.md
@@ -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 (Q1–Q2 research-track
|
||||||
|
alignment; Q3–Q4 porting decisions; Q5–Q6 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-
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user