Skip to content
ATC
All projects

Rust toolkit

Nucleide

A modern Rust toolkit for nuclear-engineering workflow glue — transport-code I/O, nuclide identification, materials, CRAM depletion and enrichment analytics behind a typed Python API.

Role
Creator & maintainer
Period
2026 — present
Nucleide screenshot

The problem

The nuclear engineering Python ecosystem is decades old and built on C/C++ extensions with a rough edge at every seam. Install problems are routine, the type story is inconsistent, and the code that reads a transport code's output is usually a private script that nobody else can reuse.

The approach

Nucleide moves the heavy lifting into Rust and keeps Python as the interface. Rust owns the parsing, the numerics and the file formats; the Python package is a thin, fully typed binding layer, so users get autocomplete on real signatures instead of on generated stubs.

The surface covers the glue that every workflow needs: legacy transport-code I/O, nuclide identification, material handling, CRAM depletion chains and enrichment analytics. The goal is to stop every project from re-implementing the same readers.

Distribution uses abi3 wheels, which means a single wheel covers a wide range of Python versions on Linux, macOS and Windows — a real answer to the install friction that keeps people on legacy packages.

Correctness is checked by containerised validation against reference implementations: PyNE 0.7.5 and OpenMC 0.16.0 run in the same image, and the Rust results are compared against them.

Engineering highlights

  • Validated against the incumbents

    The test suite runs the reference PyNE and OpenMC toolchains in containers and compares outputs. A rewrite that quietly disagrees with the ecosystem it replaces is a liability, so disagreement has to be a failing test.

  • abi3 wheels as a first-class target

    Building one wheel per Python version is what makes a compiled extension painful to distribute. abi3 collapses that matrix, and the release pipeline treats it as a required artefact.

  • Typed all the way down

    The Python API mirrors the Rust types, so a mismatch surfaces in an editor rather than at runtime in a month-long depletion run.

At a glance

Core language
Rust
Binding
Typed Python API
Validation
Against PyNE + OpenMC

Stack

  • Rust
  • Python
  • maturin
  • abi3 wheels
  • PyNE
  • OpenMC
  • PyPI
  • Docker