Release notes

[v2.14.0] - 2026-XX-XX

See the CHANGELOG for the fragment-by-fragment list; this page picks out the user-facing highlights.

Trajectory output

Structured per-frame metadata in .con movies

Minimization, saddle-search, and NEB movies now embed structured per-iteration metadata directly in each .con frame via readcon-core (bumped to 0.8.0). Energies, force norms, iteration indices, and method-specific scalars ride with the frame they describe, so downstream consumers can parse a single file instead of zipping the movie against an external .dat table.

The legacy sidecar .dat files are kept behind write_deprecated_outs = true for one release so pipelines that still depend on them have a migration window. New code should read the frame metadata from the .con itself. See the visualization tutorial for a MyST-NB executable walkthrough.

Contributing commits:

  • feat(traj): structured per-iteration .dat output for movies

  • fix(traj): embed movie metadata in .con frames

  • fix(io): harden readcon movie outputs

  • fix(io): keep multi-frame .con writers alive across appends

  • test(io): cover compatibility outputs and NEB metadata

Visualization tutorial

A new MyST-NB executable tutorial at docs/source/tutorials/visualization.md walks through generating a trajectory, plotting the energy landscape, and rendering NEB profiles with rgpycrumbs, pinned to a validated plotting stack. Uses an HCN NEB demo keyed to the eon_orchestrator configuration.

Parallelism

Batched force evaluation for NEB

NEB parallel image evaluation switches from one-thread-per-image to batched potential calls, cutting scheduling overhead for medium-sized bands with cheap potentials. The batched path reuses the per-image thread-safety contract established in v2.13.0 and does not change the opt-in (parallel = true in [Main]).

Contributing commit:

  • feat: batched force evaluation and parallel NEB fix

Shared-instance threading fix for legacy Fortran potentials

Legacy Fortran-backed potentials (EAM_Al, FeHe, Lenosky_Si, Morse_Pt, SW_Si, Tersoff_Si, EMT, XTB when built without the reentrant flag) are now gated out of the shared-instance parallel path. The prior code assumed every Potential could be called from multiple threads against a single instance, which broke potentials whose Fortran backend carries module-level state. These potentials now fall back to the serial code path under parallel = true rather than corrupting internal buffers.

Contributing commit:

  • fix(parallel): gate shared-instance threading for legacy Fortran potentials

Parameters

JSON round-trip for [Debug] options

ParametersJSON::to_json always emitted a Debug section but from_json had no matching handler, so write_movies, write_movies_interval, and write_deprecated_outs were silently dropped on any JSON deserialization. The round-trip is now symmetric and the new test_params_json case enforces it.

Contributing commit:

  • fix(params): round-trip debug options through JSON

Build

cbindgen provisioning

cbindgen is now installed into the pixi env’s bin/ and wired into the setupeon dependency graph, so meson setup on the readcon-core subproject no longer fails with “Program ‘cbindgen’ not found” on fresh clones.

Contributing commit:

  • build(pixi): install cbindgen into env bin and wire setupeon dep

Metatomic runtime RPATH

eonclient now encodes the metatomic runtime library paths at link time, so downstream tutorials and examples running against a pixi dev env no longer need to hand-massage LD_LIBRARY_PATH.

Contributing commit:

  • fix(build): encode metatomic runtime paths in eonclient

Deprecations and breaking changes

  • write_deprecated_outs keeps the legacy .dat sidecar tables for minimization and saddle-search for one release. The sidecars will be removed in v2.15.0; migrate to reading per-frame metadata from the .con movie output.

Build requirements

  • readcon-core >= 0.8.0 (auto-resolved by the meson wrap).

  • cbindgen on PATH at configure time (now provisioned by the pixi env for dev builds).

  • All other requirements unchanged from v2.13.0.