Skip to content

Implement a subset of signac#359

Draft
joaander wants to merge 1 commit into
trunkfrom
signac-lite
Draft

Implement a subset of signac#359
joaander wants to merge 1 commit into
trunkfrom
signac-lite

Conversation

@joaander

Copy link
Copy Markdown
Member

Description

Implement a minimal subset of signac's functionality in Rust. Organize the code so that more functionality can be added over time as needed.

Motivation and context

It would be convenient if the entire simulation workflow from initialization to analysis could be performed in Rust. Currently, users need Python to initialize a signac workspace for use with row and hoomd-rs.

This pull requests implements a minimal set of functionality so that the initialization and job state point parsing can be handled in Rust. Specifically, it implements:

  • Create project
  • Open project
  • Create job
  • Open job from directory
  • Open job from state point

Compatibility is maintained so that any job written by the Rust implementation is valid in the Python implementation and any job written by the Python implementation is valid in Rust. The latter may not be convenient, but it should be possible. In highly heterogeneous workspaces, users will need to parse state points as serde_json::Value.

The Rust implementation will follow ideas currently under consideration for signac 3.0, such as immutable state points (glotzerlab/signac#983), and workspaces that include only job directories.

Open questions

  • Should we keep the Project and Job names? Job is especially confusing because a signac job is not at all related to a SLURM job. What would we call it?
  • Should we aim to maintain compatibility with caches between Rust and Python as well? Or should there be separate caches? Note: this question is for future planning: no cache is needed for the methods implemented by this pull request.

How has this been tested?

  • Unit tests with reference job ids computed by the Python implementation.
  • Manually check that projects created in Rust are usable in Python.

Checklist:

  • I have reviewed the Contributor Guidelines.
  • I agree with the terms of the hoomd-rs Contributor Agreement.
  • My name is on the list of contributors (doc/src/credits.md) in the pull request source branch.
  • I have summarized these changes in release-notes.md following the established format.

@joaander joaander marked this pull request as draft July 10, 2026 18:40
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.

1 participant