--- myst: html_meta: "description": "Consolidated release notes for eOn v2.15.0 (next cut after v2.14.0): potentials, process search, NEB/MPI, and maintainer release process." "keywords": "eOn release notes, v2.15.0, runtime potentials, MPI, LAMMPS, release process, PyPI" --- # Release notes ## [v2.15.0] - pending cut (post-v2.14.0 on `main`) See the [CHANGELOG](project:../changelog.md) for the fragment-by-fragment list after `cog bump` consumes `docs/newsfragments/`; this page consolidates **user-facing and maintainer** highlights from commits since `v2.14.0` plus the release-process PR, so the next cut has one place to link from the GitHub Release and feedstock PR. **Channel note:** `v2.14.0` may exist as tag/CHANGELOG without finished GH tarball asset, PyPI, and/or feedstock. This cut is intended to **supersede** that incomplete multi-channel state (see {doc}`/devdocs/release` §5). Optionally still attach `eon-v2.14.0.tar.xz` to the old GH release for reproducibility; do not re-publish a conflicting `2.14.0` wheel if you never owned that semver on PyPI. ### Potentials #### Runtime-loaded Fortran potentials Legacy Fortran potential modules can be loaded at runtime via `dlopen` instead of only at link time. Configure a search path with `[Potential] potentials_path` so site-specific or experimental pots can ship as shared objects without rebuilding the full client. Contributing commits / PRs: - `feat(potentials): load Fortran potentials at runtime via dlopen` (#342 area) - `feat(config): add [Potential] potentials_path config key` - `fix(pot): RTLD_DEEPBIND prevents symbol hijack of Fortran helpers at runtime` ### Process search #### Fixed atoms preserved after `displacement.con` Process search restores fixed-atom rows after loading a displacement geometry, so constrained atoms do not drift when the displacement file omits or resets them. - `fix(process-search): restore fixed-atom rows after loading displacement.con` (#341) ### NEB and MPI #### Per-image LAMMPS on private communicators Parallel NEB no longer shares one LAMMPS world across images in a way that corrupts neighbor/comm state; each image gets an isolated communicator/instance where required. - `fix(neb): isolate per-image LAMMPS instances on private MPI communicators` (#340) #### MPI C API build path The MPI integration path is revived on the C API (`with_mpi`), retiring reliance on obsolete C++ MPI bindings that blocked modern toolchains. - `feat(mpi): port MPI C++ bindings to the C API and revive the with_mpi build` (#339) ### Windows / conda-forge win-64 packages enable **in-tree Fortran** (`compiler('fortran')` / m2w64 gfortran, `-Dwith_fortran=true`, static objects, `/STACK:16M` via meson) per [conda-forge/eon-feedstock#15](https://github.com/conda-forge/eon-feedstock/issues/15) and [windows-compat-sci-cpp](https://rgoswami.me/posts/windows-compat-sci-cpp/). CuH2 is enabled on win with the rest of in-tree Fortran (m2w64 gfortran). ### Maintainer / distribution #### Release process, Nickel GHA, PyPI name, feedstock checklist Documented and automated the full cut path: `cog` / towncrier lockstep, `scripts/release_assert.py`, staged tag workflow (tarball + GH release + PyPI), `ci/gha/*.ncl` generation (rgpot-style), incomplete-release recovery, conda-forge feedstock steps, and explicit Doxygen deferral (Sphinx remains the docs gate). **PyPI:** the project name `eon` on [pypi.org](https://pypi.org/project/eon/) is already taken by **EoN** (*Epidemics on Networks*, unrelated). This release targets a **distinct** distribution name **`eon-akmc`** (see `ci/gha/pypi.ncl` / `pyproject.toml` `project.name` alignment in the process PR)—import package layout stays under `eon/` in-tree; the **index** name is what trusted publishing and `pip install` use. Contributing fragment: `docs/newsfragments/343.dev.md` (release-process PR). ### Housekeeping (non-user-facing, optional mention) - `chore: cleanup cruft`, `chore(lfs): stop tracking test artifacts` - `docs(site): load antics tracker` (docs site only) ### How to cut (maintainer) 1. Pre-gates in {doc}`/devdocs/release` §1 (CI green, fragments, cookbook if blocking, incomplete-`2.14.0` decision recorded). 2. `cog bump --version 2.15.0` (or `--auto` if commit log warrants) on `main`. 3. `git push origin main --follow-tags` → `release.yml` (from `ci/gha/release.ncl`). 4. Feedstock PR with `eon-v2.15.0.tar.xz` sha256 (template in process PR scratch / release.md §4).