This is a huge release! We've packed in all the requested breaking changes to put us on a solid path of API stability going forward. We have removed all of our required dependencies (no more Thrust or GLM!) and dramatically simplified our directory structure and CMake. We have upgraded internally to double precision and added MeshGL64
for those who need to access it. And we have simplified and improved the API in many ways and added a few powerful new features. Please check out our new and improved C++ and TypeScript docs pages!
Breaking Changes
- Use
size_t
instead ofint
across our API, @pca006132 in #833 - Made
CrossSection
(and Clipper2 dependency) optional, @elalish in #850 - Removed Thrust dependency, use optional TBB instead, @elalish, @pca006132 in #852, #856, #857
- Moved
LevelSet()
in as a static member ofManifold
, @elalish in #876, #894 - Upgraded from single to double precision, @pca006132 in #895
- Simplify directory structure, @pca006132, @starseeker in #918, #961
- Remove property tolerance, @elalish in #935
- Remove
Mesh
, @elalish in #950 - Overhaul our CMake, @starseeker in #961, #965, #967, #980, #990, #1005
- Replace GLM with linalg - down another dependency, @elalish in #984
- Separate coplanarity from faceID, @elalish in #991
- Split
Precision
intoEpsilon
andTolerance
, @pca006132, @elalish in #997, #1008, #1007 - Switched property indexing from vector to scalar, @elalish in #1016
- Replace
GetProperties()
withVolume()
andSurfaceArea()
, @elalish in #1022 - SDF boundary cleanup, @elalish in #1037
- Disable exceptions by default, @elalish in #1044
New Features
- SDF interpolation, @elalish in #866
- Add
MeshGL64
, @pca006132 in #927, #1038 - Add
RefineToTolerance()
, @elalish in #938 - Add
SetTolerance()
, @pca006132 in #997
Bindings
- Fix missing 'this' for property access in wasm bindings, @dsafa in #914
- wasm: fix
CrossSection
slice and project bindings, @neilpa in #930 - Expose
Quality::ResetToDefaults()
via C bindings, @NickUfer in #964 - Wasm: update
CrossSection.toPolygons()
return value to match type, @dsafa in #963 - Expose allocation functions via C bindings, @NickUfer in #968
- Fix python binding, @pca006132 in #987
- Fixed memory leak in C bindings, @pca006132 in #1018
- Added some missing C and JS bindings, @elalish in #1023
- Added C bindings for
Triangulate()
, @james-bern in #1034
Bug Fixes
- Triangulation fix, @elalish in #850
- Propagate errors, @pca006132 in #940
- Removed
RotateUp
anduint
, @elalish in #1000 - Fix data races, @pca006132 in #1019
- Fix properties regression, @elalish in #1051
Performance Improvements
- Normal calculation optimization, @pca006132 in #934
- Removed face from halfedge, @pca006132 in #939
- Collider optimization, @pca006132 in #978
- Removed deterministic param, @elalish in #1033
- Free temporary vectors earlier, @pca006132 in #1047
Build/CI Updates
- Avoid Wundef trigger, @starseeker in #861
- Update to emscripten 3.1.61, @elalish in #860
- Fix debug mode msvc build error, @pca006132 in #863
- Fix shadowing warning, @elalish in #867
- Rename
operator""_z
to_uz
, @BenFrantzDale in #869 - Make collider header-only, @pca006132 in #871
- Improve our CMake, @cjmayo in #880, #888, #899, #946, #948, #1002, #1029
- C bindings are required to build Python package, @jonathanhogg in #883
- Remove QuickHull dependency, @Kushal-Shah-03 (through GSoC) in #881, #875, #893, #904, #908
- Add *.pc file for easier use in non-cmake environments, @hzeller in #901
- Enable MeshIO/MANIFOLD_EXPORT in flake, @reinux in #912
- Make cross_section an installable library, @hzeller in #915
- Fix
test-{cmake,pkgconfig}.sh
to create, not append, to test files, @hzeller in #919 - Use mxe to cross compile to windows, @pca006132 in #924
- Fix deployment, @elalish in #937
- Cleanup, @wtholliday in #954, #955, #956, #985
- Use nanobind builtin stubgen, @pca006132 in #949
- Format cmake files, @pca006132 in #975
- Remove CGAL comparisons, @elalish in #1009
- Fix atomic exchange template deduction, @pca006132 in #1035
- Remove OneDPL, @pca006132 in #1042
- Manifold CMake alias, @pca006132 in #1049
- Provide a numeric version number to compare against, @hzeller, @pca006132 in #1054, #1055
Tests
- Fixed test flake, @cjmayo in #848
- Fix hull_test
isMeshConvex()
vertices check, @cjmayo in #898 - Use custom file format for polygon tests, @pca006132 in #913
- Define a test for simple offset booleans, @starseeker in #998
Documentation
- Update README, @cjmayo, @elalish in #892, #920, #1015, #1025
- Implemented typedoc documentation for WASM bindings, @msantic in #907
- Doxygen updates, @elalish in #1014, #1020, #1043
New Contributors
- @BenFrantzDale made their first contribution in #869
- @jonathanhogg made their first contribution in #883
- @Kushal-Shah-03 made their first contribution in #875
- @hzeller made their first contribution in #901
- @reinux made their first contribution in #912
- @dsafa made their first contribution in #914
- @msantic made their first contribution in #907
- @neilpa made their first contribution in #930
- @wtholliday made their first contribution in #954
- @NickUfer made their first contribution in #964
- @james-bern made their first contribution in #1034
Full Changelog: v2.5.1...v3.0.0