-
Notifications
You must be signed in to change notification settings - Fork 104
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
v3.0 #1024
Conversation
I think we should probably update the README some more here, but I need to think about it a bit more. Suggestions welcome. @pca006132 WDYT, are we ready for v3.0 release? Anything we should hold for? |
I think the only potential blocker is the C binding stuff, as that is a breaking change. I think we can just go ahead with the changes if no one opposes to it.
|
@SovereignShop btw is it possible for you to make the Clojure binding depends on the C binding alone? Also @geoffder. i.e. without the need for a fork. We can try to integrate the changes needed before we release v3.0. |
Okay, SG - we'll hold this release for the C bindings update if you have time to take care of it. I'm not very comfortable with C myself. Meanwhile I'll update the README - thanks for the comments. |
Unfortunately my hiatus has meant I haven't found time to update my OCaml Manifold library in some time, but I already wasn't depending on a fork, just an unadulterated git submodule. If I'm understanding your question correctly. |
@pca006132 Thanks, but don't burn yourself out over these C bindings. We can put out v3.0 without it too if it's unreasonable in the near term. I don't have a good sense of how much work it will be. |
One more question: should I remove the |
|
@elalish so does releasing 3.0 warrant another blog post? ;-) |
Yeah - I should write some on the smoothing and SDF work I've done too. All in my copious spare time... |
Okay, I've added some README cleanup and bumped the version to 3.0. I also went through our release checklist and though I'm not sure what change(s) was responsible, our WASM is now about twice as fast for me (running examples on ManifoldCAD.org), so that's a good sign. The only question now is whether we should wait for #1048 (or some subset of it) before cutting v3.0. @kintel - you have the strongest opinions here, so let me know. I'd like to get this out the door, but not at the cost of usability. |
I think it would be good if it was possible to query the manifold version in software, e.g. some macros to define Would probably good to have something like this starting with v3.0. (context: I was just looking how easy it would be to get the version from Manifold to implement openscad/openscad#5432 ... but it is not in any Manifold-provided header, and trying to get things from the build system such as cmake is sketchy at best - right now I only see the version number in CMake. It needs to be in a proper *.h header). |
+1: Compile-time version checking would be nice. It doesn't matter much as long as everyone is using manifold from git HEAD, but as we start seeing multiple deployed versions in the wild, we eventually have to make compile-time feature/version checks. |
I'd say wait for #1048 - but thinking about it , it really doesn't matter too much - that doesn't change the API, so it could easily be made part of 3.0.1. Just beat the package managers to the punch by rolling out build system fixes fast :) |
Not sure if that is a good idea. This will render our 3.0 release as something weird that distros should avoid... |
Okay, now's the moment - are we ready to push v3.0? Speak now, or suffer the fate of a point release. |
I think it is ready. |
Just wanted to note that there don't seem to be wheels being built for Python 3.13 |
@jonathanhogg This seems to be an issue related to cibuildwheel version. I guess we can update it and run it again, see if pypi is happy with publishing the same version twice with added wheels? Btw, I think we are targeting stable ABI for cpython, wondering if there is a way to tell python it can reuse the same wheel after 3.12... |
@pca006132: Yeah, I think PyPI will let you add wheels to a release, but not change any of the original files. So it depends on your CI script as to whether it will barf on the existing ones or silently ignore the upload failures it gets. I don't know if there's a way of marking a binary wheel as being compatible with more than one version… Luckily the source build works now ;-) |
https://github.com/elalish/manifold/actions/runs/11906944291 It builds python 3.13 wheels, but the upload action is having issues. Maybe we should manually upload the missing binaries? Will have a look at how to do that. |
OK, I downloaded the artifacts and uploaded them manually. |
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
size_t
instead ofint
across our API, @pca006132 in chores #833CrossSection
(and Clipper2 dependency) optional, @elalish in removed cross_section dependency from manifold #850LevelSet()
in as a static member ofManifold
, @elalish in SDF Refactor #876, SDF collapse #894Mesh
, @elalish in Remove mesh #950Precision
intoEpsilon
andTolerance
, @pca006132, @elalish in Add tolerance value #997, Precision renaming #1008, update tolerance defaults #1007GetProperties()
withVolume()
andSurfaceArea()
, @elalish in Remove GetProperties() #1022New Features
MeshGL64
, @pca006132 in add MeshGL64 #927, always use 64-bit integer for MeshGL64 #1038RefineToTolerance()
, @elalish in Add RefineToPrecision #938SetTolerance()
, @pca006132 in Add tolerance value #997Bindings
CrossSection
slice and project bindings, @neilpa in wasm: fix CrossSection slice and project bindings #930Quality::ResetToDefaults()
via C bindings, @NickUfer in feat: exposes Quality::ResetToDefaults() via C bindings #964CrossSection.toPolygons()
return value to match type, @dsafa in Wasm: update CrossSection.toPolygons() return value to match type #963Triangulate()
, @james-bern in Add C bindings for Triangulate() #1034Bug Fixes
RotateUp
anduint
, @elalish in removed RotateUp and uint #1000Performance Improvements
Build/CI Updates
operator""_z
to_uz
, @BenFrantzDale in Rename operator""_z to _uz per P0330R8, and move into namespace manifold #869test-{cmake,pkgconfig}.sh
to create, not append, to test files, @hzeller in Fix test-{cmake,pkgconfig}.sh to create, not append, to test files. #919Tests
isMeshConvex()
vertices check, @cjmayo in Fix hull_test isMeshConvex() vertices check #898Documentation
New Contributors
Full Changelog: v2.5.1...v3.0.0