Skip to content

feat(core): agregar MemorySanitizer, mejorar Regular_Polygon, QuadTre… - #95

Merged
lrleon merged 4 commits into
masterfrom
tikz-1
Jul 20, 2026
Merged

feat(core): agregar MemorySanitizer, mejorar Regular_Polygon, QuadTre…#95
lrleon merged 4 commits into
masterfrom
tikz-1

Conversation

@lrleon

@lrleon lrleon commented Jul 19, 2026

Copy link
Copy Markdown
Owner

…e y TikZ

Se añade un nuevo trabajo en CI para MemorySanitizer con clang, validando el estado por defecto de Regular_Polygon. Se corrigen e inicializan todos los miembros de Regular_Polygon en el constructor por defecto, se valida que lado y ángulo sean finitos, y se corrige get_last_segment(). QuadTree ahora rechaza capacidad cero y bounds inválidos, mejora la eliminación con colapso de ancestros y maneja puntos fuera de rango. TikZ: detección automática de librerías (patterns), escalado para Beamer, y compilación de documentos LaTeX generados en pruebas. point_utils se envuelve en namespace Aleph para mantener compatibilidad. Segment y Ellipse: intersección trata regiones rellenas cerradas. RangeTree2D y AABBTree: debug_snapshot produce índices válidos.

Breaking changes: ninguna.

Summary by CodeRabbit

  • Nuevas funcionalidades

    • Añadidas estructuras de datos R-tree y R*-tree.
    • Mejorada la exportación TikZ/LaTeX: detección automática de librerías, exportación Beamer escalada y centrada, y soporte mejorado para overlays.
    • Añadida opción para compilar y ejecutar con Clang MemorySanitizer (MemorySanitizer CI + opción CMake).
  • Correcciones

    • Mejorado el manejo de regiones cerradas en elipses/triángulos/segmentos (recortes, colisiones y casos degenerados).
    • Mejoradas validaciones y estado de QuadTree/QuadNode (incluye comportamiento cuando no está inicializado).
    • Correcciones en snapshots y en polígonos regulares (inicialización, cierre y segmentos).
  • Documentación y calidad

    • Actualizados versión y changelog; ampliadas pruebas (geométricas, TikZ/LaTeX y sanitización).

…e y TikZ

Se añade un nuevo trabajo en CI para MemorySanitizer con clang, validando el estado por defecto de Regular_Polygon. Se corrigen e inicializan todos los miembros de Regular_Polygon en el constructor por defecto, se valida que lado y ángulo sean finitos, y se corrige get_last_segment(). QuadTree ahora rechaza capacidad cero y bounds inválidos, mejora la eliminación con colapso de ancestros y maneja puntos fuera de rango. TikZ: detección automática de librerías (patterns), escalado para Beamer, y compilación de documentos LaTeX generados en pruebas. point_utils se envuelve en namespace Aleph para mantener compatibilidad. Segment y Ellipse: intersección trata regiones rellenas cerradas. RangeTree2D y AABBTree: debug_snapshot produce índices válidos.

Breaking changes: ninguna.
Copilot AI review requested due to automatic review settings July 19, 2026 20:14
@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d3ee9c96-80b9-4430-962e-6ce7af4cddbc

📥 Commits

Reviewing files that changed from the base of the PR and between a978b5d and d9d3016.

📒 Files selected for processing (8)
  • .github/workflows/ci.yml
  • Tests/point_utils_header_test.cc
  • docs/ci_sanitizer_policy.md
  • point.H
  • polygon.H
  • quadtree.H
  • tikzgeom.H
  • tikzgeom_scene.H
🚧 Files skipped from review as they are similar to previous changes (7)
  • docs/ci_sanitizer_policy.md
  • tikzgeom.H
  • polygon.H
  • .github/workflows/ci.yml
  • point.H
  • tikzgeom_scene.H
  • quadtree.H

Walkthrough

Se actualizan intersecciones geométricas, polígonos regulares, QuadTree y snapshots. También se amplía la exportación TikZ/LaTeX, se añade MemorySanitizer a CMake y CI, y se actualiza la versión a 5.10.0.

Changes

Correcciones geométricas y estructuras espaciales

