KIM API Revision History

Recent Updates

=== kim-api-2.1.3 =============== 16Aug2019 ====================================

* Adjust kim_collections_module to work around gfortran <= 4.8 bug.

* Fix minor bug in collections-management.

* Improve backward compatibility support for ~/.kim-api/config file format.

* Fix to Fortran/C mapping of KIM_LENGTH_UNIT_BOHR.

* Fixes to Fortran documentation and cross-references.

* Added information/links to the top level

=== kim-api-2.1.2 =============== 29Jul2019 ====================================

* Fixup Fortran kim_collections_module interfaces to be consistent with c/c++.

* Fixup collections-management for portabability to dash.

* Improve for more standard compliant MD, MO, SM behavior.

* Improve zsh completion install behavior.

* Fixup Fortran c_long communication and overflow behavior.

* Add missing testing of interface in examples/simulators/collections-example.

* Improve example/simulators to remove warnings.

* Fix bug in KIM::SimulatorModel::Create().

=== kim-api-2.1.1 =============== 24Jul2019 ====================================

* Refactor 'kim-api-collections-management list' code for performance.

* Update collections-management to use 'make -j2' for improved performance.

* Improve kim-api-collections-management handling of passwords for use with
  sudo.  Specifically, support reading of passwords with whitespace and other
  special characters.

* Add zsh support to activate/deactivate scripts & zsh completions.

* Fix c_long overflow (for i386 systems) bug in Fortran kim_collections_module.

* Rework 'kim-api-collections-management install xxx OpenKIM' behavior.  Now
  installs the latest official release archive found at  This also greatly reduces the
  total build and install time.

* Redefine/refactor KIM::Collections behavior for finding item names.
  Previously, a shared library file was found, opened, and checked for
  validity.  To significantly improve performance, now simply the existence of
  the shared library file is used to identify available item names.

* Redefine/refactor collections-management and collections-info to remove
  '--with-version' option.

* Fixup and improve Fortran example codes.

* Added graphic of available binaries to

=== kim-api-2.1.0 =============== 16Jul2019 ====================================

* Added new KIM::SimulatorModel interface providing programatic support to
  simulators for packaging of parameter files, input commands, and metadata
  necessary to run a simulator's native potentials.

* Added new KIM::Collections interface (and the supporting extensible
  enumerations KIM::Collection and KIM::CollectionItemTypes) providing
  programatic access to the KIM API Collections and its configuration settings.
  (This included a refactor and removal of old_KIM_API_DIRS.*.)

* Convert from old 'models' to 'portable-models' nomenclature for KIM API
  collections, including environment variables, configuration file, etc.  (For
  backward compatibility, the old configuration file format is still accepted.)

* Added support for Metadata files to (internal) KIM::SharedLibrary and
  programatic access to these files from the new KIM::Collections interface.

* Automatically add standard metadata files (kimspec.edn,
  kimprovenance.edn, and kimcite-*.bib) to an item's shared library if they

* Significant documentation updates to describe the new interfaces as well as
  changing to the the Portable Model (PM) and Simulator Model (SM) terminology.

* Added explicit documentation of Fortran interfaces for routines called by the
  KIM API (ModelCreate, ModelDestroy, GetNeighborList, etc.).

* Added mention of "Toy Models" to documentation.

* Added data-type error checking for Portable Model parameter get/set routines;
  Thanks to Daniel Schopf.

* Bug fixes and improvements to kim-api-collections-management script

* Added support for Include-What-You-Use (IWYU).

* Added (internal) copy of edn-cpp parser for use with SMs.

* Updated existing examples as necessary and added SM example.

* Added new "unit-test" examples of simulators using the Collections and SM

* Improvement to pkgconfig support; Thanks to Christoph Junghans.

* Added new tests to CI, based on INSTALL file.

* Updates create-package script and added run-cmds-from-install script.

* Added .clang-format-hook-ignore file and mechanism (specifically for edn-cpp).

* Updates to better support binary installation on various systems.

* Added CDDL headers to files that did not have them.

=== kim-api-2.0.2 =============== 28Mar2019 ====================================

* Transition from 'kim-api-v2' naming to 'kim-api' for better alignment with
  open source conventions

* Added a simulator model example

* Refactored support for simulator models: separated from models in collections.
  Updated collections-management utility appropriately

* Updated calls to scanf() for better security

* Refactored old_KIM_API_DIRS.cpp to remove calls to 'exit()'

* Added build options to set system collection directories

* Added support for colon-separated list of directories for user and system

* Added '--version' flag to utilities

* Update bash completion to work with old and new bash

* Improve robustness of creat-package script

* Updated badges to point to 'devel' branch & create-package to change to
  'master' branch for release commit

