Commit Graph
16 Commits
Author SHA1 Message Date
AnshulandClaude Sonnet 4.6 ff42ddc885 Weekly benchmarks (#1758)
* support weekly benchmarks

* updated for perftest

* rem clipper

* other tests

* parse cmake output + use ember-benchmark-cases.json

* add only required STl files for ember tests

* remove ember tests+fix corrupted stl file

* shell script to py + minor changes

* mac-os

* more info of machine with linux fallback

* storage for weekly benchmarks

* rebase

* binary stl

* clean

* .

* fix ember phase capture and drop removed phases

- merge stderr into stdout in run_ember_case so man_bench diagnostic
  output is not silently dropped
- remove Assembly/Triangulation/Simplification/Sorting from
  INDEPENDENT_PHASES; their Timer::Print calls were removed in PR #1745
  and they always produced 0.0; only Intersect12 and Winding03 phases
  are still reported
- update build_ember_summary table to match the 4 remaining phases

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* revert runner

* add frontend + trigger on publish + san extended test

* fix formatting

* TEMP: allow workflow_dispatch to exercise data-publish steps for testing

Not for merge - revert before this PR lands. Only relaxing the if: gate
so a manual run can validate the folded run: > block and sanitizer arg
passing reviewers asked about, without waiting for a scheduled/release run.

* Revert "TEMP: allow workflow_dispatch to exercise data-publish steps for testing"

This reverts commit e00c5f5784eefa27255681dce4105bd45be3daa0.

* Move weekly sanitizer lane to Linux, fix artifact path, derive compiler

- Move build_sanitizer/test_sanitizer in weekly_benchmark.yml from
  macos-15 to ubuntu-24.04, matching the existing PR-triggered sanitizer
  lane in manifold.yml, since nothing about ASan/UBSan requires macOS
  here. Drops the compiler overrides and macOS-only setup steps.
- Download sanitizer build artifacts into build/ instead of the
  workspace root, so manifold_test's baked-in RPATH to libsamples can
  actually resolve. It was crashing on load with
  "Library not loaded: @rpath/libsamples.3.dylib" because the artifact
  download flattened the build/ directory away.
- Capture the sanitizer build's own cmake configure log and derive
  SANITIZER_SUMMARY_COMPILER from it at runtime instead of hardcoding
  the string, reusing system_metadata.py's existing helpers.
- Trim set -euo pipefail to set -u in the data-publish steps, since
  GitHub Actions' default bash invocation already applies -e/pipefail.
- Remove the duplicate weeklybenchmark-test job from manifold.yml in
  favor of testing weekly_benchmark.yml directly via workflow_dispatch.

* Merge dashboard pages + remove dead JS fallbacks + gtest JSON output + simplify perf summary formatting + clean up .gitignore

* Stop forcing clang-18 for sanitizer builds, use runner default (gcc)

* small changes

* -Wno-maybe-uninitialized

* review changes

* dead code

* fix cmke read

* change flags

* remove redundant flags and schema version

* /dashboard route + remove upload route + change dead and retention changes

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-02 17:14:38 +08:00
Anshul 895bfc230f Fix benchmark guard and add memory guard (#1762)
* fix commit

* remove cross_section flag

* minor changes

* minor changes 2

* review changes

* base_median=0 case check rem

* remove schema

* switch median to mean

* switch to macos

* more info of machine with linux fallback

* print per-size perfTest memory usage

* .

* .

* pin benchmark_guard to macos-15, drop test build, clean up JSON fields

* rem redundant code

* revert cmake bug

* memory guard

* review feedback

* updated subprocess() func

* rem mismatch logic
2026-07-11 18:55:07 +08:00
Anshul 324bec7bd7 ASan+UBSan workflow lane Pt2 (#1728)
* Move gtest filter to env var

* extract sanitizer gtest filter into shared script

* set explicit ASAN options for sanitizer test lane

* reproduction on failure

* split sanitizer lane into build/test with core-vs-extended subsets, clang-18 pin, and runtime guardrails

* caches files

* add shared libs on path

* lib path added

* change name "test (core/extended subset)" to "(ASan+UBSan)"

* moved runs to scripts

* rem repro

* readme change

* removed cache as discussed with @elalish in meeting

* testing by removing LD_LIBRARY_PATH

* restore

* only keep find and remove hardcoded paths

* run path use origin cmake args

* removed lib path
2026-06-10 22:41:12 +12:00
Anshul ae2dbdb2fb add non-blocking PR benchmark guard in manifold.yml (base vs head perfTest) (#1680)
* init

* upload benchmark artifacts and clean worktrees

* all warning only and run count mismatch

* completely non-blocking and mean of mean run times compared

* remove redundant if: always()

* changed to per benchmark mean

* standardize perf JSON schema with run index, stdev, n_runs, and metadata

* .

* add raw files to logs and clean yml

* add EOF

* .

* move shell to scripts
2026-06-05 12:11:05 +08:00
Anshul f756a74e7d dedicated Linux Clang ASan+UBSan workflow lane (#1666)
* test/init

* add tests
2026-04-22 08:56:44 +12:00
Anshul 076c704c4f ci: add cross-platform determinism check (Part 1) (#1594)
* init determinism.yml file

* integrated with existing ci

* init determinism.yml file

* switched test filter to generate coplanar.obj +trimmed output + -euo pipefail

* minor fix

* replaced nasty gear

* small set of simple single-op determinism cases

* Normalize line endings

* hex-float OBJ dump mode

* intermediate dumps for Perturb3 / boolean_result

* format

* canonicalize hex-float text in determinism compare

* add Perturb3 decomposition lane + print stable hex from C++ dumps + dump full intermediate boolean_result array contents + keep simple-case chec

* clang-format

* boolean debug dump

* Perturb3 decomposition

* script to compare boolean dumps

* binary-tree decomposition probes

* minor fix

* 4->1

* boolean3_000004 fix

* clang format

* boolean3_000015_post_winding_add_inQ.obj

* trig canonicalization at 45 degree

* added multicoplanar in blocking ci

* added Boolean.NonIntersecting

* add Boolean.AlmostCoplanar

* reuse existing verbosity level and dedup dump helpers via boolean_dump.h

* format

* move determinism compare logic into scripts and keep dumps discovery-only

* remove discovery

* clean dead code

* clean
2026-04-19 09:14:47 +12:00
Anshul 802b065e77 Deterministic non-trig (#1623)
* rm unused lilalg wrappers

* fix

* remove linalg log2/pow usage and switch sdf to deterministic helpers

* faster bitwidth

* clz

* format

* non-trig port

* format

* fixes

* log2

* format

* switch cast to uint64_t

* remove manifold::math::exp/log

* remove pow

* initial hashtable size to 1.5x

* format

* Added integer helpers CubeRootFloor() + PowTwoThirdsApprox() for HashTable<GridVert> sizing

* simple cap

* rem dead code

* remove duplicated helper

* CeilLog2 instd of BitWidth
2026-04-13 10:39:28 +08:00
Anshul 3cebb542cd Deterministic trig (#1606)
* init

* sun micro notice

* inline notice and namespace

* minor

* trig replace

* reverted for failing

* add deterministic trig implementation (musl-based)

* switch source trig callsites

* format

* switch linalg trig callsites

* move trig impl to separate header and simplify linalg dispatch

* format

* rem dupli

* minor fixes

* format v2

* minor fix 2

* rename math header and remove trig boilerplate

* explicitly qualified calls + formatting + minor changes

* add years + declaration changes

* changes 1

* format

* updated math.h

* format

* rem contexpr

* rm overload
2026-04-02 19:08:05 +08:00
Anshul 0b527ea45a Add 3MF importer and test coverage (#1575)
* fix upside down cone using cylinder

* minor changes

* minor fixes

* commit import example

* 3mf tests

* formatting

* formattingv2

* importer+testmodify

* formatting

* integrate 3MF into main importer and normalize to glTF conventions

* added missing import logic and fast-xml-parser

* formatting

* review feedback

* formatting

* CI fixes:Added per-converted-mesh source-node tracking and used that for world transforms.
direct manifold source mesh
Sphere test now also uses strict round-trip checks

* CI test final fix

* removed redundant map use and common function

* formatting
2026-03-16 08:56:06 +13:00
Anshul cf01c7bee2 Add importModel example (#1573)
* commit moon

* formatting

* test

* update

* Address PR #1573 review feedback

* format
2026-03-09 21:09:34 +13:00
AnshulandClaude Sonnet 4.6 19eee42716 docs: document degrees vs. radians in JS/TS rotation API (#1565)
* commit

* review-feedback

* Restore Degrees vs. Radians section to tips.md

Lost during merge conflict resolution in previous merge commit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 09:11:33 +13:00
Anshul 5805355b93 doc update Handling Precision Issues (#1564)
* commit

* review
2026-03-05 18:22:17 +13:00
Anshul 9c4f4d75df Fix C include_pt bindings mutating temporary copies (#1556)
* commit

* fix c include_pt bindings without const_cast
2026-03-03 20:56:28 +13:00
Anshul ffe6c02952 Fixes different verbose levels (#1554)
behavior split verbose
2026-03-02 21:44:00 +13:00
Anshul bd55a1f066 Fix integer divide-by-zero in RefineToTolerance (#1547)
* dividebyzerofix

* added tests

* re-commit

* formatting

* linter fix
2026-02-28 13:38:15 +13:00
Anshul 552103eec8 Fix Cylinder(h, 0, r) to support cone with apex at bottom (#1541)
* fix upside down cone using cylinder

* minor changes

* minor fixes
2026-02-27 14:48:10 +08:00