Layer / File(s) Summary
Intersecciones y elipses
point_utils.H, point.H, Tests/point_test.cc, Tests/geom_algorithms_test_decomp_rangetree_visibility_shortestpath_arrangement.cc
Las intersecciones con regiones cerradas incluyen segmentos contenidos, conservan orientación y calculan correctamente los extremos de elipses rotadas.
Estado y validación de Regular_Polygon
polygon.H, Tests/polygon_test.cc
Se inicializa completamente el estado por defecto, se validan parámetros finitos y se corrige el segmento de cierre.
Validación y compactación de QuadTree
quadnode.H, quadtree.H, Tests/quadtree_test.cc
Se validan límites y capacidades, se manejan árboles vacíos, duplicados y compactación de ancestros.
Snapshots de árboles
geom_algorithms.H, Tests/geom_algorithms_test_boolean_3d_serializer_aabb_misc.cc, Tests/geom_algorithms_test_decomp_rangetree_visibility_shortestpath_arrangement.cc
Los snapshots reservan capacidad y mantienen índices de nodos válidos en árboles grandes.

Exportación TikZ y LaTeX

Layer / File(s) Summary
Dependencias TikZ y bounding boxes
tikzgeom.H, tikzgeom_scene.H, Tests/tikzgeom_test.cc
Se recopilan librerías requeridas y se calculan bounding boxes de elipses rotadas mediante puntos extremos.
Renderizado escalado de documentos
tikzgeom_scene.H
Beamer aplica límites de tamaño, escalado centrado, graphicx y librerías TikZ en escenas únicas y overlays.
Pruebas de exportación y compilación
Tests/tikzgeom_algorithms_test.cc, Examples/CMakeLists.txt, Tests/CMakeLists.txt
Se prueban patrones, modos Beamer, límites inválidos y compilación LaTeX condicional.

MemorySanitizer y automatización CI

Layer / File(s) Summary
Configuración y probe
CMakeLists.txt, Tests/CMakeLists.txt
Se añade la opción MemorySanitizer, sus flags, validaciones y el probe regular_polygon_msan_probe.
Ejecución y documentación CI
.github/workflows/ci.yml, docs/ci_sanitizer_policy.md, README.md
El workflow ejecuta cppcheck, compila y prueba MemorySanitizer, agrega el resultado a CI y documenta la configuración.

Metadatos de versión

Layer / File(s) Summary
Actualización del release
VERSION.txt, .release-please-manifest.json, CHANGELOG.md
La versión pasa a 5.10.0 y se añade la entrada correspondiente al changelog.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Tikz_Scene
  participant Tikz_Plane
  participant LaTeX_Output
  Tikz_Scene->>Tikz_Plane: recopila librerías requeridas
  Tikz_Plane-->>Tikz_Scene: devuelve patterns si corresponde
  Tikz_Scene->>LaTeX_Output: genera preámbulo y escena escalada
  LaTeX_Output-->>Tikz_Scene: documento standalone, beamer u overlay
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed El título menciona cambios principales como MemorySanitizer, Regular_Polygon y QuadTree, y es suficientemente descriptivo aunque esté truncado.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Header Docstring Coverage ✅ Passed Solo hay 2 declaraciones nuevas públicas en headers y ambas tienen docstring; el resto son cambios de implementación, así que la cobertura es 100%.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch tikz-1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a978b5de18

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Tests/CMakeLists.txt
Comment thread Examples/CMakeLists.txt

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends Aleph-w’s geometry tooling and CI coverage: it adds a targeted MemorySanitizer probe, improves TikZ/Beamer export robustness (including dependency detection and scaling), and tightens several geometry/data-structure edge cases with new regression tests.

Changes:

  • Add a new MemorySanitizer CI job + CMake option and a dedicated Regular_Polygon default-state probe.
  • Improve TikZ exports by auto-detecting required TikZ libraries (e.g., patterns), adding Beamer picture scaling, and optionally compiling generated LaTeX in tests/examples.
  • Fix/clarify geometry behavior (Regular_Polygon initialization/validation, Segment–Triangle/Ellipse filled-region clipping) and QuadTree validation/collapse behavior; harden debug snapshots for RangeTree2D and AABBTree.

