
                           LIBINT REVISION HISTORY

Following is a brief summary of changes made in each release of Libint.

- 2022-06-20: 2.7.2
  - PR 251: fixed exponential integrals for large T
  - PR 243: fixed Taylor-based Boys engine (HT @bingao)

- 2021-09-19: 2.7.1
  - PR #224: fixed tracking of shell-pair data
  - PR #223: removed redundant const qualifier (HT @e-kwsm)
  - issue #222: fixed compiler tree's install target

- 2021-09-14: 2.7.0
  - precision tracking of shell-pair data, respected by Engine::compute2
  - fixed excessive lock contention when computing 1-e Coulomb ("nuclear") ints on many threads
  - allow access to the Engine dispatch table via compute2_ptrs()
  - fixed definitions of def2-tzvpd-c and def2-tzvppd-c bases for Hf
  - issue #216: uniform Cartesian convention fixed for 2-body integrals computed with internal permutation
  - PR #212, #211: Travis CI -> GH actions
  - PR #210: verbose-- (HT @e-kwsm)
  - PR #207: make namespaced cmake targets available during build (HT @wavefunction91)
  - issue #206: can read G94 files from the "new" Basis Set Exchange
  - issue #202: upgraded Catch2 to 2.13.4 to support macos/arm64
  - PR #200: Engine supports arbitrary-order 2-body derivatives (HT @adabbott)
  - issue #199: fixed libint2::make_point_charges(atoms)
  - issue #195: eri test return nonzero if regression detected + looser abs precision tolerance
  - PR #193: improved build reproducibility (HT @bmwiedemann)
  - issue #188: more robust comparison in fortran/test-eri
  - PR #185, #184: fix fortran_example (HT @susilehtola)
  - PR #180: min boost version = 1.57 (HT @e-kwsm)
  - issues #173, #183: check for existence of macro __has_include before using it
  - PR #171: fewer macros (HT @e-kwsm)
  - PR #168: typedef struct {} X -> struct X {} (HT @e-kwsm)

- 2020-07-07: 2.7.0-beta.6
  - Molden PBC exporter works for 1 and 2 dimensional crystals
  - reverted library names changed in 2.7.0-beta.5 to libint2.<suffix>
  - PRs #166, #169
  - standard library release bumped up to l=10 spherical multipoles

- 2020-04-02: 2.7.0-beta.5
  - made usable as a CMake subproject
  - the deprecated autotools build harness has been removed from the exported library; CMake is the only way to build exported libs
  - reduced compilation noise in generated code

- 2020-03-01: 2.7.0-beta.4
  - PR #159: fixed description of cmake option REQUIRE_CXX_API
  - resolved issue #164: per-elem BasisSet ctor missing init() (HT @swillow)

- 2020-01-29: 2.7.0-beta.3
  - added 2018 CODATA bohr->angstrom conversion, made the default throughout
  - Molden exporters use angstroms to avoid extra reliance on its readers' conversion
  - resolves issue #158: check for false-positive Eigen search
  - Eigen is required by default, unless REQUIRE_CXX_API CMake variable is set to OFF

- 2019-11-26: 2.7.0-beta.2
  - resolves issue #143: definition of M_PI in c-api.c may be missing
  - resolves issue #144: 'make export' works is building compiler in-source
  - PR #149: generate definitions for macros LIBINT2_MAX_AM_defaultN , with N = 1, 2 ...
  - resolves issue #150: missing c++11 compile feature inherited by int2 target from int2-obj
  - PBCExport can handle monoclinic unit cells

- 2019-08-09: 2.7.0-beta.1
  - PR #142: fixed cmake build of fortran interface (HT @pseewald )
  - PR #141: can buile shared and static libs in one shot (HT @francesco-bosia )
  - added Engine::prescale_by that allows scaling target ints

- 2019-07-23: 2.6.0
  - fixed initialization order error in unit test
  - unit tests pass valgrind memcheck

