-
Notifications
You must be signed in to change notification settings - Fork 96
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
Modularize Manifold #803
Comments
I feel that getting rid of Clipper can be quite painful. If we want to do something about clipper dependency, it will be a large breaking change and should be in the 3.0 plan. I think there were comments about using our own type so it is easier to refactor. |
Isn't clipper pretty much walled-off within |
Also relevant to Blender integration: https://projects.blender.org/blender/blender/issues/120182#issuecomment-1170472 |
ah, I was conflating it with glm, not something optional. probably indicating I should sleep now :P |
Some thou^H^H^H^Hramblings:
Something which would make sense to keep in mind: There seems to be a beginning movement to start packaging Manifold into Linux distros. This currently comes implicitly through the OpenSCAD distro packages, but may become strengthened by other OSS projects adopting manifold. This can be a bit of a pivotal moment, as you'll be held to API versioning/compatibility standards (if not you, the people ending up owning your packages). Good API design and semantic versioning gets you a long way here, but having multiple variants of the same binary library is a bad thing in this domain (unless there is some sort of ultimate build containing everything that makes it into distros). Could be worth keeping in the back of your heads. |
Splitting into different packages should be simple. In fact we have that internally. But probably need less generic naming, as well as more tests to make sure some packages can be optional and things can still work. |
In Godot Engine engine's build we use these dependencies.
The only reasonable dependency we can remove is [ As mentioned earlier |
As we've said before, Manifold has absolutely no dependence on |
This comment was marked as outdated.
This comment was marked as outdated.
I switched to the newest cccl (thrust, libcudacxx). https://github.com/nvidia/cccl and it seems to still requires Note: that https://github.com/NVIDIA/thrust has been archived on Mar 21, 2024 Edited: Compile log where I removed the Edited: There seems to be chain of includes from thrust that go to libcudacxx. |
Interesting, it does seem like they pulled Maybe it's time to finally get off of Thrust - deprecation is a pretty good reason. @pca006132 already did a lot of work to make it easier for us to slot in a different parallel library underneath. @pca006132 Do you have any thoughts on what we should switch to? It's still hard for me to tell if PSTL encompasses TBB or vice versa, or if there's a yet more universal API we should be using. |
If installing CCCL only to build Manifold (or OpenSCAD) then it can configured with:
Perhaps the issue is in using it as a submodule without building (just copying the files). |
Is there a better way for manifold to package our Thrust (or CCCL) dependency than as a submodule? Curious if there's best practices here... |
Personally I'm not using the submodule, but instead installing separately into my system and using it for Manifold and OpenSCAD. But my guess is if using the submodule perhaps there is a need to run cmake etc. and install into a local directory and then use the installed directory when building Manifold. |
I like https://github.com/ingydotnet/git-subrepo for my projects as git submodules are difficult to use. Especially when for example manifold does manifold -> thrust -> imgui |
I have to admit, the problems you're running into @fire (copying dependencies instead of pulling the submodule) makes me think the submodule approach is better. I don't want that giant pile of unused files in my repo any more than you do (which is what I get with git-subrepo). Thrust and CCCL still don't link in the actual CUDA code in our case, so all that I don't really see what all the submodule hate is about anyway - I find them pretty great for managing large 3rd-party dependencies that I don't ever want to touch, besides to update to the latest release occasionally. I feel like everyone who dislikes them is using them when they control both repos. Am I missing something? |
My previous monorepo had like 40+ submodules in various states of nesting. Your use cases may vary. |
I think we probably want a todo list for this one. |
I am not familiar with nanobind. What does it do? |
python binding |
Using system dependencies is always best if we can, though I doubt |
It does seem like #810 is pretty much the last thing. It mostly got delayed to v3, since it's a breaking change. But there's also been a bunch of discussion about whether my technique makes sense or not (relying on an optional linked-in library - |
Actually, we're considering just forking quickhull and pulling it in so we have more opportunity to parallelize it. Then #810 won't be necessary at all and we'll still be down a dependency. |
@elalish is there a discussion somewhere about reworking quickhull for inclusion in Manifold? Want to make sure I'm subscribed if there is ;-) |
Yes, in fact we have a GSOC student working on it right now: #781. More in the investigation phase just now, but moving into more code writing. |
Okay, quickhull dependency has been removed in #881 by pulling in our own version instead. With everything else addressed, I'm going to go ahead and close this as completed. |
We've been getting more requests to have just core Manifold functionality (usually Booleans) with minimal dependencies (like Clipper, convex hulls, SDFs, etc). Our code is largely already partitioned this way, but I think we need to make some build flags to allow it to build modularly. Context: godotengine/godot#91748 (comment)
I'm curious if anyone knows any best practices for how to set this up? ASSIMP does a lot of this. @kintel perhaps this would also help for OpenSCAD? Curious if you have any thoughts.
The text was updated successfully, but these errors were encountered: