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 keyfix(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
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 artifactsdocs(site): load antics tracker(docs site only)
How to cut (maintainer)¶
Pre-gates in Release workflow §1 (CI green, fragments, cookbook if blocking, incomplete-
2.14.0decision recorded).cog bump --version 2.15.0(or--autoif commit log warrants) onmain.git push origin main --follow-tags→release.yml(fromci/gha/release.ncl).Feedstock PR with
eon-v2.15.0.tar.xzsha256 (template in process PR scratch / release.md §4).