- 2019-07-22: 2.6.0-beta.7
  - updated docs to point out the ninja/ar issues on macos (see #135)
  - added Molpro-sources (aug-)cc-pVXZ-JKFIT basis sets
  - resolved #136: Fortran module was not built correctly with out-of-source (cmake) build
  - fixed residual precision issues with exponential integrals
  - libint2::initialize() now by default turns off diagnostic messages;
     do libint2::initialize(true) to keep receiving diagnostics in std::clog (insteadf of std::cout)
  - libint2::initialize(std::ostream& os) will write the diagnostics to os

- 2019-07-09: 2.6.0-beta.6
  - Ten-no Gm evaluation for m=-1,0 does not use interpolation to guarantee ~1e-14 absolute precision
  - resolved issue #134: incomplete std::any functionality in libc++ on pre 10.14 macos

- 2019-06-20: 2.6.0-beta.5
  - fixed bundled boost unpacking issues in exported lib CMake build
  - rank() and default_braket() are constexpr

- 2019-06-19: 2.6.0-beta.4
  - implemented analytic evaluation of (derivative) Slater and Yukawa integrals

- 2019-05-22: 2.6.0-beta.3
  - CMake build of exported library works out-of-source
  - released standard and mpqc4 libraries assume spherical harmonics for 2- and 3-center integrals

- 2019-05-18: 2.6.0-beta.2
  - implemented CMake build of exported library:
    - autotools build is deprecated; CMake is primary
    - for consistency, renamed imported targets in FindLibint2.cmake introduced in beta.1
  - resolved issue #127: incorrect dimensions of 3-center ERI function pointer array used by Fortran interface

- 2019-05-07: 2.6.0-beta.1
  - can read PBC-extended XYZ files
  - provided (pkg-config based) FindLibint2.cmake module for CMake projects
  - removed Engine::set_{oper,braket} deprecated in 2.5.0, use Engine::set instead

- 2019-04-09: 2.5.0
  - New Fortran bindings to Libint by Patrick Seewald (https://github.com/pseewald); requires Fortran 2003 or later.
  - validation target in exported library works correctly in absence of C++11 API
  - cleanup of molden exporter
  - Boost.Container's small_vector is only usable if the Boost version >= 1.61
  - resolved issues #107, #115: missing #include's
  - resolves issues #108: do not use bundled boost if possible
  - resolved issue #118: workaround broken Intel C++ 2019 compiler bug
  - updated libtool and catch2
  - resolved numerous linking issues with -stdlib flags
  - Molden exporter supports crystaline orbitals (JMOL extension)

- 2018-08-13: 2.5.0-beta.2
  - fixed molden exporter
  - 2-body core engine singleton re-initialization is thread-safe
  - improved precision of Chebyshev Boys engine and made it the default for 1-e Coulomb ints
  - fixed precision handling in reference Boys engine to support arbitrary precision
  - resolved issue #105: libint2.h is again usable from C, added unit test
  - shell uses Boost.Container's small_vector is available

- 2018-07-11: 2.5.0-beta.1
  - resolved issue 90
  - resolved issue 91: fixed formatting errors in def2-sv(p)-c, def2-tzvp-c, and def2-tzvpp-c basis set definitions
  - resolved issue 95
  - minor fixes for C++17 (includes PR 96 HT https://github.com/mfherbst)
  - [generated lib only] ensure system boost/preprocessor.hpp is 1.57 or more recent;
    reverts to bundled boost is system boost is too old
  - resolved issue 97: checks variadic macro support in boost.preprocessor for the libint compiler
  - C++ API produces correct 2- and 3-center 2-e derivatives
  - added minimal non-HF validation tests for C++ API (only 2-body Coulomb)
  - removed the following deprecated features:
    - libint2::init
    - libint2::cleanup
  - deprecated the following features:
    - Engine::set_oper (use Engine::set)
    - Engine::set_braket (use Engine::set)
  - minor C++ API improvements

- 2017-11-21: 2.4.2
  - fixed vector.h for use on non-x86 platforms

- 2017-11-06: 2.4.1
  - plugged leaky Engine::set_{param,oper,braket}
  - fixed uninitialized value use by libint2::molden::Export
  - eri test will only validate integrals over Cartesian Gaussians if Obara-Saika-Ahlrichs are used

- 2017-10-25: 2.4.0
  - changed default to use user-provided boost over bundled boost + minor fixes

- 2017-10-11: 2.4.0-beta.4
  - added support for precomputed pair data use in 2-body C++ API
  - fixed the derivative VRRs for the electrostatic potential ints that were used since 2.4.0-beta.3
  - fixed Cygwin compilation issues (#85)
  - fixed generic derivative code (#86)

- 2017-08-03: 2.4.0-beta.3
  - added support for spherical multipole integrals
  - electrostatic potential ints use HRR
  - configure scripts use AS_HELP_STRING

- 2017-05-18: 2.4.0-beta.2
  - cgshell_ordering.h is no longer preprocessed by configure, and has shgshell_ordering.h counterpart
  - added molden exporter
  
- 2017-05-18: 2.4.0-beta.1
  - added support for configurable solid harmonic order (standard and GaussianXX only)
  - real_t -> scalar_type and realvec_t -> value_type

- 2017-05-02: 2.3.0
  - bumped the compiler source license to GPLv3, generated code is LGPLv3.
  - replaced non-standard-conforming libint2::any with a homegrown C++17-conforming any;
    std::any is used if available.
  
- 2017-03-29: 2.3.0-beta.6
  - minor bug fixes introduced in beta.5

- 2017-03-28: 2.3.0-beta.5
  - now use bundled boost preprocessor only
  - added erf- and erfc-attenuated Coulomb 1-body ints
  - improved const-correctness of C++11 API

- 2017-03-06: 2.3.0-beta.4
  - fixed include path handling of in-place vs. installed generated headers (HT https://github.com/mfherbst)
  - fixed 2-norm Schwarz computation in hf++

- 2017-01-12: 2.3.0-beta.3
  - boys.h requires C++11; Chebyshev7 is the default Boys engine, Chebyshev3 is gone.

- 2016-12-15: 2.3.0-beta.2
  - fixed a bug in r12 core integrals code
  - added erf- and erfc-attenuated Coulomb integrals
  - sanitize Eigen includes

- 2016-11-23: 2.3.0-beta.1
  - read_dotxyz accepts bohr-to-angstrom conversion factor, the default is (still) 2010 CODATA


