diff --git a/README.md b/README.md index 80473e0..53535b3 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Algorithmic foundation: > DOI: [10.14279/depositonce-5415](https://depositonce.tu-berlin.de/items/8e2988b2-d991-45b5-aad5-9fb7988f3b2f) · CC BY-SA 4.0 · > [Java original](https://github.com/varylab/conformallab) · [sechel.de](https://sechel.de/) -**Status:** v0.9.0 — Phases 1–9a complete, Phase 8b-Lite CGAL API surface. Newton solvers for **five** DCE models (Euclidean / Spherical / HyperIdeal / CP-Euclidean / Inversive-Distance), priority-BFS layout in ℝ²/S²/Poincaré disk, Gauss–Bonnet, tree-cotree cut graph, Möbius holonomy, period matrix (genus 1), fundamental domain, halfedge_uv texture atlas, JSON/XML serialisation, CLI app. Full test suite passing, 0 skipped — see [`doc/api/tests.md`](doc/api/tests.md) for the per-suite breakdown. +**Status:** v0.10.0 — Phases 1–9b complete, Phase 8b-Lite CGAL API surface. Newton solvers for **five** DCE models (Euclidean / Spherical / HyperIdeal / CP-Euclidean / Inversive-Distance), priority-BFS layout in ℝ²/S²/Poincaré disk, Gauss–Bonnet, tree-cotree cut graph, Möbius holonomy, period matrix (genus 1), fundamental domain, halfedge_uv texture atlas, JSON/XML serialisation, CLI app. 277 tests passing, 0 skipped — see [`doc/api/tests.md`](doc/api/tests.md) for the per-suite breakdown. --- @@ -75,6 +75,12 @@ cmake -S code -B build -DWITH_CGAL_TESTS=ON -DCONFORMALLAB_DEV_BUILD=ON # build at the cost of 5–15× slower test RUN. Neutral on macOS. cmake -S code -B build -DWITH_CGAL_TESTS=ON -DCONFORMALLAB_FAST_TEST_BUILD=ON +# Low-memory build: -O0, no PCH, unity batch 1, --no-keep-memory linker. +# Drops cc1plus peak from ~700 MB to ~150 MB per TU. Use on Raspberry Pi +# or any runner with ≤ 4 GB RAM. Always build with -j1. +cmake -S code -B build -DWITH_CGAL_TESTS=ON -DCONFORMALLAB_LOW_MEMORY_BUILD=ON +cmake --build build --target conformallab_cgal_tests -j1 + # Pristine measurement: disable both performance levers, e.g. for # scripts/quality/coverage.sh that needs every TU compiled fresh. cmake -S code -B build -DWITH_CGAL_TESTS=ON \ diff --git a/code/include/CGAL/Discrete_conformal_map.h b/code/include/CGAL/Discrete_conformal_map.h index 869748d..98ad104 100644 --- a/code/include/CGAL/Discrete_conformal_map.h +++ b/code/include/CGAL/Discrete_conformal_map.h @@ -7,13 +7,17 @@ \file CGAL/Discrete_conformal_map.h \ingroup PkgConformalMapRef -User-facing entry point for the Discrete_conformal_map package. +User-facing entry points for the Discrete_conformal_map package (Phase 8b-Lite). -This header provides a single function — `discrete_conformal_map_euclidean` -— that computes a Euclidean discrete-conformal flattening of an open or -closed triangle mesh. Spherical and hyperbolic variants are scheduled -for Phase 8b.2 once the Euclidean pattern is validated by Phase 9a -(Inversive-Distance functional). +This header provides three functions covering all three DCE geometries: + +- `CGAL::discrete_conformal_map_euclidean` — flat conformal map (ℝ²), open or closed mesh +- `CGAL::discrete_conformal_map_spherical` — spherical uniformisation (S²), genus-0 mesh +- `CGAL::discrete_conformal_map_hyper_ideal` — hyperbolic conformal map (H²), genus ≥ 1 + +For circle-packing models see the companion headers: +- `` — `discrete_circle_packing_euclidean` (CP-Euclidean) +- `` — `discrete_inversive_distance_map` (Luo 2004) \section Example Simplest usage diff --git a/doc/getting-started.md b/doc/getting-started.md index 8ed7f20..53e35d1 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -75,6 +75,21 @@ cmake --build build -j$(nproc) > **Note:** `-DWITH_CGAL=ON` implies `-DWITH_VIEWER=ON`. Do not use this in headless > environments — it will fail with `Failed to find wayland-scanner`. +### Mode 4 — Low-memory build (RAM-constrained CI / Raspberry Pi ≤ 4 GB) + +For machines where the CGAL build OOMs (peak ~700 MB per compilation unit at `-O3`): + +```bash +cmake -S code -B build -DWITH_CGAL_TESTS=ON \ + -DCONFORMALLAB_LOW_MEMORY_BUILD=ON +cmake --build build --target conformallab_cgal_tests -j1 +``` + +`LOW_MEMORY_BUILD` applies four measures: `-O0` (no debug info), PCH off, +unity batch size 1, `--no-keep-memory` linker flag. Drops cc1plus peak from +~700 MB to ~150-200 MB per TU. Tests run ~15× slower at `-O0` but all pass. +**Always use `-j1`** — parallel compilation would defeat the memory savings. + --- ## Running a single test diff --git a/doc/reviewer/usability-audit-2026-05-31.md b/doc/reviewer/usability-audit-2026-05-31.md index 5082224..20658ea 100644 --- a/doc/reviewer/usability-audit-2026-05-31.md +++ b/doc/reviewer/usability-audit-2026-05-31.md @@ -539,11 +539,11 @@ exposed via the CGAL public API, but a CLI user cannot reach them. | U1 | README + 4 examples | Usability | 🔴 Critical | ✅ Fixed 2026-05-31 | | U2 | examples/ (missing) | Usability | 🔴 Critical | ✅ Fixed 2026-05-31 | | U3 | `contracts.md:16` | Doc error | 🟡 Medium | ✅ Fixed 2026-05-31 | -| U4 | `README.md:17` | Stale | 🟡 Medium | 🟡 Open | -| U5 | `Discrete_conformal_map.h:14` | Stale | 🟡 Medium | 🟡 Open | +| U4 | `README.md:17` | Stale | 🟡 Medium | ✅ Fixed 2026-05-31 | +| U5 | `Discrete_conformal_map.h:14` | Stale | 🟡 Medium | ✅ Fixed 2026-05-31 | | U6 | README + 2 examples | Stale | 🟡 Medium | 🟡 Open | -| U7 | `getting-started.md` | Missing | 🟠 Minor | 🟡 Open | -| U8 | `README.md` | Missing | 🟠 Minor | 🟡 Open | +| U7 | `getting-started.md` | Missing | 🟠 Minor | ✅ Fixed 2026-05-31 | +| U8 | `README.md` | Missing | 🟠 Minor | ✅ Fixed 2026-05-31 | | U9 | `layout.hpp` + example | Missing | 🟠 Minor | 🟡 Open | | U10 | `getting-started.md` | Missing | 🟠 Minor | 🟡 Open | | U11 | `conformallab_cli.cpp` | Roadmap | 🟠 Minor | 🟡 Open |