* Added coverity & codecov badges to

* Added vX.Y.Z-git tags to git repo and updated create-package script

* Added NEWS file to Doxygen documentation & updated doxygen settings

* Improved version build metadata string using "git describe"

* Updated link flags for codecov

=== kim-api-v2-2.0.1 ============ 22Feb2019 ====================================

* Fix bug in KIM::SemVer::ParseSemVer()

* Various minor fixes to address issues identified by Coverity Scan

* Fix version string in libkim-api-v2.pc to conform to RPM schema

* Added advanced CMake options for compilers used to build items after install

* Added item install prefix CMake variables to cache; helps with packaging

* Remove dead code in top level CMakeLists.txt

=== kim-api-v2-2.0.0 ============ 06Feb2019 ====================================

* Update main documentation.

* Added function level documentation with cross-references and input/output
  argument descriptions.

* Added Known() member function to extensible enumerations.

* Extensible enumeration default constructors now create uninitialized objects.

* Rename C++ *.String() routines to *.ToString.

* Added 'recursive' to all Fortran routines (for better thread safety).

* Added support files for readthedocs.

* Additions and fixes for collections-management utility.

* Travis CI configuration updates.

* Avoid some compiler warnings from clang.

* Various CMake fixes/adjustments.

* Various bug fixes in api code.

=== kim-api-v2-2.0.0-beta.3 ===== 07Dec2018 ====================================

* Updated and added examples to work with and demonstrate api changes/additions

* Implemented new KIM::Model::IsRoutinePresent interface to facilitate
  backward compatibility

* Updated SpeciesName entries for recently renamed periodic table elements

* Added WriteParameterizedModel Routine and assoc. code

* Added Extension Routine to allow for non-standard extensions

* Added Push/Pop Default Verbosity to KIM::Log

* Changed Release default LogVerbosity to INFORMATION

* Added ctest test for items to check that shared libraries can be opened

* Improvements to Collections-Management behavior

* Removed unnecessary header files

* Updated configuration

* Refactored some backend implementation to improve maintainability, including
  significant new KIM_SharedLibrarySchema interface

* Improvements to CMake build system

* Updated create-package script

* Updated documentation

=== kim-api-v2.0.0-beta.2 ======= 28Oct2018 ====================================

* CMake build and test replaces custom Makefiles; added travis, gitlab CI
  A big thank you to Richard Berger and Christoph Junghans for their major
  contribution in getting the KIM API package converted to CMake.

* Using standard pkg-config setup instead of custom kim-api-v2-build-config

* Major restructuring of the Fortran bindings.

* Make ModelRefresh and ModelComputeArgumentsDestroy functions optional

* Add Model routine and callback prototypes in KIM_Functions header

* Add a required unique name field for parameters.

* Refactoring of neighbor list hints.  The half-list hint had a fatal flaw
  which required its removal.

* Significant refactoring of the logging macros in C and C++.  Complete removal
  of all preprocessing for Fortran.

* Redesign of release and packaging script and process.

* Added a couple of new models that illustrate various features of the api.

* Removed v1 to v2 porting guide.

* "Summary of Differences Between kim-api-v1 and kim-api-v2" docs page now
  contains tables with a complete listing of all kim-api identifiers in all
  languages and their mappings between one-another.

* Complete update of documentation.  Rework and correct definition of
  partialVirial and partialParticleVirial.

* Added emacs cc-mode settings

* Added clang-format settings, scripts, and git-hooks for C/C++

* Complete review of C++, C, and Fortran bindings for consistency

* Many other small and not-so-small changes.

=== kim-api-v2.0.0-beta.1 ======= 07Jul2018 ====================================

* Fix memory leak and uninitialized variables id'ed by coverity scan.

* Update docs and porting guide for neighbor list hints changes.

* Implement neighbor list hints (paddingNeighbor & halfList); update examples.

* Add SetArgumentPointer(xxx * const ptr) to C++ bindings for consistency.

* Add C++ LennardJones_Ar stand-alone model example.

* Fix compatibility checking code in example simulators.

* Update LennardJones612 example to use 1/2 list short-circuit mechanism.

* Fix collections-info to set log verbosity to debug.

* Use NULL consistently to initialize pointers in implemenation code.

=== kim-api-v1.9.7 ============== 07Jul2018 ====================================

* Check for errors from mkdir() in KIM_API_DIRS.cpp (id'ed by coverity scan).

* Fix support for required-compute of forces in utility-forces-numer-deriv.

* Fix identifiers in bash-completions.

* Added --log option to CM 'list' command.

* Use fixed seed for random number generator in utility-forces-numer-deriv.

View the NEWS file for additional history.