Open
Conversation
eOn Documentation PreviewDownload: documentation.zip Unzip and open |
2852714 to
076c7bb
Compare
Benchmark ResultsWarning 1 benchmark(s) regressed
Regressions
7 unchanged benchmark(s)
Details
Raw asv-spyglass output |
c1f4680 to
74504c0
Compare
Use readcon-core (https://github.com/lode-org/readcon-core) v0.2.0 as a meson subproject for reading .con files. The hand-written sscanf/fgets parser is replaced by readcon::ConFrameIterator which delegates to the Rust-based parser. - Add subprojects/readcon-core.wrap pinned to v0.2.0 - Link readcon-core statically into eonclib - Replace Matter::con2matter(FILE*) with Matter::con2matter(ConFrame&) - Bump meson_version to >= 1.8.0 (required by readcon-core's Rust support) - Add rust >= 1.88 to pixi base dependencies - Add ensure_cbindgen pixi task (cbindgen not yet on conda-forge) - matter2con and convel2matter remain FILE*-based (readcon-core lacks a frame-builder API) Entire-Checkpoint: c0e7b0158776
Replace matter2con(FILE*), matter2convel(FILE*), and convel2matter(FILE*) with readcon ConFrameBuilder, ConFrameWriter, and mmap reader. Adds cell_to_lengths_angles() helper. Uses precision=17 for .con roundtrip and precision=6 for .convel. Also speeds up con2matter by using read_first_frame (mmap) instead of the iterator path.
Convert all callers of matter2con(FILE*) to use the string filename overload directly. For multi-frame NEB paths, use the append parameter instead of manually opening a file handle.
…files Replace all FILE*/fprintf/fclose patterns with fmt::output_file and .print() in every Job file. Also modernize saveMode in HelperFunctions to take a filename string, replace fopen-for-existence-check with std::filesystem::exists, and convert GlobalOptimizationJob member FILE* to fmt::ostream.
loadcon/loadcons/savecon now delegate to readcon.read_con, readcon.read_con_string, readcon.write_con, and readcon.write_con_string. Preserves StringIO support for server communication and append mode for multi-frame files.
Remove tool.pdm sections, move dev-dependencies to dependency-groups. Delete pdm.lock, generate uv.lock.
Drop unsupported 2>&1 redirect in ensure_cbindgen pixi task. Use direct cargo install in benchmark CI (main lacks the task). Switch docs CI from pdm to uv sync --group docs.
Reflect that both read and write now use readcon-core. Add Python server section. Fix pixi reference in install guide.
v0.4.3 uses read_to_string for files under 64 KiB instead of mmap, avoiding fixed VMA/page-fault overhead for small .con files. Also adds a dedicated read_first_frame path that stops after one frame.
The pixi workspace sets UV_EXTRA_INDEX_URL to the pytorch CPU wheel index. When uv lock runs inside a pixi environment, it picks up that variable and resolves packages against the pytorch index, which only carries cp314 wheels for markupsafe. This broke the docs CI on Python 3.12. Regenerated with UV_EXTRA_INDEX_URL="" to get clean PyPI-only resolution.
The pixi workspace sets UV_EXTRA_INDEX_URL to the PyTorch CPU wheel index. Running uv lock inside a pixi shell picks this up and resolves packages against the PyTorch index, which can produce lockfiles with incompatible wheels for CI. Documented the workaround (unset the variable before running uv lock) and updated all PDM references to uv throughout.
…evdocs The docs workflow uses --no-build-isolation so uv skips installing build-system.requires (meson-python, numpy). Install them explicitly. Also updated docbuild.md from PDM to uv and documented the UV_EXTRA_INDEX_URL pitfall when regenerating uv.lock inside a pixi environment that sets extra-index-urls for the PyTorch wheel index.
The eon Python package is pure Python and does not need C++ extension compilation for documentation. Using pip install triggers mesonpy which requires cbindgen, cargo, and the full toolchain. Setting PYTHONPATH to the repo root makes the package importable for autodoc-pydantic without building anything.
Annotated tags do not dereference properly with depth=1 shallow clones in meson wraps, producing "is not a commit" warnings. Use the commit hash for v0.4.3 directly.
uv run implicitly builds and installs the project, triggering the full mesonpy build (C++, Rust subprojects, cbindgen). The docs only need the pure-Python eon package, which is already on PYTHONPATH. Adding --no-project prevents uv from attempting to build.
pixi run bash on Windows triggers vcvarsall.bat activation which hits the CMD line length limit. Use plain bash shell with direct cargo install instead of pixi run ensure_cbindgen in all CI workflows.
Fragments cover: - C++ client con I/O replaced with readcon-core FFI - Python fileio replaced with readcon package - readcon-core added as meson subproject dependency - FILE*/fprintf replaced with fmt::output_file in Job files - PDM replaced with uv for Python dependency management
Docs CI: uv run --no-project could not find sphinx-build in the path. Use .venv/bin/sphinx-build directly since uv sync installs it there. readcon-core wrap: updated to 3b80468 which fixes Windows builds by installing the cargo custom_target (avoiding link_whole promotion error) and using python for cross-platform cargo build commands.
Three fixes for Windows and docs CI failures: 1. client/meson.build: use partial_dependency() to give eonclib only compile-time readcon headers. The full link dep goes to executables and eclib_dep. Prevents Meson from promoting link_with to link_whole on the cargo custom_target (which is unsupported). 2. ci_docs.yml: replace uv sync + PYTHONPATH approach with a pixi makedocs task. Sphinx and all extensions are now pypi-dependencies in the docs feature, eliminating the need for uv in the docs CI. 3. readcon-core.wrap: update to a8617119 which removes install: true from the cargo custom_target (the other half of the Windows fix).
74504c0 to
5531731
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Because why not.