Files
manifold/scripts/run_pr_perf_guard.sh
T
Zach LoafmanandClaude Opus 4.8 db042ab153 Cut over CrossSection from Clipper2 to boolean2 (#1751)
* Wire CrossSection to the boolean2 backend

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Simplify CrossSection via vertex decimation, not merge-tolerance snap

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Address wiring review: Hull/finite guards, inline mutex, signpost, asserts

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Migrate CrossSection wiring to ApplyFillRule; Simplify decimates only

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Defer transform tolerance scaling to GetPaths; fix Simplify comment

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Tidy wiring comments to house style; use la::isfinite for guards

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Cut over CrossSection from Clipper2 to boolean2

Replace the Clipper2-backed CrossSection implementation with the in-tree boolean2 one and drop the Clipper2 dependency, the MANIFOLD_CROSS_SECTION_BACKEND selector, and its CI and packaging plumbing. The public CrossSection API is unchanged: the FillRule argument is kept but only Positive construction is supported. Samples.Sponge4's degenerate-triangle bound is raised, since boolean2's Simplify leaves more near-collinear vertices (more benign zero-area tris; topology unchanged).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Delegate single-contour CrossSection ctor to the Polygons one

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Always build CrossSection; drop the MANIFOLD_CROSS_SECTION option

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Flatten manifold::boolean2 into manifold; unify JoinType

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Make SimplifyRing O(n log n) via min-heap with lazy invalidation

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Drop stale MANIFOLD_CROSS_SECTION flag from the PR perf guard script

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Scrub Clipper2 and the removed option from the new sanitizer CI script

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 08:06:37 +12:00

41 lines
761 B
Bash

#!/usr/bin/env bash
set -euo pipefail
if [ "$#" -ne 3 ]; then
echo "Usage: $0 <source-dir> <output-dir> <repeats>"
exit 2
fi
SRC_DIR="$1"
OUT_DIR="$2"
REPEATS="$3"
BUILD_DIR="${OUT_DIR}/build"
cmake \
-S "$SRC_DIR" \
-B "$BUILD_DIR" \
-DCMAKE_BUILD_TYPE=Release \
-DMANIFOLD_STRICT=ON \
-DMANIFOLD_PYBIND=OFF \
-DMANIFOLD_TEST=ON \
-DMANIFOLD_PAR=ON
cmake --build "$BUILD_DIR" --target perfTest
BIN=""
for candidate in "${BUILD_DIR}/extras/perfTest" "${BUILD_DIR}/bin/perfTest"; do
if [ -x "$candidate" ]; then
BIN="$candidate"
break
fi
done
if [ -z "$BIN" ]; then
echo "perfTest binary not found in expected paths."
exit 1
fi
mkdir -p "$OUT_DIR"
for i in $(seq 1 "$REPEATS"); do
"$BIN" > "${OUT_DIR}/run${i}.txt"
done