Reviewed changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
VERSION.txt Bumps library version to 5.10.0.
CHANGELOG.md Adds a 5.10.0 release section.
.release-please-manifest.json Updates release-please manifest version to 5.10.0.
CMakeLists.txt Adds ALEPH_USE_MEMORY_SANITIZER and MSan compiler/linker flags.
.github/workflows/ci.yml Introduces a memory-sanitizer CI job and wires it into required checks.
docs/ci_sanitizer_policy.md Documents the new MemorySanitizer job policy and scope.
README.md Documents the new CMake option for MemorySanitizer.
Tests/CMakeLists.txt Adds a targeted MSan probe target and optional LaTeX toolchain detection for tests.
polygon.H Fully initializes Regular_Polygon default state; validates inputs; fixes closing segment logic and closure semantics.
Tests/polygon_test.cc Extends Regular_Polygon tests for default state, invalid inputs, and get_last_segment().
quadtree.H Adds capacity/bounds validation, duplicate-point handling, safer operations on uninitialized roots, and ancestor collapsing on removal.
quadnode.H Enforces non-empty regions on construction/region set; improves point removal state updates.
Tests/quadtree_test.cc Adds coverage for invalid bounds/capacity, out-of-bounds removals, duplicate-point behavior, and ancestor collapsing.
point.H Updates Segment–Triangle/Ellipse intersection semantics to treat shapes as closed filled regions; fixes rotated ellipse extremal points.
Tests/point_test.cc Adds regression tests for the new filled-region clipping behavior.
geom_algorithms.H Fixes debug snapshot construction to avoid invalidated references; reserves correctly and stores valid child indices.
Tests/geom_algorithms_test_decomp_rangetree_visibility_shortestpath_arrangement.cc Adds a large RangeTree2D debug snapshot validity test + rotated ellipse extremal-point test.
Tests/geom_algorithms_test_boolean_3d_serializer_aabb_misc.cc Adds a large AABBTree debug snapshot validity test.
point_utils.H Wraps legacy helpers in namespace Aleph and re-exports to preserve source compatibility.
tikzgeom.H Adds required TikZ library detection (patterns) and uses rotated ellipse extremal points for bbox.
Tests/tikzgeom_test.cc Asserts that pattern fill correctly reports patterns dependency.
tikzgeom_scene.H Adds dependency unioning across overlay steps, Beamer scaling via \\scalebox, and includes required packages/libraries.
Tests/tikzgeom_algorithms_test.cc Adds tests for dependency emission and optional LaTeX compilation smoke tests when toolchain is available.
Examples/CMakeLists.txt Optionally compiles maintained TikZ example documents when a LaTeX toolchain is detected.

Comment thread CMakeLists.txt
Comment thread Tests/CMakeLists.txt
Comment thread polygon.H Outdated
@github-actions

github-actions Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

⚠️ Baseline was recorded on Intel(R) Core(TM) Ultra 7 265KF but this run used Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz. Absolute times are not comparable across CPUs, so the gate is advisory until the baseline is regenerated on this hardware (run the perf-update workflow on master).

Cellular-automata perf gate

baseline CPU Intel(R) Core(TM) Ultra 7 265KF · compiler gcc 13.3.0 · recorded 2026-06-08T18:09:09Z

Benchmark Baseline (ms) Current (ms) Δ Threshold Status
gol_1024 3426.47 4865.73 +42.0% ±8% ℹ️ advisory
gray_scott_512 7328.14 19846.81 +170.8% ±8% ℹ️ advisory
hashlife_breeder 2057.25 2575.72 +25.2% ±12% ℹ️ advisory
multi_field_lv_512 4285.60 6201.60 +44.7% ±10% ℹ️ advisory
parallel_gol_2048 998.97 9752.34 +876.2% ±20% ℹ️ advisory
wolfram_30_1d 4063.23 10064.84 +147.7% ±8% ℹ️ advisory

Lower wall time is better; Δ is current vs. baseline.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (5)
quadtree.H (1)

150-161: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Optimizar contains_only mediante un retorno temprano.

El método actual evalúa secuencialmente todos los puntos almacenados en el nodo hoja al invocar la función de orden superior for_each_point, incluso si la discrepancia ocurre en el primer elemento. Dado que esta comprobación se ejecuta frecuentemente durante las inserciones en los límites de capacidad, iterar sobre la lista entera puede causar degradación asintótica (llegando a comportamientos de $O(N^2)$ al insertar múltiples elementos en escenarios con capacidades ajustadas dinámicamente o alta cantidad de duplicados).

