SEGUL is available as a GUI, CLI, and a library. All three versions share the same core functionalities. The SEGUL core library is written in Rust, a systems programming language that is known for its speed, memory safety, and parallelism. The GUI layer uses Flutter and is written in Dart. The CLI is wrapped around the Rust library and is written in Rust.
SEGUL ecosystem
Section titled “SEGUL ecosystem”Every app and package calls the same segul-core library. Each one adds only a thin Rust layer that turns its own inputs into library calls:
- SEGUI wraps the library in Rust functions that Flutter Rust Bridge (FRB) exposes to Dart.
- SEGUL CLI parses command-line arguments with clap and passes them to the library.
- pysegul exposes the library to Python with PyO3 and is built with maturin. See Python.
- rsegul is an example of calling the library from R with rextendr. See R.
Because the analyses live in one place, a task gives the same output whichever interface runs it. Rust developers can also use segul-core directly. See Rust.
Repository structure
Section titled “Repository structure”We use a multi-repository structure to separate the GUI from the SEGUL core library. The CLI and the core library share one repository as a Cargo workspace: