Files
medicallib_rust/README.md
T
2025-09-21 02:14:44 -07:00

47 lines
1.4 KiB
Markdown

# medicallib_rust
MedicalSim core library rewrite in Rust.
- Safe, minimal API for medical simulation primitives
- Optional `serde` feature for serialization
- Optional `ffi` feature to expose a stable C ABI (`cdylib`)
## Build
- Build: `cargo build` (tests: `cargo test`)
- FFI build: `cargo build --features ffi --release`
- Format/Lint: `cargo fmt --all` and `cargo clippy -D warnings`
## Examples
- Rust: `cargo run --example usage` and `cargo run --example patient`
- C FFI: see `examples/c/ffi_example.c`, header in `ffi/medicallib.h`
## FFI ABI
- Opaque `MLPatient` handle
- Functions: `medicallib_bmi`, `ml_patient_new/free/update`, `ml_patient_summary`, `ml_patient_organ_summary`
- All allocated strings must be freed with `ml_string_free`
## Version Matrix
- Rust 1.70+ (Edition 2021)
- OS: Linux, macOS, Windows (see GitHub Actions CI)
## Docs
- Architecture: `ARCHITECTURE.md`
- Migration (C++ -> Rust): `MIGRATION.md`
- C/C++ install: `INSTALL.md`
## Packaging (binary distribution)
- Linux/macOS: run `../scripts/package.sh [target-triple]` from `medicallib_rust/` (or `make package`).
- Windows: run `..\scripts\package.ps1 [target-triple]` from `medicallib_rust\`.
- Artifacts are placed in `medicallib_rust/dist/` as both `.tar.gz` (Unix) and `.zip`.
## CI: GitHub + Gitea
- GitHub Actions workflow: `.github/workflows/ci.yml`
- Gitea Actions workflow: `.gitea/workflows/ci.yml`