Se recomienda utilizar directamente el iterador interno para poder abortar la ejecución inmediatamente al detectar una discrepancia y retornar false en $O(1)$.

♻️ Propuesta de refactorización
-  /** `@brief` Return true when every point stored in a leaf equals `@p` p. */
-  [[nodiscard]] static bool contains_only(Node * node, const Point & p)
-  {
-    assert(node != nullptr and node->is_leaf());
-    bool all_equal = true;
-    node->for_each_point([&](const Point & point)
-      {
-        if (point != p)
-          all_equal = false;
-      });
-    return all_equal;
-  }
+  /** `@brief` Return true when every point stored in a leaf equals `@p` p. */
+  [[nodiscard]] static bool contains_only(Node * node, const Point & p)
+  {
+    assert(node != nullptr and node->is_leaf());
+    for (DynList<Point>::iterator it(node->get_points_set()); it.has_curr(); it.next_ne())
+      {
+        if (it.get_curr_ne() != p)
+          return false;
+      }
+    return true;
+  }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@quadtree.H` around lines 150 - 161, Update the static contains_only method to
iterate through the leaf node’s points using its internal iterator rather than
for_each_point, returning false immediately when a point differs from p and true
only after all points match. Preserve the existing node validity assertion and
equality semantics.
.github/workflows/ci.yml (2)

902-905: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Fijar persist-credentials: false en el checkout.

zizmor señala que este nuevo job no desactiva la persistencia de credenciales en el checkout, dejando el token de git disponible en .git/config durante toda la ejecución del job (patrón "artipacked").

🔒️ Fix propuesto
       - name: Checkout
         uses: actions/checkout@v7
+        with:
+          persist-credentials: false
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 902 - 905, Update the actions/checkout
step in the new job to set persist-credentials to false, ensuring the checkout
token is not retained in the repository’s Git configuration while the job runs.

Source: Linters/SAST tools


1-1: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Discrepancia entre la supresión real de cppcheck y lo documentado. --suppress=nullPointer:polygon.H suprime el diagnóstico nullPointer para todo el archivo polygon.H, pero la política documenta esta supresión como específica de Polygon::remove_vertex. Con el alcance actual, cualquier futuro nullPointer genuino en otra parte de polygon.H quedaría silenciado sin que la documentación lo refleje.

  • .github/workflows/ci.yml#L916-925: usar una supresión más estrecha, p. ej. --suppress=nullPointer:polygon.H:<línea> o un comentario // cppcheck-suppress nullPointer justo sobre la línea afectada en Polygon::remove_vertex, en lugar de suprimir el archivo completo.
  • docs/ci_sanitizer_policy.md#L70-82: si se mantiene la supresión a nivel de archivo, actualizar el texto para no implicar una granularidad por función que el comando no ofrece.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml at line 1, Reduce the cppcheck suppression used by
the CI configuration around the Polygon::remove_vertex exception so it applies
only to the affected line or statement, using a line-specific suppression or an
inline cppcheck-suppress comment instead of suppressing all of polygon.H. Keep
docs/ci_sanitizer_policy.md aligned with the resulting suppression scope; only
describe function-specific behavior if the implementation actually provides it.
tikzgeom_scene.H (1)

98-114: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Lógica de deduplicación de librerías TikZ duplicada entre tikzgeom.H y tikzgeom_scene.H. Ambas clases implementan de forma independiente el mismo patrón "añadir a un Array<std::string> si no está ya presente".

  • tikzgeom_scene.H#L98-L114: append_unique_libraries reimplementa la deduplicación elemento-por-elemento sobre un Array de origen.
  • tikzgeom.H#L405-L413: append_unique_library implementa el mismo patrón para un único string.

Se podría extraer una función libre compartida (p. ej. en un header de utilidades comunes) que ambas clases reutilicen, evitando mantener dos implementaciones equivalentes.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tikzgeom_scene.H` around lines 98 - 114, Extrae la lógica común de
deduplicación de bibliotecas a una función libre compartida en un header de
utilidades, y reutilízala desde tikzgeom_scene.H:98-114 mediante
append_unique_libraries y desde tikzgeom.H:405-413 mediante
append_unique_library; elimina ambas implementaciones duplicadas, preservando el
comportamiento para fuentes completas y elementos individuales.
point.H (1)

