In this release, the code has been reorganized and undergone major changes. Therefore this changelog will be less detailed and describe the changes in major groups.
- We have a new search API that allows search algorithms to co-exist. Currently available are
classic
(the default),dag-preview
(more later),valuehead
andpolicyhead
. The default algorithm can be changed either at build time by thedefault_search
option or by renaming the executable to include the algorithm name (e.g. lc0-valuehead). - We also have a new backend interface that is chess oriented and not tied to the network architecture. The existing backends still use the old interface through a wrapper.
- The source code is reorganized, with a more logical directory structure.
- The original search was ported to the new search and backend interfaces and is renamed to
classic
. This has allowed some streamlining and simplifications. - The
dag-preview
search is the DAG algorithm that lived in a separate branch up to now. It hasn't been so well tested, that's why it has "preview" in its name for now, but lives in thesrc/search/dag-classic
directory. - The
valuehead
search replacesValueOnly
mode and selects the move with the best value head evaluation. - The
policyhead
search is equivalent to a single node search, selecting the best move using just the policy head. - The new
default_backend
build option allows to override the fixed priority for the backend used by default. - The new
native_arch
build option to override the-march=native
compiler default for linux release builds, to help with distribution package creation. - We have a new
sycl
backend that will work with amd, intel and nvidia gpus. - There is also a new
onnx-trt
backend, using tensorrt on nvidia gpus. - The metal backend received several improvements.
- Support simple/normal/pro mode in options was cleaned up, using a common mechanism.
- Added the
wait
uci extension command to allow running simple tests from the command line. - Removed the
fen
uci extension command as it was unnecessarily complicating things. - Some preliminary fp8 support was added for onnx and xla. This is not functional, just there to make experimentation easier.
- Several build system changes and improvements.
- We now generate binaries for cuda 12, onnx-trt and macos.
- The onnx-trt package has a readme with instructions and an install script.
- Support for using lc0 with openbench.
- New
bench
mode for a quicker benchmark. - RPE nets are now detected and give an error instead of bad results.
- The rescorer code and training data header were refactored to make them usable by external tools.
- Assorted small fixes and improvements.