Copyright (C) 2012 Bridge++ Project Team

Verbatim copying and distribution of this entire article is permitted in any
medium, provided this notice is preserved.

Changes after Bridge++ version 2.1.0

  BUG FIXES
  * Fix redefintion of m_U in Force_F_Rational (in release 2.1.1)
  * Fix dependence of version.h in Makefile (in release 2.1.1)

Changes between Bridge++ version 2.1.0 and 2.0.x

  FEATURES
  * Accel branch as an alternative code is added
  * Directory structure and code design for smearing are change
  * Neff's improved form of domain-wall operator in corelib and Accel

  MISC
  * Automatic version control in Makefile according to VERSION file
  * RESTRICT macro definition in bridge_defs.h for restrict keyword
  * Support of Moebius Domain-wall in force
  * Change of MPI compiler command name for Intel compiler

  BUG FIXES
  * Indent control in bidgeIO
  * Flop counting in afopr_Domainwall_eo
  * typo in afopr_Chebyshev.h

Changes after Bridge++ version 2.0.0

  MISC
  * Support of vout for ILDG is being discarded (in release 2.0.4). 
  * Check of rational approximation coefficients is added.
  * Sample_HMC is improved.
  * lib_alt_QXS is modifed to ensure compatibility with c++11.
  * test_HMC_Staggered_Nf2 is renamed to test_HMC_Staggered_Nf4.

  BUG FIXES
  * Fix in vout for output into files (in release 2.0.4). 
  * Fix threading in Field_F_1spinor, Field_F, Field_G (in release 2.0.3). 
  * Fix in Fprop_alt for non-Hermitian even-odd operators (in release 2.0.3).
  * Fix in Fprop_alt (in release 2.0.2).
  * Fix in Fopr_Clover_eo (in release 2.0.2).
  * Fix in reverse() in lib/Fopr/afopr_* (in release 2.0.2).
  * Fix in Field_F_1spinor  (in release 2.0.2).
  * Fix wrong flops count (in release 2.0.2).
  * Fix in FFT (in release 2.0.1).
  * Fix in several template classes in lib/Fopr/, needs_convert(),
    convert/reverse() (in release 2.0.1).

Changes between Bridge++ version 2.0.x and 1.6.x

  FEATURES
  * Alternative code (alt-code) branches are added which enable
    architecture-specific implementation and replace the functions
    of original code.
    The original part of code set is called `core library'.
      src/lib/ : core library
      src/lib_alt/ : common codes for alternative branches
      src/lib_alt_Impl/ : codes specific to some architecture
    Each implementation is specified by enum entry `Impl' listed
    in src/lib_alt/alt_impl.h.
    Currently Impl = QXS, codes optimized for A64FX architecture,
    is included.
    Alternative code enables arbitrary data layouts and supports
    both the double and float data type.
  * Template base classes are introduced to several class families,
    currently Fopr, Eigen, and Shiftsolver.
    For example, Fopr is now a typedef of AFopr<Field>.
  * Aligned allocator is introduced (src/aligned_allocator_impl.h).
  * Implementation assumes that Cpp11 is available.
  * QWS (QCD Wide SIMD) library (slightly modified version) is
    included in extra/ that can be called in the QXS-branch.
  * Communicator for Fujitsu's implementation of MPI is added.
  * Staggered, Domain-wall, overlap, and Non-relativistic fermion
    operators are added.
  * Implicitly Restarted Arnoldi algorithm is added as an eigensolver.
  * Multi-grid solver is added which now works only for clover fermion
    with the QXS-branch.
  * For testing alt-code, test_alt_spectrum/ and test_alt_multigrid/
    are added.
  * Terminate supports for PGI, OFP, Fugaku_FCC (trad mode).
  * The python interface "PyBridge++" is temporarily not available
    in ver.2.0.0.
  * NERSC format is added to FieldIO (info added in R2).

  MISC
  * ThreadManager_OpenMP class is renamed to ThreadManager.
  * OpenMP barrier synchronization is performed in set_mode() method,
    which now cannot be called in master region.
  * For fermion operators (Fopr), multi-threading is widely applied
    including codes in Org/.
  * For even-odd fermion operators, lexical gauge configuration is
    given in set_config() instead of even-odd one.
  * In fermion operators, fprop_normalized() method is renamed to
    normalize_fprop().
  * Base classes avoid member data as much as possible.
    For example, m_vl (verbose level) is moved to subclasses.
  * For complex numbers, traits is introduced (src/complexTraits.h).
    C99 complex is now not supported.
  * In the library part of Bridge++, unique pointer is no longer used.
  * Indent is introduced in BridgeIO.
    For verbose level CRUCIAL, flush of output is added.
  * In IO classes, arguments of read_file() and write_file() are
    changed as Field* -> Field&.
  * Construction by giving Parameters object is regarded as default.
    Construction without Parameters is obsolete and [Deprecated]
    macro outputting warning at compilation is added.
  * Improve fieldStrength for topologicalCharge (info added in R2).

  BUG FIXES
  * Fix multi-threading in PolyakovLoop (fixed in release 2.0.0).
  * Fix problem for Nex>1 in Org/Fopr_Wilson(_eo)_impl (fixed in
    release 2.0.0, info added in R2).
  * Fix parameterManager_YAML (fixed in release 2.0.0, info added in R2).