1929-1950: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Lambda covered duplicada entre intersects_with(Triangle&) e intersection_with(Triangle&).

La misma lógica (punto cubierto por el triángulo o alguna de sus aristas) se redefine idéntica en ambas funciones. Si una se modifica (p. ej. para manejar un nuevo caso límite) y la otra no, ambas dejarán de estar sincronizadas.

♻️ Extraer helper compartido
+  private:
+    static bool triangle_covers_point(const Triangle & t,
+                                       const DynList<Segment> & edges,
+                                       const Point & p)
+    {
+      if (t.contains(p))
+        return true;
+      for (const Segment & edge : edges)
+        if (edge.contains(p))
+          return true;
+      return false;
+    }
+
   inline bool Segment::intersects_with(const Triangle & t) const
   {
     const auto edges = t.edges();
-    const auto covered = [&t, &edges](const Point & p)
-      {
-        if (t.contains(p))
-          return true;
-        for (const Segment & edge : edges)
-          if (edge.contains(p))
-            return true;
-        return false;
-      };
+    const auto covered = [&t, &edges](const Point & p)
+      { return triangle_covers_point(t, edges, p); };

     if (covered(src_) or covered(tgt_))
       return true;

(aplicar el mismo cambio en intersection_with(const Triangle&))

Also applies to: 1991-2007

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@point.H` around lines 1929 - 1950, Extrae la lógica duplicada de la lambda
covered en Segment::intersects_with(const Triangle&) y
Segment::intersection_with(const Triangle&) a un helper compartido que determine
si un Point está cubierto por el triángulo o cualquiera de sus aristas.
Reutiliza ese helper en ambas funciones y conserva exactamente el comportamiento
actual para los vértices, puntos interiores y puntos sobre las aristas.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Examples/CMakeLists.txt`:
- Around line 84-116: Agregar el script Examples/verify_latex_example.cmake
referenciado por _VERIFY_LATEX_EXAMPLE y ejecutado por
add_tikz_latex_example_test(). El script debe validar el ejemplo indicado por
EXAMPLE_PATH usando PDFLATEX_PATH, OUTPUT_DIR y MODE, y devolver un fallo claro
cuando la compilación o la verificación del PDF no sean correctas, para que las
pruebas TikzExamples.* funcionen al activar el toolchain LaTeX.

---

Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 902-905: Update the actions/checkout step in the new job to set
persist-credentials to false, ensuring the checkout token is not retained in the
repository’s Git configuration while the job runs.
- Line 1: Reduce the cppcheck suppression used by the CI configuration around
the Polygon::remove_vertex exception so it applies only to the affected line or
statement, using a line-specific suppression or an inline cppcheck-suppress
comment instead of suppressing all of polygon.H. Keep
docs/ci_sanitizer_policy.md aligned with the resulting suppression scope; only
describe function-specific behavior if the implementation actually provides it.

In `@point.H`:
- Around line 1929-1950: Extrae la lógica duplicada de la lambda covered en
Segment::intersects_with(const Triangle&) y Segment::intersection_with(const
Triangle&) a un helper compartido que determine si un Point está cubierto por el
triángulo o cualquiera de sus aristas. Reutiliza ese helper en ambas funciones y
conserva exactamente el comportamiento actual para los vértices, puntos
interiores y puntos sobre las aristas.

In `@quadtree.H`:
- Around line 150-161: Update the static contains_only method to iterate through
the leaf node’s points using its internal iterator rather than for_each_point,
returning false immediately when a point differs from p and true only after all
points match. Preserve the existing node validity assertion and equality
semantics.

In `@tikzgeom_scene.H`:
- Around line 98-114: Extrae la lógica común de deduplicación de bibliotecas a
una función libre compartida en un header de utilidades, y reutilízala desde
tikzgeom_scene.H:98-114 mediante append_unique_libraries y desde
tikzgeom.H:405-413 mediante append_unique_library; elimina ambas
implementaciones duplicadas, preservando el comportamiento para fuentes
completas y elementos individuales.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4bdcb9d0-75a8-4530-a42c-fa7417cdaaf7

📥 Commits

Reviewing files that changed from the base of the PR and between ab20966 and a978b5d.

📒 Files selected for processing (24)
  • .github/workflows/ci.yml
  • .release-please-manifest.json
  • CHANGELOG.md
  • CMakeLists.txt
  • Examples/CMakeLists.txt
  • README.md
  • Tests/CMakeLists.txt
  • Tests/geom_algorithms_test_boolean_3d_serializer_aabb_misc.cc
  • Tests/geom_algorithms_test_decomp_rangetree_visibility_shortestpath_arrangement.cc
  • Tests/point_test.cc
  • Tests/polygon_test.cc
  • Tests/quadtree_test.cc
  • Tests/tikzgeom_algorithms_test.cc
  • Tests/tikzgeom_test.cc
  • VERSION.txt
  • docs/ci_sanitizer_policy.md
  • geom_algorithms.H
  • point.H
  • point_utils.H
  • polygon.H
  • quadnode.H
  • quadtree.H
  • tikzgeom.H
  • tikzgeom_scene.H

Comment thread Examples/CMakeLists.txt
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 20, 2026
…e y TikZ

Se añade un nuevo trabajo en CI para MemorySanitizer con clang, validando el estado por defecto de Regular_Polygon. Se corrigen e inicializan todos los miembros de Regular_Polygon en el constructor por defecto, se valida que lado y ángulo sean finitos, y se corrige get_last_segment(). QuadTree ahora rechaza capacidad cero y bounds inválidos, mejora la eliminación con colapso de ancestros y maneja puntos fuera de rango. TikZ: detección automática de librerías (patterns), escalado para Beamer, y compilación de documentos LaTeX generados en pruebas. point_utils se envuelve en namespace Aleph para mantener compatibilidad. Segment y Ellipse: intersección trata regiones rellenas cerradas. RangeTree2D y AABBTree: debug_snapshot produce índices válidos.

Breaking changes: ninguna.
Copilot AI review requested due to automatic review settings July 20, 2026 15:59
…ests

Tests/regular_polygon_msan_probe.cc and Examples/verify_latex_example.cmake
were referenced by CMakeLists.txt in d9d3016 but never committed, so the
memory-sanitizer CI job failed with "Cannot find source file".

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 20, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 25 out of 25 changed files in this pull request and generated 3 comments.

Comment thread Tests/quadtree_test.cc
Comment thread polygon.H
Comment thread point.H
…e y TikZ

Se añade un nuevo trabajo en CI para MemorySanitizer con clang, validando el estado por defecto de Regular_Polygon. Se corrigen e inicializan todos los miembros de Regular_Polygon en el constructor por defecto, se valida que lado y ángulo sean finitos, y se corrige get_last_segment(). QuadTree ahora rechaza capacidad cero y bounds inválidos, mejora la eliminación con colapso de ancestros y maneja puntos fuera de rango. TikZ: detección automática de librerías (patterns), escalado para Beamer, y compilación de documentos LaTeX generados en pruebas. point_utils se envuelve en namespace Aleph para mantener compatibilidad. Segment y Ellipse: intersección trata regiones rellenas cerradas. RangeTree2D y AABBTree: debug_snapshot produce índices válidos.

Breaking changes: ninguna.
Copilot AI review requested due to automatic review settings July 20, 2026 16:24

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 27 out of 27 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

polygon.H:1207

  • Regular_Polygon::is_closed() changed from a static method that always returned true to an instance method returning num_vertex_ >= 3. This is a public API/behavior change: any downstream call sites using Regular_Polygon::is_closed() (static) will stop compiling, and code relying on the old “always closed” semantics will change behavior. This also conflicts with the PR description’s claim of “Breaking changes: ninguna” unless explicitly documented as intentional.
    /** @brief Check if the polygon is a valid closed regular polygon.
     *  @return True for constructed polygons and false for the default empty state.
     *  @note This is an instance query because closure depends on whether the
     *        object represents a constructed polygon or the default empty state.
     */
    [[nodiscard]] bool is_closed() const noexcept { return num_vertex_ >= 3; }

@lrleon
lrleon merged commit 334bed0 into master Jul 20, 2026
68 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants