# AD0001 - Astrodrift library tech stack
### Author: Angus Forrest
### Date: 29/10/2025
 
## Context

Astrodrift (drift) is a integrator package that performs parallel particle simulations within numerical dynamical systems.

## Alternatives


## Implementation

The current tech stack looks to be composed of a python library wrapper built upon a numba cpu implementation and rust-cuda gpu implementation for computationally demanding processes. To achieve the project will use apptainer as a development environment to create the necessary python wheels, with build tools of maturin and uv. The dependencies of the python wrapper will be pandas for IO data handling and fastparquet for utilising a column based binary file format (parquet). The associated tests will be built out using pytest and uv (TODO: What python version are we capable of supporting?). The project will also have dependencies on numpy and astropy. The project will not rely on scipy for computation and instead have inhouse numba and cuda implementations to optimise algorithms for our specific integrators use case.

Hence the current list of dependencies is:

- Python
- Rust
- docker
- apptainer
- uv
- Rust-CUDA
- maturin
- numpy
- numba
- astropy
- pandas
- fastparquet
- blastoff 
- cuda_std 
- cust 
- cust_raw 
- ndarray 
- ndarray-rand 
- rand 
- rayon 
- libm 
- statrs 
- pyo3 
- numpy 