Changes between Bridge++ version 1.6.x and 1.5.x

  FEATURES
  * Add a python interface "PyBridge++"
  * Add supports for Clang, Fugaku, NVIDIA HPC SDK, OakForest-PACS,
    and SX_AURORA
  * Terminate supports for COMA, XC40 and SX_ACE

  MISC
  * Add multithread to PolyakovLoop
  * Add sync_usleep
  * Enhance field, reduce_sum_global and mat_SU_N to cover complex arguments
  * Enhance sample_spectrum
  * Purge tinyxml2 as an extra lib

  BUG FIXES
  * Fix usage of abs() for floating point values
  * Fix integer overflow at IO (fixed in release 1.5.4)
  * Fix use_gauge_group = general (fixed in release 1.5.3)
  * Fix test_Gauge_Shift (fixed in release 1.5.2)
  * Fix action_F_Ratio_lex and action_F_Ratio_eo (fixed in release 1.5.1)

Changes between Bridge++ version 1.5.x and 1.4.x

  FEATURES
  * Employ a new directory layout
  * Terminate support for KEKSR, KEKBGQ and optimization to BG/Q

  MISC
  * Add bridge_initializer, bridge_long.h, boolean in parameter class,
        float to Communicator and ThreadManager, RandomNumbers(U(1),Z2),
        shiftField to Tests, Source_Random, Spectrum_4ptFunction,
        test_Solver, enum to bridge_defs.h
  * Combine Tests/ShiftSolver/ and Tests/Solver/ into Tests/Solver/
  * Create directories of ParameterFiles
  * Enhance field_F_1spinor, contract_4spinor, corr2pt_4spinor,
            fieldStrength, solver to deal with arbitrary initial guess
  * Improve choice of solver type for each quark, factory, Field, Makefile,
            parameter check, stability of BiCGStab-type solvers,
            usage of regex and round for old compilers
  * Move Field:element_type to defs.h, epsilon_index to Tools/ as const,
         preprocess_testmanager to test section in main
  * Remove #pragma in BridgeIO, the last comma of enum elements
  * Rename *.inc and *.tmpl to *-inc.h and *-tmpl.h, bridge.elf to
           bridge.all.elf with a symbolic link to bridge.elf,
           checker.{h,cpp} to parameterCheck.{h,cpp}, dump() to print()

  BUG FIXES
  * Fix solver_GMRES_m_Cmplx
  * Fix channel class (fixed in release 1.4.4)
  * Fix energyDensity (fixed in release 1.4.3)
  * Fix fft_xyz_1dim and run_test (fixed in release 1.4.1)

Changes between Bridge++ version 1.4.x and 1.3.x

  FEATURES
  * Change code directories to a library style
  * Change include paths to be relative
  * Revise Parameters to be a container

  MISC
  * Add Solver restart, Solver flops counter, Clover definition of
        field strength, meson operator, sink momentum, RandomNumbersManager,
        save/load to RandomNumber
  * Change test name for testmanager
  * Enhance GaugeConfig, GaugeFixing, bridgeIO
  * Improve fopr Org/Imp, Makefile
  * Revise Verbose level

  BUG FIXES
  * Fix a digit cancellation in stout projection (fixed in release 1.3.2)

Changes between Bridge++ version 1.3.x and 1.2.x

  FEATURES
  * Add generalized Wilson/Clover fermion, FFT by external library FFTW,
        unique pointer, individual compile for each test, factory for
        gauge action and fermion operator, options to test manager,
        adaptive Runge-Kutta method for Gradient flow,
        parameter file I/O in XML by external library tinyxml2

  MISC
  * Enhance FieldIO
  * Improve integrator
  * Remove return of field class type

  BUG FIXES
  * Fix Gradient flow (fixed in release 1.2.1, 1.2.2)
  * Fix memory leaks
  * Fix wrong parameter display
  * Fix too large field size at I/O and random number generation
  * Fix too large stack memory size

Changes between Bridge++ version 1.2.x and 1.1.x

  FEATURES
  * Multi-threading was covered by OpenMP

  BUGS FIXES
  * Fix Gradient flow (fixed in release 1.1.5, 1.1.6)
  * Fix Makefile (fixed in release 1.1.4)
  * Fix test_RandomNumbers_Mseries_GaussianField (fixed in release 1.1.3)
  * Fix parameter file (fixed in release 1.1.2)

Changes between Bridge++ version 1.1.x and 1.0.x

  FEATURES
  * Add more strict checks of parameters, YAML files for parameters,
        factory classes for several class families, wall source,
        base classes for eigensolvers, gauge fixing, and shiftsolvers,
        Polyakov loop measurement, new solvers (Solver_CGNE and Solver_CGNR)
  * Change test classes to functions, interface of constructors of
           Action classes, number of verbose output levels from 5 to 4,
           directory structure, main function, names of classes and methods,
           Fopr_CloverTerm
  * Enhance functionality of TestManager, exchange of complex<double>
            and double _Complex
  * Improve Makefile

  BUGS FIXES
  * Fix fieldIO::gather when using MPI (fixed in release 1.0.7)
  * Fix fieldIO when using MPI (fixed in release 1.0.6)
  * Fix IO (fixed in release 1.0.5)
  * Fix makeconfig.sh (fixed in release 1.0.5)
  * Fix Source_4spinor_Exp class (fixed in release 1.0.4)
  * Fix Makefile (fixed in release 1.0.2)
  * Fix test menu for test_GaugeConfig (fixed in release 1.0.1)
  * Fix initialization in testManager (fixed in release 1.0.1)
