
                           LIBINT REVISION HISTORY

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

- 2024-03-04: 2.9.0
  - PR #335: l->symbol map reuse + other misc improvements
  - PR #334: bump Catch2 to 2.13.10 (HT @hrnagel)
  - PR #333: can use modularized Boost, even if built as part of the project
  - PR #331: add SOVERSION when building shared library only (HT @loriab)
  - PR #329: increase Tenno function interpolation table to support L=9 4-c ERI
  - PR #327: fix stochastic failures of tests/eri by reducing range of random shells parameters
  - PR #281: auto-generator for DF basis (HT @kshitij-05)
- 2024-02-05: 2.8.2
  - PR #324: addresses issues with 3eri derivatives + minor 3eri API safety improvements
  - PR #322: update libtool to 2.4.7 + update config.{guess,sub} to 2024-01-01
  - PR #319: pylibint builds with latest setuptools (HT @loriab)
  - PR #311: clang-format.sh uses bash to resolve #310 (HT @e-kwsm)
  - detect Brew-installed GNU tar on MacOS
- 2023-12-19: 2.8.1
  - PR #307: fixup progman dvi and html building
  - PR #305: disable latex2html detection/use by default
  - PR #304: natural order for (σ·p)V(σ·p) integrals (HT @JonathonMisiewicz)
  - PR #302: build fix (HT @JonathonMisiewicz)
  - PR #231: Add SONAME/SOVERSION to generated library (HT @debichem)
- 2023-12-12: 2.8.0
  - PR #297: clang-format
  - PR #293: read Gaussian basis set files with L>=7 AOs correctly
  - PR #276 and #291: removed checks for pre-c++11 features (TR1 array and shared_ptr, etc.) (HT @e-kwsm)
  - PR #289: fixed DIIS ctor (HT @tjira)
  - PR #283: bump pybind11 to ValeevGroup/pybind11@v2.11 (HT @asadchev)
  - PR #282: removed obsolete basis files (HT @JonathonMisiewicz)
  - PR #279: fixed error in 1-e erf/erfc integrals (HT @JonathonMisiewicz)
  - PR @273: support for 1-e (σ·p)V(σ·p) integrals (HT @JonathonMisiewicz)
  - PR #271: Add `libint2::configuration_accessor` and `libint2::supports` functions. If
    library source is patched, these provide codes for what integrals a library instance can supply. (HT @loriab)
  - PR #271: Small pkgconfig and cmake detection improvements. Enable unity build.
    Testing of solid harmonics runtime switchable from #269. (HT @loriab)
  - PR #270: For Windows, basis sets with a star have been renamed to "s" on the filesystem,
    so 6-31g**.g94 -> 6-31gss.g94. In code, the basis can be accessed through "6-31g**" (longstanding)
    or "6-31gss" (new) for all operating systems. (HT @loriab)
  - PR #270: Adapt build system and header imports so that library and Python bindings can build on
    Windows (at least with clang-cl compiler atop MSVC). Note that a Linux- or Mac-generated export
    builds on Windows; one cannot generate an export on Windows. Note also that only a static library
    build, not a shared one, works on Windows (see #237). (HT @loriab)
  - PR #269: minimum CMake bumped to 3.16 (HT @loriab)
  - PR #269: Solid harmonics ordering is runtime switchable in the library. Issue
    `libint2::set_solid_harmonics_ordering(libint2::SHGShellOrdering_Gaussian)` or `_Standard` before
    initialization. Similarly, prefer new `INT_SOLIDHARMINDEX(sho, l, m)` to usual `(l, m)` version. (HT @loriab)
  - PR #269: The ordering for spherical multipole integrals has been fixed at Standard, rather than
    Gaussian or Standard as previously. Note that between this and the next item above, the
    `--with-shgauss-ordering=standard|gaussian` has been rendered pointless for the C++ interface.
  - PR #268: Python detection (relevant to Python bindings, Fortran, and some tests) now uses modern
    `find_package(Python)`. Specify with `Python_EXECUTABLE` (note change in case) or
    https://cmake.org/cmake/help/latest/module/FindPython.html for details . (HT @loriab)
  - PR #268: Python bindings can now use Pybind11 >=2.6 and can use detected installation. (HT @loriab)
  - PR #249: Python bindings (HT @asadchev)
  - PR #246: BasisSet is no longer derived from vector<Shell>
  - PR #232: introduced new primitive screening methods

- 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
