Release notes

[v2.15.0] - pending cut (post-v2.14.0 on main)

See the CHANGELOG 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 Release workflow §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

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 and 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 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 Release workflow §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-tagsrelease.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).