|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable, user-facing changes to the `libigl` Python bindings are recorded |
| 4 | +here. The project loosely follows [Semantic Versioning](https://semver.org) and |
| 5 | +version numbers match the [PyPI releases](https://pypi.org/project/libigl/#history). |
| 6 | + |
| 7 | +> Historical note: releases up to and including 2.6.2 were published to PyPI |
| 8 | +> without matching git tags or GitHub releases (see #235). Starting with 2.6.3, |
| 9 | +> pushing a version bump to `main` automatically creates the git tag, the GitHub |
| 10 | +> release, and the PyPI upload together (#313). The 2.6.3 section below therefore |
| 11 | +> folds in changes first shipped in the tag-less interim 2.6.2 release, i.e. it |
| 12 | +> covers everything since the last tagged release, 2.6.1. |
| 13 | +
|
| 14 | +## 2.6.3 — 2026-08-31 |
| 15 | + |
| 16 | +### Added |
| 17 | + |
| 18 | +New function bindings: |
| 19 | + |
| 20 | +- **Distances & closest points:** `simplex_simplex_squared_distance`, |
| 21 | + `point_simplex_squared_distance`, `offset_surface`. |
| 22 | +- **Rotations / ARAP:** `polar_svd3x3`, `fit_rotations`. |
| 23 | +- **Quad meshes:** `quad_planarity`, `planarize_quad_mesh`, `quad_edges`. |
| 24 | +- **Curves & mesh topology:** `ramer_douglas_peucker`, `path_to_edges`, |
| 25 | + `connect_boundary_to_infinity`, `smooth_corner_adjacency`, |
| 26 | + `per_face_normals_stable`, `resolve_duplicated_faces`, `vertex_components`, |
| 27 | + `is_vertex_manifold`, `is_intrinsic_delaunay`. |
| 28 | +- **Remeshing:** `triangle.remesh_at_points`. |
| 29 | +- **Winding numbers & distance fields:** `swept_volume`, |
| 30 | + `swept_volume_bounding_box`, `swept_volume_signed_distance`, |
| 31 | + point-cloud and pre-built-tree support for `fast_winding_number`, |
| 32 | + `lipschitz_octree`, `unique_sparse_voxel_corners`, and an edge→vertex (`E2V`) |
| 33 | + output for sparse `marching_cubes`. |
| 34 | +- **Ambient occlusion:** core `ambient_occlusion` binding. |
| 35 | +- **Solvers & energies:** `active_set`, `boundary_conditions`, |
| 36 | + `harmonic_integrated_from_laplacian_and_mass`, Hessian and Hessian-energy |
| 37 | + operators, and cross-field bindings. |
| 38 | +- **Bounding boxes:** oriented-bounding-box functions, `bounding_box_diagonal`. |
| 39 | +- **Curves & predicates:** cubic Bézier evaluation and roots, additional |
| 40 | + `igl::predicates` bindings, `igl::spectra` bindings, and |
| 41 | + `lexicographic_triangulation`. |
| 42 | +- **Misc:** `centroid`, a `face_areas` overload taking intrinsic edge lengths, |
| 43 | + and an optional `seed` parameter for `random_points_on_mesh`. |
| 44 | + |
| 45 | +### Changed |
| 46 | + |
| 47 | +- Bumped the bundled libigl to |
| 48 | + [`f68f01c2`](https://github.com/libigl/libigl/commit/f68f01c23ac82351e2543ce8c529b6d4c89fdf16). |
| 49 | +- `cycodebase` distance queries can now reuse a prebuilt AABB tree / precomputed |
| 50 | + bases for fast repeated queries. |
| 51 | +- Releases are now cut by pushing a version bump to `main`, which tags the |
| 52 | + commit and creates the GitHub release and PyPI upload in one step (#313). |
| 53 | + |
| 54 | +### Packaging / CI |
| 55 | + |
| 56 | +- Added CPython 3.13 wheels. |
| 57 | +- Switched the Linux CI builds to Clang to fix a 2.6.1 performance regression. |
| 58 | +- Bumped `pypa/gh-action-pypi-publish` to 1.13.0. |
| 59 | + |
| 60 | +## 2.6.2 — PyPI only |
| 61 | + |
| 62 | +Interim release published to PyPI on 2025 without a git tag or GitHub release. |
| 63 | +Its changes are folded into the 2.6.3 entry above. |
| 64 | + |
| 65 | +## 2.6.1 — 2025-05-15 |
| 66 | + |
| 67 | +Last release before this changelog was introduced. See the |
| 68 | +[git history](https://github.com/libigl/libigl-python-bindings/commits/2.6.1) |
| 69 | +and the [PyPI release history](https://pypi.org/project/libigl/#history) for |
| 70 | +earlier changes. |
0 commit comments