Skip to content

Commit 503f86c

Browse files
committed
docs: add repository readme changelog and paper
1 parent 8c0eda1 commit 503f86c

3 files changed

Lines changed: 100 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Changelog
2+
3+
## v0.2.1
4+
- Published `pykore` 0.2.1 for Python users.
5+
- `pip install pykore` now provides the validated Schrödinger-Poisson solver bindings directly.
6+
- Added a stable package landing page and release path for wheel-based distribution.
7+
8+
## v0.2.0-dev
9+
- Added optional HDF5 checkpoint support for saving and resuming simulation runs.
10+
- Introduced a shared checkpoint format for reproducible grid/state persistence.
11+
- Made `kore` usable in longer-running research workflows that need checkpoint/restart behavior.
12+
13+
## v0.1.0-dev
14+
- Added the initial Rust CPU kernel for Schrödinger-Poisson workloads.
15+
- Added a stable C ABI for integration outside Rust.
16+
- Added `pykore` Python bindings for NumPy-based simulation workflows.

README.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# kore
2+
3+
`kore` is a portable Schrödinger-Poisson pseudo-spectral kernel for research workloads, with one validated Rust core exposed through Rust, Python, and C surfaces.
4+
5+
## Overview
6+
7+
`kore` packages a reusable numerical kernel for Schrödinger-Poisson simulations around a Rust implementation that also supports Python and C integration. It is aimed at researchers and scientific developers who want one computational core that can move cleanly between prototyping, scripting, and systems integration.
8+
9+
## Why kore
10+
11+
Research code often starts in notebooks, grows into scripts, and eventually needs a stable systems boundary. `kore` is designed to keep that path straightforward: one kernel, portable interfaces, checkpoint/resume support, and a layout that serves both exploratory and production-adjacent research workflows.
12+
13+
## Features
14+
15+
- Portable Rust core for Schrödinger-Poisson research workloads
16+
- `pykore` Python bindings with NumPy `complex128` in-place stepping
17+
- Stable C ABI with generated header for non-Rust environments
18+
- Optional HDF5 checkpoint support for resumable simulation runs
19+
- CI-verified build, test, lint, header drift, and packaging workflows
20+
21+
## Installation
22+
23+
Installation depends on which surface you want to use.
24+
25+
- Rust users can build the crate with Cargo
26+
- Python users can install the bindings with `pip install pykore`
27+
- C and mixed-language users can link against the generated C ABI artifacts
28+
29+
The core crate builds without HDF5 by default. Checkpointing is available through the optional `checkpoint-hdf5` feature.
30+
31+
## Quick Start
32+
33+
The fastest way to get started is to choose the surface that matches your workflow.
34+
35+
```bash
36+
pip install pykore
37+
```
38+
39+
```python
40+
import numpy as np
41+
import pykore
42+
43+
grid = pykore.Grid((64, 64, 64), (1.0, 1.0, 1.0))
44+
config = pykore.Config(dt=0.01, poisson_scale=1.0)
45+
state = pykore.State(np.zeros((64, 64, 64), dtype=np.complex128))
46+
kernel = pykore.Kernel(grid, config)
47+
print(kernel.diagnostics(state))
48+
```
49+
50+
## Python
51+
52+
The Python surface is published as `pykore` on PyPI and is designed for NumPy-first scientific workflows. It exposes `Grid`, `Config`, `State`, `Kernel`, `Diagnostics`, and `DiagnosticsSummary` while keeping the compute path in Rust.
53+
54+
## C ABI
55+
56+
The C ABI provides a stable interoperability layer for consumers outside Rust. The generated header is checked in as `include/kore.h`, and the ABI is verified with strict C11 smoke builds and header drift checks.
57+
58+
## HDF5 Checkpoints
59+
60+
`kore` includes optional HDF5 checkpoint support for workflows that need to persist and resume simulation state.
61+
62+
```bash
63+
cargo test --features checkpoint-hdf5
64+
```
65+
66+
The checkpoint layer is versioned, shared across surfaces, and designed to reconstruct runs from stored grid/state data.
67+
68+
## Paper
69+
70+
The current project paper is available in this repository as [`paper.pdf`](paper.pdf).
71+
72+
## Status
73+
74+
`kore` is under active development and currently includes:
75+
76+
- Rust CPU kernel
77+
- C ABI
78+
- `pykore` Python bindings
79+
- optional HDF5 checkpointing
80+
- PyPI publication workflow and package release path
81+
82+
## License
83+
84+
Licensed under either `MIT` or `Apache-2.0`. See `LICENSE-MIT` and `LICENSE-APACHE`.

paper.pdf

347 KB
Binary file not shown.

0 commit comments

Comments
 (0)