Skip to content

Bump manifold pin + fold to single #1690 carry-patch (v0.4.0-alpha.1)#13

Merged
zmerlynn merged 1 commit into
mainfrom
bump-manifold-with-1690
May 3, 2026
Merged

Bump manifold pin + fold to single #1690 carry-patch (v0.4.0-alpha.1)#13
zmerlynn merged 1 commit into
mainfrom
bump-manifold-with-1690

Conversation

@zmerlynn

@zmerlynn zmerlynn commented May 3, 2026

Copy link
Copy Markdown
Owner

Summary

Pre-release groundwork for v0.4.0. Pins manifold to current upstream master and replaces the three shim-side iostream patches with a single vendored diff of elalish/manifold#1690 — the upstream PR that adds MANIFOLD_NO_IOSTREAM natively. Once #1690 lands and the manifold pin moves past it, the carry-patch drops entirely and a v0.4.0 (non-alpha) release follows.

What changed

Helper refactor (cmake/WasmCxxShimManifold.cmake):

  • Drops the Clipper2 pre-declaration. Manifold's manifoldDeps.cmake (post-#1690) owns the FetchContent_Declare(Clipper2 ...) and derives CLIPPER2_NO_IOSTREAM=ON from MANIFOLD_NO_IOSTREAM=ON automatically.
  • Sets MANIFOLD_NO_IOSTREAM=ON as a CMake cache var; manifold's option chain propagates the macros as PUBLIC compile defs.
  • API: removes CLIPPER2_GIT_TAG and EXTRA_CLIPPER2_PATCHES (manifold owns Clipper2 now). MANIFOLD_GIT_TAG / EXTRA_MANIFOLD_PATCHES / SKIP_BUILTIN_PATCHES continue to work.

Carry-patches:

  • Three old patches (0001-clipper2-strip-iostream, 0002-manifold-ifdef-iostream, 0003-manifold-test-main-ifdef-filesystem) deleted.
  • Single new patch 0001-manifold-no-iostream.patch — verbatim diff of #1690 against pinned upstream commit 5f95a3ac.

Test expansion: 71 → 121 tests run on the shim. Adds boolean_complex_test, manifoldc_test, smooth_test alongside existing boolean_test, cross_section_test, sdf_test. Skipped:

  • hull_test, properties_test, samples_test — need the samples helper library (would also require pulling sample-geometry sources).
  • manifold_test — uses std::set and threading constructs without direct <set>/<thread> includes, which our libcxx subset doesn't ship transitively.
  • polygon_testRegisterPolygonTests is no-op'd under MANIFOLD_NO_IOSTREAM, file would compile but contribute zero tests.

Size budget: manifold_tests_size_budget bumped 1.10 → 1.40 MB. Current ~1.07 MB; ~30% headroom for future test additions.

Test plan

  • cmake --preset wasm32 -DWASM_CXX_SHIM_BUILD_MANIFOLD_LINK=ON && cmake --build --preset wasm32 && ctest --preset wasm32: 18/18 ctest entries pass.
  • Inner harness count: 121 manifold tests pass.
  • manifold-link-probe.wasm size: 339 KB (well under 450 KB budget).
  • manifold-tests.wasm size: 1.07 MB (well under 1.40 MB budget).
  • Both wasms have zero unexpected imports (manifold_link_imports_check + manifold_tests_imports_check).
  • Helper API smoke test (wasm_cxx_shim_helper_api_smoke) updated for the new file layout.
  • Idempotent re-config: cmake --build --preset wasm32 after editing a CMakeLists.txt file completes without re-applying the carry-patch (relies on a wrapper-script PATCH_COMMAND in #1690).

Notes for the (one-person) reviewer

  • This is the "what the shim looks like once #1690 lands" preview. CI will pin to a specific upstream commit (5f95a3ac); if #1690 evolves in upstream review, this branch may need re-rolling (alpha.2, alpha.3, etc.).
  • Tag (after merge): v0.4.0-alpha.1+5f95a3ac. The non-alpha v0.4.0 ships once #1690 actually merges and the manifold pin moves past it (drops the carry-patch, drops the +<sha> build-metadata).
  • API breakage in the helper (dropped CLIPPER2_GIT_TAG / EXTRA_CLIPPER2_PATCHES) is fair game in a pre-1.0 alpha. CHANGELOG flags it.

🤖 Generated with Claude Code

Pre-release for v0.4.0. Pins manifold to a current upstream master
commit (5f95a3ac) and replaces the three shim-side iostream patches
with a single vendored diff of elalish/manifold#1690 — the upstream
PR that adds MANIFOLD_NO_IOSTREAM natively. Once #1690 lands and the
manifold pin moves past it, the carry-patch drops entirely and a
v0.4.0 (non-alpha) release follows.

Helper refactor:
  * Drops the Clipper2 pre-declaration. Manifold's manifoldDeps.cmake
    (post-#1690) owns the FetchContent_Declare(Clipper2 ...) and
    derives CLIPPER2_NO_IOSTREAM=ON from MANIFOLD_NO_IOSTREAM=ON
    automatically.
  * Sets MANIFOLD_NO_IOSTREAM=ON as a CMake cache var and lets
    manifold's option chain propagate the macros as PUBLIC compile
    defs on the manifold target.
  * API: removes CLIPPER2_GIT_TAG and EXTRA_CLIPPER2_PATCHES (manifold
    owns Clipper2). MANIFOLD_GIT_TAG / EXTRA_MANIFOLD_PATCHES /
    SKIP_BUILTIN_PATCHES continue to work.

Test expansion: 71 -> 121 tests run on the shim. Adds boolean_complex,
manifoldc, smooth (alongside existing boolean, cross_section, sdf).
Skipped: hull / properties / samples (need samples helper library);
manifold_test (uses std::set/<thread> without direct includes our
libcxx subset doesn't ship); polygon (RegisterPolygonTests is no-op
under MANIFOLD_NO_IOSTREAM, file would compile but contribute zero
tests).

Size budget: manifold_tests_size_budget bumped 1.10 -> 1.40 MB to
accommodate the expanded test set (current ~1.07 MB; ~30% headroom).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@zmerlynn zmerlynn force-pushed the bump-manifold-with-1690 branch from 82a701c to 4de0354 Compare May 3, 2026 15:25
@zmerlynn zmerlynn merged commit 596ab50 into main May 3, 2026
8 checks passed
@zmerlynn zmerlynn deleted the bump-manifold-with-1690 branch May 3, 2026 15:28
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.

1 participant