Skip to content
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

Modernize freud binding, build system, and CI. #1308

Open
wants to merge 478 commits into
base: main
Choose a base branch
from
Open

Modernize freud binding, build system, and CI. #1308

wants to merge 478 commits into from

Conversation

joaander
Copy link
Member

@joaander joaander commented Feb 7, 2025

Description

  • Replace Cython with nanobind.
  • Replace scikit-build with scikit-build-core.
  • Replace flake8 and black with ruff.
  • Replace cppcheck with a modern version of clang-tidy.
  • Support Python 3.13.

A big thanks to the large number of people who helped complete this refactoring!

Motivation and Context

Make it easier for developers to improve freud.

How Has This Been Tested?

Checklist:

joaander and others added 30 commits September 17, 2024 08:56
The implementation of `reduceAndReturn` does not allow the previous
pattern of calling `prepare` in `reduce`. In the new implemtnation,
`reduceAndReturn` will return the OLD array even after the new one is
created.

The solution is to override `reset`. In subclasses of
`BondHistogramCompute`, `reset` *must* call the base class implemtnation
which resets `m_historgram`. The subclass must then make new shared
arrays that are specific to that subclass. Lastly, the arrays must also
be initialized in the constructor to allow for the user to construct the
class and use it without calling `reset` first.
@joaander joaander requested review from a team as code owners February 7, 2025 22:01
@joaander joaander requested review from bdice and removed request for a team February 7, 2025 22:01
Copy link
Member

@bdice bdice left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was pinged on this as a code reviewer, so I wanted to stop by just to congratulate the team on the immense amount of work that has gone in here. I had a couple small questions, but nothing blocking. I offer my greatest thanks for all the effort in maintaining a project that was a fond part of my time in the Glotzer lab.

options:
- MacOS
- CPU
- GPU
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does freud have GPU support now?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, this is a copy and paste error.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How will code reviews be managed going forward?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR submitter will request a review, typically over Slack or in person.

@joaander
Copy link
Member Author

joaander commented Feb 8, 2025

I was pinged on this as a code reviewer, so I wanted to stop by just to congratulate the team on the immense amount of work that has gone in here. I had a couple small questions, but nothing blocking. I offer my greatest thanks for all the effort in maintaining a project that was a fond part of my time in the Glotzer lab.

Thanks for looking at this. If I recall correctly, you helped a lot with the boost::python to Cython transition. The extensive unit testing added as part of that was a huge help here. The thorough tests caught many corner cases as we ported the internals over to nanobind.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants