Skip to content

Commit 7768cb4

Browse files
domattioliclaude
andcommitted
docs: add v1.4.0 #187 breaking-rename migration section (#257)
The downstream migration guide (v1.0, 2026-04-27) documented only the v0.1.1->v1.0.0 Mesh-alias migration and asserted 'existing code keeps working' — but v1.4.0 shipped the #187 breaking renames with no aliases, which that guide (cited by #257 as the rename-migration authority) never covered. Add a prominent 'v1.4.0 Breaking Renames (#187)' section: rename map (skeletonize->peel_layers, _skeletonize/_layerize->_peel, reskeletonize_local->repeel_local, skeletonize_diff->layers_diff), smooth_mesh keyword-only sdf/size_fn (#251), a cross-version getattr shim, and pin guidance. Mapping verified against installed chilmesh 1.4.1. Version-compat table + header/footer refreshed. Docs-only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018NbQPRUP1Z7n7iWgicuimW
1 parent a4de4dd commit 7768cb4

1 file changed

Lines changed: 75 additions & 5 deletions

File tree

docs/DOWNSTREAM_MIGRATION_GUIDE.md

Lines changed: 75 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Downstream Project Integration Guide
22

3-
**Version:** 2.0 (revised for CHILmesh v1.0.0)
4-
**CHILmesh Version:** 1.0.0+
3+
**Version:** 2.1 (adds v1.4.0 #187 breaking-rename migration)
4+
**CHILmesh Version:** 1.4.0+
55
**Target Projects:** MADMESHR, ADMESH, Valence
66

77
---
@@ -12,6 +12,75 @@ Guide for developers of downstream research projects integrating with CHILmesh v
1212

1313
**TL;DR:** Existing code keeps working — `CHILmesh` is still importable. The new `Mesh` alias is the v1.0.0 preferred idiom; adopt it when convenient. Optional C++ backend gives 46× speedup with bit-identical output.
1414

15+
> **⚠️ v1.4.0 is the exception to "existing code keeps working."** The #187 lexicon
16+
> ratification renamed several public/semi-public symbols **without compatibility
17+
> aliases**. If you allow `chilmesh` 1.4.x and still call an old name, you break on
18+
> upgrade (silently at install, `AttributeError` at runtime). See
19+
> [v1.4.0 Breaking Renames](#-v140-breaking-renames-187) below **before** widening a pin.
20+
21+
---
22+
23+
## ⚠️ v1.4.0 Breaking Renames (#187)
24+
25+
v1.4.0 (2026-07-11) ratified the CHILmesh skeleton/layer lexicon (#187) and renamed
26+
the symbols below **with no compatibility aliases**. Because it shipped as a *minor*
27+
bump, a `chilmesh>=1.x,<2` / caret pin does **not** exclude it — a consumer that (a)
28+
admits 1.4.x and (b) still calls a renamed symbol breaks on upgrade. The
29+
`smooth_mesh` signature change (#251) shipped in the same release and is a second
30+
break vector.
31+
32+
### Rename map
33+
34+
| Old (≤1.3.x) | New (≥1.4.0) | Surface |
35+
|---|---|---|
36+
| `mesh.skeletonize()` | `mesh.peel_layers()` | `CHILmesh` public |
37+
| `mesh._skeletonize()` | `mesh._peel()` | `CHILmesh` private (**removed** — no alias) |
38+
| `_layerize` | `_peel` | `CHILmesh` private |
39+
| `MutableMesh.reskeletonize_local(...)` | `MutableMesh.repeel_local(...)` | `chilmesh.mutations` |
40+
| `MutableMesh.skeletonize_diff(...)` | `MutableMesh.layers_diff(...)` | `chilmesh.mutations` |
41+
| `smooth_mesh(...)` positional splat | `smooth_mesh(method, acknowledge_change=False, *, sdf=None, size_fn=None, **kwargs)` | `CHILmesh` public (#251) |
42+
43+
`skeletonize` / `_skeletonize` / `_layerize` / `reskeletonize_local` / `skeletonize_diff`
44+
no longer exist under their old names — grep your tree for those five groups.
45+
46+
### `smooth_mesh` signature (#251)
47+
48+
`method` and `acknowledge_change` remain positional-or-keyword, so an existing
49+
`mesh.smooth_mesh("laplacian", True)` or `mesh.smooth_mesh(method=..., acknowledge_change=True)`
50+
call is safe. What changed: `sdf` and `size_fn` are now **keyword-only** — any call
51+
that passed them positionally must switch to keyword form.
52+
53+
```python
54+
# Before (≤1.3.x) — positional sdf breaks on 1.4.x
55+
mesh.smooth_mesh("laplacian", True, my_sdf)
56+
57+
# After (≥1.4.0) — sdf/size_fn keyword-only
58+
mesh.smooth_mesh("laplacian", True, sdf=my_sdf)
59+
```
60+
61+
### Migrating a call site
62+
63+
```python
64+
# Before (≤1.3.x)
65+
layers = mesh.skeletonize()
66+
67+
# After (≥1.4.0)
68+
layers = mesh.peel_layers()
69+
```
70+
71+
To stay compatible across the boundary (support both `chilmesh<1.4` and `>=1.4`):
72+
73+
```python
74+
peel = getattr(mesh, "peel_layers", None) or mesh.skeletonize
75+
layers = peel()
76+
```
77+
78+
### Pin guidance
79+
80+
- Pinning `chilmesh<1.4` → safe for now; plan the rename before widening the pin.
81+
- Admitting 1.4.x **and** calling any renamed symbol → **broken on upgrade**; rename
82+
the call sites (or add the `getattr` shim above) first.
83+
1584
---
1685

1786
## What's New in v1.0.0?
@@ -453,7 +522,8 @@ Report at: https://github.com/domattioli/CHILmesh/issues
453522
| 0.1.1 | ✅ Legacy | ✅ Legacy | ✅ Legacy | Old version, still works |
454523
| 0.2.0 | ✅ Recommended | ✅ Recommended | ✅ Recommended | Current, use this |
455524
| 0.2.x | ✅ Recommended | ✅ Recommended | ✅ Recommended | Bug fixes, recommended |
456-
| 1.0.0 | TBD | TBD | TBD | Future, full stability |
525+
| 1.0.0 |||| `Mesh` alias, C++ backend |
526+
| 1.4.0+ | ⚠️ | ⚠️ | ⚠️ | **#187 breaking renames — see [above](#-v140-breaking-renames-187)** |
457527

458528
---
459529

@@ -501,7 +571,7 @@ See `examples/` directory for complete working examples:
501571

502572
---
503573

504-
**Last Updated:** 2026-04-27
505-
**Guide Version:** 1.0
574+
**Last Updated:** 2026-07-21
575+
**Guide Version:** 2.1
506576

507577
For latest information, visit: https://github.com/domattioli/CHILmesh

0 commit comments

Comments
 (0)