Skip to content

jse-release-v4.1.0

Pre-release
Pre-release

Choose a tag to compare

@liqa1024 liqa1024 released this 01 Jun 14:12

Changelog

Breaking Changes

  • JIT method invocation API changed: IJITMethod.invoke(IPointer, IPointer) is now invoke(Object...). You no longer need to manually construct mDataIn/mDataOut parameter buffers — just pass arguments directly.
  • Trainer renamed to TrainerNNAP: some constructor parameter signatures have also changed.
  • WTypeBasis model format changed: the post_fuse mechanism has been replaced by rfuse. Legacy models are automatically converted on load. The default training wtype changed from exfull to rfuse.
  • Growable CPointer variants removed: GrowableDoubleCPointer, GrowableFloatCPointer, GrowableIntCPointer, GrowableInt64CPointer, and their GPU counterparts have been removed. Use PointerManager for unified management instead.

New Features

  • PointerManager: unified lifecycle management for CPointer / CudaPointer, implementing AutoCloseable with automatic reclamation via Java GC. NEP / NNAP internals have been fully migrated; close() is now significantly simpler.
  • JIT SourceScanner: automatically discovers exported functions in C source code via the __jsefunc__ marker, eliminating the need for manual setMethodNames calls. SimpleJIT.Engine also gains addTypeMap for C type mapping.
  • NNAP GPU support: PairNNAP_gpu is re-enabled with major performance improvements.
  • Adam AMSGrad: the Adam constructor now accepts a boolean aAMSGrad parameter, enabling the improved algorithm from "On the Convergence of Adam and Beyond".
  • Added SettableAtomData.setSymbolOrder(): element symbol order modification is now supported consistently across all atom structure classes.
  • LibVer: centralized external library version management (JEP, LAMMPS, CMake, MiMalloc, Ninja, NEP SHA).

Bug Fixes

  • FixedTimer: getNanos() / getMillis() / get() incorrectly returned the fixed value captured at construction time. They now correctly compute the actual elapsed time.
  • AseAtoms.copy(): when mType2AtomicNumber != null, the symbol collection loop missed the last element type (type < ntypestype <= ntypes), causing the copy to fail.

Improvements

  • Naming consistency: Matrices parameters aRowNum/aColNumaNumRows/aNumCols; SettableAtomData field mAtomTypeNummNumTypes; PairNEP / PairNNAP field mTypeNummNumTypes.
  • Build system: Windows build scripts now include chcp 65001; CMake path references uniformly use JNIUtil.validCmdPath().
  • Unified SF and RDF behavior in APC: both SF and RDF descriptor lengths now consistently use the input N, removing the previous N+1 discrepancy.

Deprecations

  • SP.Python.downloadPackage() / installPackage() methods are now marked @ApiStatus.Obsolete. installAse() has been removed.

Internal

  • Native static methods in CPointer subclasses now have @ApiStatus.Internal public visibility.
  • ICPointer / ICudaPointer now expose a setPtr_() method.
  • IO.Text.str2int() removed; call sites now use Integer.parseInt().
  • External LAMMPS library updated from stable_22Jul2025_update2 to stable_22Jul2025_update4.