├── .github ├── ISSUE_TEMPLATE │ ├── BUG-REPORT.yml │ └── config.yml └── workflows │ ├── build-windows.yml │ ├── make.yml │ ├── stockfish.yml │ ├── stockfish_arm_binaries.yml │ ├── stockfish_binaries.yml │ ├── stockfish_compile_test.yml │ ├── stockfish_sanitizers.yml │ └── stockfish_test.yml ├── .gitignore ├── .vscode └── settings.json ├── AUTHORS ├── CITATION.cff ├── Copying.txt ├── README.md ├── Top CPU Contributors.txt ├── appveyor.yml ├── deploy ├── appveyor.yml ├── linux.sh ├── msys.sh ├── old-gcc.patch └── stable-slim.dockerfile ├── src ├── Makefile ├── benchmark.cpp ├── benchmark.h ├── bitbase.cpp ├── bitboard.cpp ├── bitboard.h ├── endgame.cpp ├── endgame.h ├── evaluate.cpp ├── evaluate.h ├── incbin │ ├── UNLICENCE │ └── incbin.h ├── main.cpp ├── material.cpp ├── material.h ├── misc.cpp ├── misc.h ├── movegen.cpp ├── movegen.h ├── movepick.cpp ├── movepick.h ├── nnue │ ├── evaluate_nnue.cpp │ ├── evaluate_nnue.h │ ├── features │ │ ├── half_ka_v2_hm.cpp │ │ └── half_ka_v2_hm.h │ ├── layers │ │ ├── affine_transform.h │ │ ├── affine_transform_sparse_input.h │ │ ├── clipped_relu.h │ │ ├── simd.h │ │ └── sqr_clipped_relu.h │ ├── nnue_accumulator.h │ ├── nnue_architecture.h │ ├── nnue_common.h │ └── nnue_feature_transformer.h ├── pawns.cpp ├── pawns.h ├── position.cpp ├── position.h ├── psqt.cpp ├── psqt.h ├── search.cpp ├── search.h ├── syzygy │ ├── tbprobe.cpp │ └── tbprobe.h ├── thread.cpp ├── thread.h ├── thread_win32_osx.h ├── timeman.cpp ├── timeman.h ├── tt.cpp ├── tt.h ├── tune.cpp ├── tune.h ├── types.h ├── uci.cpp ├── uci.h └── ucioption.cpp └── tests ├── instrumented.sh ├── perft.sh ├── puzzle.sh ├── reprosearch.sh └── signature.sh /.github/ISSUE_TEMPLATE/BUG-REPORT.yml: -------------------------------------------------------------------------------- 1 | name: Report issue 2 | description: Create a report to help us fix issues with the engine 3 | body: 4 | - type: textarea 5 | attributes: 6 | label: Describe the issue 7 | description: A clear and concise description of what you're experiencing. 8 | validations: 9 | required: true 10 | 11 | - type: textarea 12 | attributes: 13 | label: Expected behavior 14 | description: A clear and concise description of what you expected to happen. 15 | validations: 16 | required: true 17 | 18 | - type: textarea 19 | attributes: 20 | label: Steps to reproduce 21 | description: | 22 | Steps to reproduce the behavior. 23 | You can also use this section to paste the command line output. 24 | placeholder: | 25 | ``` 26 | position startpos moves g2g4 e7e5 f2f3 27 | go mate 1 28 | info string NNUE evaluation using nn-6877cd24400e.nnue enabled 29 | info depth 1 seldepth 1 multipv 1 score mate 1 nodes 33 nps 11000 tbhits 0 time 3 pv d8h4 30 | bestmove d8h4 31 | ``` 32 | validations: 33 | required: true 34 | 35 | - type: textarea 36 | attributes: 37 | label: Anything else? 38 | description: | 39 | Anything that will give us more context about the issue you are encountering. 40 | You can also use this section to propose ideas on how to solve the issue. 41 | validations: 42 | required: false 43 | 44 | - type: dropdown 45 | attributes: 46 | label: Operating system 47 | options: 48 | - All 49 | - Windows 50 | - Linux 51 | - MacOS 52 | - Android 53 | - Other or N/A 54 | validations: 55 | required: true 56 | 57 | - type: input 58 | attributes: 59 | label: Stockfish version 60 | description: | 61 | This can be found by running the engine. 62 | You can also use the commit ID. 63 | placeholder: Stockfish 15 / e6e324e 64 | validations: 65 | required: true 66 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Discord server 4 | url: https://discord.gg/GWDRS3kU6R 5 | about: Feel free to ask for support or have a chat with us in our Discord server! 6 | - name: Discussions, Q&A, ideas, show us something... 7 | url: https://github.com/official-stockfish/Stockfish/discussions/new 8 | about: Do you have an idea for Stockfish? Do you want to show something that you made? Please open a discussion about it! 9 | -------------------------------------------------------------------------------- /.github/workflows/build-windows.yml: -------------------------------------------------------------------------------- 1 | name: build-windows 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v2 15 | 16 | - name: install 17 | run: sudo apt install mingw-w64 18 | 19 | - name: make default 20 | run: cd src && make clean && make -j build COMP=mingw ARCH=x86-64 EXE=stockfish_x64.exe && strip stockfish_x64.exe 21 | 22 | - name: make modern 23 | run: cd src && make clean && make -j build COMP=mingw ARCH=x86-64-modern EXE=stockfish_x64_modern.exe && strip stockfish_x64_modern.exe 24 | 25 | - name: make bmi2 26 | run: cd src && make clean && make -j build COMP=mingw ARCH=x86-64-bmi2 EXE=stockfish_x64_bmi2.exe && strip stockfish_x64_bmi2.exe 27 | 28 | - uses: actions/upload-artifact@v2 29 | with: 30 | name: stockfish 31 | path: src/stockfish*.exe 32 | -------------------------------------------------------------------------------- /.github/workflows/make.yml: -------------------------------------------------------------------------------- 1 | name: Make CI 2 | 3 | on: 4 | push: 5 | pull_request: 6 | branches: [ master, no-nnue ] 7 | 8 | jobs: 9 | build: 10 | 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v2 15 | - uses: actions/setup-python@v2 16 | with: 17 | python-version: '3.x' 18 | - name: configure 19 | run: sudo apt install expect && pip3 install chess && git clone https://github.com/ddugovic/chess-artist.git ./tests/chess-artist --depth 1 20 | - name: make 21 | run: cd src && make -j3 build ARCH=x86-64-bmi2 COMP=clang debug=yes 22 | - name: make net 23 | run: cd src && make net 24 | - name: make check 25 | run: cd src && ../tests/perft.sh && ../tests/reprosearch.sh && ../tests/puzzle.sh 26 | -------------------------------------------------------------------------------- /.github/workflows/stockfish.yml: -------------------------------------------------------------------------------- 1 | name: Stockfish 2 | on: 3 | push: 4 | tags: 5 | - '*' 6 | branches: 7 | - master 8 | - tools 9 | - github_ci 10 | pull_request: 11 | branches: 12 | - master 13 | - tools 14 | jobs: 15 | Prerelease: 16 | if: github.ref == 'refs/heads/master' 17 | runs-on: ubuntu-latest 18 | steps: 19 | - uses: actions/checkout@v3 20 | with: 21 | fetch-depth: 0 22 | 23 | # returns null if no pre-release exists 24 | - name: Get Commit SHA of Latest Pre-release 25 | run: | 26 | # Install required packages 27 | sudo apt-get update 28 | sudo apt-get install -y curl jq 29 | 30 | echo "COMMIT_SHA=$(jq -r 'map(select(.prerelease)) | first | .tag_name' <<< $(curl -s https://api.github.com/repos/${{ github.repository_owner }}/Stockfish/releases))" >> $GITHUB_ENV 31 | 32 | # delete old previous pre-release and tag 33 | - uses: dev-drprasad/delete-tag-and-release@v0.2.1 34 | if: env.COMMIT_SHA != 'null' 35 | with: 36 | tag_name: ${{ env.COMMIT_SHA }} 37 | env: 38 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 39 | 40 | Sanitizers: 41 | uses: ./.github/workflows/stockfish_sanitizers.yml 42 | Tests: 43 | uses: ./.github/workflows/stockfish_test.yml 44 | Compiles: 45 | uses: ./.github/workflows/stockfish_compile_test.yml 46 | Binaries: 47 | if: github.ref == 'refs/heads/master' || (startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag') 48 | uses: ./.github/workflows/stockfish_binaries.yml 49 | ARM_Binaries: 50 | if: github.ref == 'refs/heads/master' || (startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag') 51 | uses: ./.github/workflows/stockfish_arm_binaries.yml 52 | -------------------------------------------------------------------------------- /.github/workflows/stockfish_arm_binaries.yml: -------------------------------------------------------------------------------- 1 | name: Stockfish 2 | on: 3 | workflow_call: 4 | jobs: 5 | Stockfish: 6 | name: ${{ matrix.config.name }} ${{ matrix.binaries }} 7 | runs-on: ${{ matrix.config.os }} 8 | env: 9 | COMPILER: ${{ matrix.config.compiler }} 10 | COMP: ${{ matrix.config.comp }} 11 | EMU: ${{ matrix.config.emu }} 12 | EXT: ${{ matrix.config.ext }} 13 | OS: ${{ matrix.config.os }} 14 | BINARY: ${{ matrix.binaries }} 15 | strategy: 16 | matrix: 17 | config: 18 | - name: Android NDK aarch64 19 | os: ubuntu-22.04 20 | compiler: aarch64-linux-android21-clang++ 21 | emu: qemu-aarch64 22 | comp: ndk 23 | shell: bash 24 | - name: Android NDK arm 25 | os: ubuntu-22.04 26 | compiler: armv7a-linux-androideabi21-clang++ 27 | emu: qemu-arm 28 | comp: ndk 29 | shell: bash 30 | binaries: 31 | - armv8-dotprod 32 | - armv8 33 | - armv7 34 | - armv7-neon 35 | exclude: 36 | - binaries: armv8-dotprod 37 | config: {compiler: armv7a-linux-androideabi21-clang++} 38 | - binaries: armv8 39 | config: {compiler: armv7a-linux-androideabi21-clang++} 40 | - binaries: armv7 41 | config: {compiler: aarch64-linux-android21-clang++} 42 | - binaries: armv7-neon 43 | config: {compiler: aarch64-linux-android21-clang++} 44 | defaults: 45 | run: 46 | working-directory: src 47 | shell: ${{ matrix.config.shell }} 48 | steps: 49 | - uses: actions/checkout@v3 50 | with: 51 | fetch-depth: 0 52 | 53 | - name: Download required linux packages 54 | if: runner.os == 'Linux' 55 | run: | 56 | sudo apt update 57 | sudo apt install qemu-user 58 | 59 | - name: Install NDK 60 | if: runner.os == 'Linux' 61 | run: | 62 | if [ $COMP == ndk ]; then 63 | NDKV="21.4.7075529" 64 | ANDROID_ROOT=/usr/local/lib/android 65 | ANDROID_SDK_ROOT=$ANDROID_ROOT/sdk 66 | SDKMANAGER=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager 67 | echo "y" | $SDKMANAGER "ndk;$NDKV" 68 | ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/$NDKV 69 | ANDROID_NDK_BIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin 70 | echo "ANDROID_NDK_BIN=$ANDROID_NDK_BIN" >> $GITHUB_ENV 71 | fi 72 | 73 | - name: Download the used network from the fishtest framework 74 | run: make net 75 | 76 | - name: Check compiler 77 | run: | 78 | if [ $COMP == ndk ]; then 79 | export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH 80 | fi 81 | $COMPILER -v 82 | 83 | - name: Test help target 84 | run: make help 85 | 86 | - name: Check git 87 | run: git --version 88 | 89 | # Compile profile guided builds 90 | 91 | - name: Compile ${{ matrix.binaries }} build 92 | run: | 93 | if [ $COMP == ndk ]; then 94 | export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH 95 | export LDFLAGS="-static -Wno-unused-command-line-argument" 96 | fi 97 | make clean 98 | make -j2 profile-build ARCH=$BINARY COMP=$COMP WINE_PATH=$EMU 99 | make strip ARCH=$BINARY COMP=$COMP 100 | mv ./stockfish$EXT ../stockfish-android-$BINARY$EXT 101 | 102 | - name: Remove non src files 103 | run: rm -f *.o .depend *.nnue 104 | 105 | - name: Download wiki 106 | run: | 107 | git clone https://github.com/official-stockfish/Stockfish.wiki.git ../wiki 108 | cd ../wiki 109 | rm -rf .git 110 | 111 | - name: Create tar archive. 112 | run: | 113 | cd .. 114 | mkdir stockfish 115 | cp -r wiki stockfish/ 116 | cp -r src stockfish/ 117 | cp stockfish-android-$BINARY$EXT stockfish/ 118 | cp "Top CPU Contributors.txt" stockfish/ 119 | cp Copying.txt stockfish/ 120 | cp AUTHORS stockfish/ 121 | cp CITATION.cff stockfish/ 122 | cp README.md stockfish/ 123 | tar -cvf stockfish-android-$BINARY.tar stockfish 124 | 125 | - name: Upload binaries 126 | uses: actions/upload-artifact@v3 127 | with: 128 | name: stockfish-android-${{ matrix.binaries }} 129 | path: stockfish-android-${{ matrix.binaries }}.tar 130 | 131 | - name: Release 132 | if: startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag' 133 | uses: softprops/action-gh-release@v1 134 | with: 135 | files: stockfish-android-${{ matrix.binaries }}.tar 136 | 137 | - name: Get last commit sha 138 | id: last_commit 139 | run: echo "COMMIT_SHA=$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV 140 | 141 | - name: Get commit date 142 | id: commit_date 143 | run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV 144 | 145 | # Make sure that an old ci which still runs on master doesn't recreate a prerelease 146 | - name: Check Pullable Commits 147 | id: check_commits 148 | run: | 149 | git fetch 150 | CHANGES=$(git rev-list HEAD..origin/master --count) 151 | echo "CHANGES=$CHANGES" >> $GITHUB_ENV 152 | 153 | - name: Prerelease 154 | if: github.ref_name == 'master' && env.CHANGES == '0' 155 | continue-on-error: true 156 | uses: softprops/action-gh-release@v1 157 | with: 158 | name: Stockfish dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }} 159 | tag_name: stockfish-dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }} 160 | prerelease: true 161 | files: stockfish-android-${{ matrix.binaries }}.tar 162 | -------------------------------------------------------------------------------- /.github/workflows/stockfish_binaries.yml: -------------------------------------------------------------------------------- 1 | name: Stockfish 2 | on: 3 | workflow_call: 4 | jobs: 5 | Stockfish: 6 | name: ${{ matrix.config.name }} ${{ matrix.binaries }} 7 | runs-on: ${{ matrix.config.os }} 8 | env: 9 | COMPILER: ${{ matrix.config.compiler }} 10 | COMP: ${{ matrix.config.comp }} 11 | EXT: ${{ matrix.config.ext }} 12 | NAME: ${{ matrix.config.simple_name }} 13 | BINARY: ${{ matrix.binaries }} 14 | strategy: 15 | matrix: 16 | config: 17 | - name: Ubuntu 20.04 GCC 18 | os: ubuntu-20.04 19 | simple_name: ubuntu 20 | compiler: g++ 21 | comp: gcc 22 | shell: bash 23 | archive_ext: tar 24 | - name: MacOS 12 Apple Clang 25 | os: macos-12 26 | simple_name: macos 27 | compiler: clang++ 28 | comp: clang 29 | shell: bash 30 | archive_ext: tar 31 | - name: Windows 2022 Mingw-w64 GCC x86_64 32 | os: windows-2022 33 | simple_name: windows 34 | compiler: g++ 35 | comp: mingw 36 | msys_sys: mingw64 37 | msys_env: x86_64-gcc 38 | shell: msys2 {0} 39 | ext: .exe 40 | archive_ext: zip 41 | binaries: 42 | - x86-64 43 | - x86-64-modern 44 | - x86-64-avx2 45 | - x86-64-bmi2 46 | exclude: 47 | - binaries: x86-64-avx2 48 | config: { os: macos-12 } 49 | - binaries: x86-64-bmi2 50 | config: { os: macos-12 } 51 | defaults: 52 | run: 53 | working-directory: src 54 | shell: ${{ matrix.config.shell }} 55 | steps: 56 | - uses: actions/checkout@v3 57 | with: 58 | fetch-depth: 0 59 | 60 | - name: Download required linux packages 61 | if: runner.os == 'Linux' 62 | run: sudo apt update 63 | 64 | - name: Setup msys and install required packages 65 | if: runner.os == 'Windows' 66 | uses: msys2/setup-msys2@v2 67 | with: 68 | msystem: ${{ matrix.config.msys_sys }} 69 | install: mingw-w64-${{ matrix.config.msys_env }} make git zip 70 | 71 | - name: Download the used network from the fishtest framework 72 | run: make net 73 | 74 | - name: Check compiler 75 | run: $COMPILER -v 76 | 77 | - name: Test help target 78 | run: make help 79 | 80 | - name: Check git 81 | run: git --version 82 | 83 | # Compile profile guided builds 84 | 85 | - name: Compile ${{ matrix.binaries }} build 86 | run: | 87 | make -j2 profile-build ARCH=$BINARY COMP=$COMP 88 | make strip ARCH=$BINARY COMP=$COMP 89 | mv ./stockfish$EXT ../stockfish-$NAME-$BINARY$EXT 90 | 91 | - name: Remove non src files 92 | run: git clean -fx 93 | 94 | - name: Download wiki 95 | run: | 96 | git clone https://github.com/official-stockfish/Stockfish.wiki.git ../wiki 97 | rm -rf ../wiki/.git 98 | 99 | - name: Create directory. 100 | run: | 101 | cd .. 102 | mkdir stockfish 103 | cp -r wiki stockfish/ 104 | cp -r src stockfish/ 105 | cp stockfish-$NAME-$BINARY$EXT stockfish/ 106 | cp "Top CPU Contributors.txt" stockfish/ 107 | cp Copying.txt stockfish/ 108 | cp AUTHORS stockfish/ 109 | cp CITATION.cff stockfish/ 110 | cp README.md stockfish/ 111 | 112 | - name: Create tar 113 | if: runner.os != 'Windows' 114 | run: | 115 | cd .. 116 | tar -cvf stockfish-$NAME-$BINARY.tar stockfish 117 | 118 | - name: Create zip 119 | if: runner.os == 'Windows' 120 | run: | 121 | cd .. 122 | zip -r stockfish-$NAME-$BINARY.zip stockfish 123 | 124 | - name: Upload binaries 125 | if: runner.os != 'Windows' 126 | uses: actions/upload-artifact@v3 127 | with: 128 | name: stockfish-${{ matrix.config.os }}-${{ matrix.binaries }} 129 | path: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.tar 130 | 131 | # Artifacts automatically get zipped 132 | # to avoid double zipping, we use the unzipped directory 133 | - name: Upload binaries 134 | if: runner.os == 'Windows' 135 | uses: actions/upload-artifact@v3 136 | with: 137 | name: stockfish-${{ matrix.config.os }}-${{ matrix.binaries }} 138 | path: stockfish 139 | 140 | - name: Release 141 | if: startsWith(github.ref_name, 'sf_') && github.ref_type == 'tag' 142 | uses: softprops/action-gh-release@v1 143 | with: 144 | files: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.${{ matrix.config.archive_ext }} 145 | 146 | - name: Get last commit sha 147 | id: last_commit 148 | run: echo "COMMIT_SHA=$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV 149 | 150 | - name: Get commit date 151 | id: commit_date 152 | run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV 153 | 154 | # Make sure that an old ci which still runs on master doesn't recreate a prerelease 155 | - name: Check Pullable Commits 156 | id: check_commits 157 | run: | 158 | git fetch 159 | CHANGES=$(git rev-list HEAD..origin/master --count) 160 | echo "CHANGES=$CHANGES" >> $GITHUB_ENV 161 | 162 | - name: Prerelease 163 | if: github.ref_name == 'master' && env.CHANGES == '0' 164 | continue-on-error: true 165 | uses: softprops/action-gh-release@v1 166 | with: 167 | name: Stockfish dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }} 168 | tag_name: stockfish-dev-${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }} 169 | prerelease: true 170 | files: stockfish-${{ matrix.config.simple_name }}-${{ matrix.binaries }}.${{ matrix.config.archive_ext }} 171 | -------------------------------------------------------------------------------- /.github/workflows/stockfish_compile_test.yml: -------------------------------------------------------------------------------- 1 | name: Stockfish 2 | on: 3 | workflow_call: 4 | jobs: 5 | Stockfish: 6 | name: ${{ matrix.config.name }} 7 | runs-on: ${{ matrix.config.os }} 8 | env: 9 | COMPILER: ${{ matrix.config.compiler }} 10 | COMP: ${{ matrix.config.comp }} 11 | strategy: 12 | matrix: 13 | config: 14 | - name: Ubuntu 20.04 GCC 15 | os: ubuntu-20.04 16 | compiler: g++ 17 | comp: gcc 18 | shell: bash 19 | - name: Ubuntu 20.04 Clang 20 | os: ubuntu-20.04 21 | compiler: clang++ 22 | comp: clang 23 | shell: bash 24 | - name: MacOS 12 Apple Clang 25 | os: macos-12 26 | compiler: clang++ 27 | comp: clang 28 | shell: bash 29 | - name: MacOS 12 GCC 11 30 | os: macos-12 31 | compiler: g++-11 32 | comp: gcc 33 | shell: bash 34 | - name: Windows 2022 Mingw-w64 GCC x86_64 35 | os: windows-2022 36 | compiler: g++ 37 | comp: mingw 38 | msys_sys: mingw64 39 | msys_env: x86_64-gcc 40 | shell: msys2 {0} 41 | - name: Windows 2022 Mingw-w64 Clang x86_64 42 | os: windows-2022 43 | compiler: clang++ 44 | comp: clang 45 | msys_sys: clang64 46 | msys_env: clang-x86_64-clang 47 | shell: msys2 {0} 48 | 49 | defaults: 50 | run: 51 | working-directory: src 52 | shell: ${{ matrix.config.shell }} 53 | steps: 54 | - uses: actions/checkout@v3 55 | with: 56 | fetch-depth: 0 57 | 58 | - name: Setup msys and install required packages 59 | if: runner.os == 'Windows' 60 | uses: msys2/setup-msys2@v2 61 | with: 62 | msystem: ${{matrix.config.msys_sys}} 63 | install: mingw-w64-${{matrix.config.msys_env}} make git 64 | 65 | - name: Download the used network from the fishtest framework 66 | run: make net 67 | 68 | - name: Check compiler 69 | run: $COMPILER -v 70 | 71 | - name: Test help target 72 | run: make help 73 | 74 | - name: Check git 75 | run: git --version 76 | 77 | # x86-64 with newer extensions tests 78 | 79 | - name: Compile x86-64-avx2 build 80 | run: | 81 | make clean 82 | make -j2 ARCH=x86-64-avx2 build 83 | 84 | - name: Compile x86-64-bmi2 build 85 | run: | 86 | make clean 87 | make -j2 ARCH=x86-64-bmi2 build 88 | 89 | - name: Compile x86-64-avx512 build 90 | run: | 91 | make clean 92 | make -j2 ARCH=x86-64-avx512 build 93 | 94 | - name: Compile x86-64-vnni512 build 95 | run: | 96 | make clean 97 | make -j2 ARCH=x86-64-vnni512 build 98 | 99 | - name: Compile x86-64-vnni256 build 100 | run: | 101 | make clean 102 | make -j2 ARCH=x86-64-vnni256 build 103 | -------------------------------------------------------------------------------- /.github/workflows/stockfish_sanitizers.yml: -------------------------------------------------------------------------------- 1 | name: Stockfish 2 | on: 3 | workflow_call: 4 | jobs: 5 | Stockfish: 6 | name: ${{ matrix.sanitizers.name }} 7 | runs-on: ${{ matrix.config.os }} 8 | env: 9 | COMPILER: ${{ matrix.config.compiler }} 10 | COMP: ${{ matrix.config.comp }} 11 | CXXFLAGS: "-Werror" 12 | strategy: 13 | matrix: 14 | config: 15 | - name: Ubuntu 20.04 GCC 16 | os: ubuntu-20.04 17 | compiler: g++ 18 | comp: gcc 19 | shell: bash 20 | sanitizers: 21 | - name: Run with thread sanitizer 22 | make_option: sanitize=thread 23 | instrumented_option: sanitizer-thread 24 | - name: Run with UB sanitizer 25 | make_option: sanitize=undefined 26 | instrumented_option: sanitizer-undefined 27 | - name: Run under valgrind 28 | make_option: "" 29 | instrumented_option: valgrind 30 | - name: Run under valgrind-thread 31 | make_option: "" 32 | instrumented_option: valgrind-thread 33 | defaults: 34 | run: 35 | working-directory: src 36 | shell: ${{ matrix.config.shell }} 37 | steps: 38 | - uses: actions/checkout@v3 39 | with: 40 | fetch-depth: 0 41 | 42 | - name: Download required linux packages 43 | run: | 44 | sudo apt update 45 | sudo apt install expect valgrind g++-multilib 46 | 47 | - name: Download the used network from the fishtest framework 48 | run: make net 49 | 50 | - name: Check compiler 51 | run: $COMPILER -v 52 | 53 | - name: Test help target 54 | run: make help 55 | 56 | - name: Check git 57 | run: git --version 58 | 59 | # Sanitizers 60 | 61 | - name: ${{ matrix.sanitizers.name }} 62 | run: | 63 | export CXXFLAGS="-O1 -fno-inline" 64 | make clean 65 | make -j2 ARCH=x86-64-modern ${{ matrix.sanitizers.make_option }} debug=yes optimize=no build > /dev/null 66 | ../tests/instrumented.sh --${{ matrix.sanitizers.instrumented_option }} 67 | -------------------------------------------------------------------------------- /.github/workflows/stockfish_test.yml: -------------------------------------------------------------------------------- 1 | name: Stockfish 2 | on: 3 | workflow_call: 4 | jobs: 5 | Stockfish: 6 | name: ${{ matrix.config.name }} 7 | runs-on: ${{ matrix.config.os }} 8 | env: 9 | COMPILER: ${{ matrix.config.compiler }} 10 | COMP: ${{ matrix.config.comp }} 11 | CXXFLAGS: "-Werror" 12 | strategy: 13 | matrix: 14 | config: 15 | - name: Ubuntu 20.04 GCC 16 | os: ubuntu-20.04 17 | compiler: g++ 18 | comp: gcc 19 | run_32bit_tests: true 20 | run_64bit_tests: true 21 | shell: bash 22 | - name: Ubuntu 20.04 Clang 23 | os: ubuntu-20.04 24 | compiler: clang++ 25 | comp: clang 26 | run_32bit_tests: true 27 | run_64bit_tests: true 28 | shell: bash 29 | - name: Android NDK aarch64 30 | os: ubuntu-22.04 31 | compiler: aarch64-linux-android21-clang++ 32 | comp: ndk 33 | run_armv8_tests: true 34 | shell: bash 35 | - name: Android NDK arm 36 | os: ubuntu-22.04 37 | compiler: armv7a-linux-androideabi21-clang++ 38 | comp: ndk 39 | run_armv7_tests: true 40 | shell: bash 41 | - name: MacOS 12 Apple Clang 42 | os: macos-12 43 | compiler: clang++ 44 | comp: clang 45 | run_64bit_tests: true 46 | shell: bash 47 | - name: MacOS 12 GCC 11 48 | os: macos-12 49 | compiler: g++-11 50 | comp: gcc 51 | run_64bit_tests: true 52 | shell: bash 53 | - name: Windows 2022 Mingw-w64 GCC x86_64 54 | os: windows-2022 55 | compiler: g++ 56 | comp: mingw 57 | run_64bit_tests: true 58 | msys_sys: mingw64 59 | msys_env: x86_64-gcc 60 | shell: msys2 {0} 61 | - name: Windows 2022 Mingw-w64 GCC i686 62 | os: windows-2022 63 | compiler: g++ 64 | comp: mingw 65 | run_32bit_tests: true 66 | msys_sys: mingw32 67 | msys_env: i686-gcc 68 | shell: msys2 {0} 69 | - name: Windows 2022 Mingw-w64 Clang x86_64 70 | os: windows-2022 71 | compiler: clang++ 72 | comp: clang 73 | run_64bit_tests: true 74 | msys_sys: clang64 75 | msys_env: clang-x86_64-clang 76 | shell: msys2 {0} 77 | defaults: 78 | run: 79 | working-directory: src 80 | shell: ${{ matrix.config.shell }} 81 | steps: 82 | - uses: actions/checkout@v3 83 | with: 84 | fetch-depth: 0 85 | 86 | - name: Download required linux packages 87 | if: runner.os == 'Linux' 88 | run: | 89 | sudo apt update 90 | sudo apt install expect valgrind g++-multilib qemu-user 91 | 92 | - name: Install NDK 93 | if: runner.os == 'Linux' 94 | run: | 95 | if [ $COMP == ndk ]; then 96 | NDKV="21.4.7075529" 97 | ANDROID_ROOT=/usr/local/lib/android 98 | ANDROID_SDK_ROOT=$ANDROID_ROOT/sdk 99 | SDKMANAGER=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager 100 | echo "y" | $SDKMANAGER "ndk;$NDKV" 101 | ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/$NDKV 102 | ANDROID_NDK_BIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin 103 | echo "ANDROID_NDK_BIN=$ANDROID_NDK_BIN" >> $GITHUB_ENV 104 | fi 105 | 106 | - name: Download required macOS packages 107 | if: runner.os == 'macOS' 108 | run: brew install coreutils 109 | 110 | - name: Setup msys and install required packages 111 | if: runner.os == 'Windows' 112 | uses: msys2/setup-msys2@v2 113 | with: 114 | msystem: ${{ matrix.config.msys_sys }} 115 | install: mingw-w64-${{ matrix.config.msys_env }} make git expect 116 | 117 | - name: Download the used network from the fishtest framework 118 | run: make net 119 | 120 | - name: Extract the bench number from the commit history 121 | run: | 122 | for hash in $(git rev-list -100 HEAD); do 123 | benchref=$(git show -s $hash | tac | grep -m 1 -o -x '[[:space:]]*\b[Bb]ench[ :]\+[1-9][0-9]\{5,7\}\b[[:space:]]*' | sed 's/[^0-9]//g') && break || true 124 | done 125 | [[ -n "$benchref" ]] && echo "benchref=$benchref" >> $GITHUB_ENV && echo "From commit: $(git rev-parse HEAD~$n)" && echo "Reference bench: $benchref" || echo "No bench found" 126 | 127 | - name: Check compiler 128 | run: | 129 | if [ $COMP == ndk ]; then 130 | export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH 131 | fi 132 | $COMPILER -v 133 | 134 | - name: Test help target 135 | run: make help 136 | 137 | - name: Check git 138 | run: git --version 139 | 140 | # x86-32 tests 141 | 142 | - name: Test debug x86-32 build 143 | if: matrix.config.run_32bit_tests 144 | run: | 145 | export CXXFLAGS="-Werror -D_GLIBCXX_DEBUG" 146 | make clean 147 | make -j2 ARCH=x86-32 optimize=no debug=yes build 148 | ../tests/signature.sh $benchref 149 | 150 | - name: Test x86-32 build 151 | if: matrix.config.run_32bit_tests 152 | run: | 153 | make clean 154 | make -j2 ARCH=x86-32 build 155 | ../tests/signature.sh $benchref 156 | 157 | - name: Test x86-32-sse41-popcnt build 158 | if: matrix.config.run_32bit_tests 159 | run: | 160 | make clean 161 | make -j2 ARCH=x86-32-sse41-popcnt build 162 | ../tests/signature.sh $benchref 163 | 164 | - name: Test x86-32-sse2 build 165 | if: matrix.config.run_32bit_tests 166 | run: | 167 | make clean 168 | make -j2 ARCH=x86-32-sse2 build 169 | ../tests/signature.sh $benchref 170 | 171 | - name: Test general-32 build 172 | if: matrix.config.run_32bit_tests 173 | run: | 174 | make clean 175 | make -j2 ARCH=general-32 build 176 | ../tests/signature.sh $benchref 177 | 178 | # x86-64 tests 179 | 180 | - name: Test debug x86-64-modern build 181 | if: matrix.config.run_64bit_tests 182 | run: | 183 | export CXXFLAGS="-Werror -D_GLIBCXX_DEBUG" 184 | make clean 185 | make -j2 ARCH=x86-64-modern optimize=no debug=yes build 186 | ../tests/signature.sh $benchref 187 | 188 | - name: Test x86-64-bmi2 build 189 | if: matrix.config.run_64bit_tests && runner.os != 'macOS' 190 | run: | 191 | make clean 192 | make -j2 ARCH=x86-64-bmi2 build 193 | ../tests/signature.sh $benchref 194 | 195 | - name: Test x86-64-avx2 build 196 | if: matrix.config.run_64bit_tests && runner.os != 'macOS' 197 | run: | 198 | make clean 199 | make -j2 ARCH=x86-64-avx2 build 200 | ../tests/signature.sh $benchref 201 | 202 | - name: Test x86-64-modern build 203 | if: matrix.config.run_64bit_tests 204 | run: | 205 | make clean 206 | make -j2 ARCH=x86-64-modern build 207 | ../tests/signature.sh $benchref 208 | 209 | - name: Test x86-64-ssse3 build 210 | if: matrix.config.run_64bit_tests 211 | run: | 212 | make clean 213 | make -j2 ARCH=x86-64-ssse3 build 214 | ../tests/signature.sh $benchref 215 | 216 | - name: Test x86-64-sse3-popcnt build 217 | if: matrix.config.run_64bit_tests 218 | run: | 219 | make clean 220 | make -j2 ARCH=x86-64-sse3-popcnt build 221 | ../tests/signature.sh $benchref 222 | 223 | - name: Test x86-64 build 224 | if: matrix.config.run_64bit_tests 225 | run: | 226 | make clean 227 | make -j2 ARCH=x86-64 build 228 | ../tests/signature.sh $benchref 229 | 230 | - name: Test general-64 build 231 | if: matrix.config.run_64bit_tests 232 | run: | 233 | make clean 234 | make -j2 ARCH=general-64 build 235 | ../tests/signature.sh $benchref 236 | 237 | # armv8 tests 238 | 239 | - name: Test armv8 build 240 | if: matrix.config.run_armv8_tests 241 | run: | 242 | export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH 243 | export LDFLAGS="-static -Wno-unused-command-line-argument" 244 | make clean 245 | make -j2 ARCH=armv8 build 246 | ../tests/signature.sh $benchref 247 | 248 | # armv7 tests 249 | 250 | - name: Test armv7 build 251 | if: matrix.config.run_armv7_tests 252 | run: | 253 | export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH 254 | export LDFLAGS="-static -Wno-unused-command-line-argument" 255 | make clean 256 | make -j2 ARCH=armv7 build 257 | ../tests/signature.sh $benchref 258 | 259 | - name: Test armv7-neon build 260 | if: matrix.config.run_armv7_tests 261 | run: | 262 | export PATH=${{ env.ANDROID_NDK_BIN }}:$PATH 263 | export LDFLAGS="-static -Wno-unused-command-line-argument" 264 | make clean 265 | make -j2 ARCH=armv7-neon build 266 | ../tests/signature.sh $benchref 267 | 268 | # Other tests 269 | 270 | - name: Check perft and search reproducibility 271 | if: matrix.config.run_64bit_tests 272 | run: | 273 | make clean 274 | make -j2 ARCH=x86-64-modern build 275 | ../tests/perft.sh 276 | ../tests/reprosearch.sh 277 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Files from build 2 | **/*.o 3 | **/*.s 4 | src/.depend 5 | 6 | # Built binary 7 | src/stockfish* 8 | src/-lstdc++.res 9 | 10 | # Neural network for the NNUE evaluation 11 | **/*.nnue 12 | 13 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.associations": { 3 | "algorithm": "cpp", 4 | "bitset": "cpp", 5 | "iterator": "cpp", 6 | "xhash": "cpp", 7 | "xmemory": "cpp", 8 | "xtree": "cpp", 9 | "xutility": "cpp", 10 | "array": "cpp", 11 | "atomic": "cpp", 12 | "bit": "cpp", 13 | "cctype": "cpp", 14 | "charconv": "cpp", 15 | "chrono": "cpp", 16 | "clocale": "cpp", 17 | "cmath": "cpp", 18 | "compare": "cpp", 19 | "concepts": "cpp", 20 | "condition_variable": "cpp", 21 | "cstddef": "cpp", 22 | "cstdint": "cpp", 23 | "cstdio": "cpp", 24 | "cstdlib": "cpp", 25 | "cstring": "cpp", 26 | "ctime": "cpp", 27 | "cwchar": "cpp", 28 | "deque": "cpp", 29 | "exception": "cpp", 30 | "format": "cpp", 31 | "forward_list": "cpp", 32 | "fstream": "cpp", 33 | "initializer_list": "cpp", 34 | "iomanip": "cpp", 35 | "ios": "cpp", 36 | "iosfwd": "cpp", 37 | "iostream": "cpp", 38 | "istream": "cpp", 39 | "limits": "cpp", 40 | "list": "cpp", 41 | "locale": "cpp", 42 | "map": "cpp", 43 | "memory": "cpp", 44 | "mutex": "cpp", 45 | "new": "cpp", 46 | "optional": "cpp", 47 | "ostream": "cpp", 48 | "ratio": "cpp", 49 | "set": "cpp", 50 | "sstream": "cpp", 51 | "stdexcept": "cpp", 52 | "stop_token": "cpp", 53 | "streambuf": "cpp", 54 | "string": "cpp", 55 | "system_error": "cpp", 56 | "thread": "cpp", 57 | "tuple": "cpp", 58 | "type_traits": "cpp", 59 | "typeinfo": "cpp", 60 | "unordered_map": "cpp", 61 | "utility": "cpp", 62 | "vector": "cpp", 63 | "xfacet": "cpp", 64 | "xiosbase": "cpp", 65 | "xlocale": "cpp", 66 | "xlocbuf": "cpp", 67 | "xlocinfo": "cpp", 68 | "xlocmes": "cpp", 69 | "xlocmon": "cpp", 70 | "xlocnum": "cpp", 71 | "xloctime": "cpp", 72 | "xstring": "cpp", 73 | "xtr1common": "cpp" 74 | } 75 | } -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | # List of authors for Multi-Variant Stockfish 2 | Daniel Dugovic (ddugovic) 3 | Fabian Fichter (ianfab) 4 | 5 | # Founders of the Stockfish project and fishtest infrastructure 6 | Tord Romstad (romstad) 7 | Marco Costalba (mcostalba) 8 | Joona Kiiski (zamar) 9 | Gary Linscott (glinscott) 10 | 11 | # Authors and inventors of NNUE, training, and NNUE port 12 | Yu Nasu (ynasu87) 13 | Motohiro Isozaki (yaneurao) 14 | Hisayori Noda (nodchip) 15 | 16 | # All other authors of Stockfish code (in alphabetical order) 17 | Aditya (absimaldata) 18 | Adrian Petrescu (apetresc) 19 | Ajith Chandy Jose (ajithcj) 20 | Alain Savard (Rocky640) 21 | Alayan Feh (Alayan-stk-2) 22 | Alexander Kure 23 | Alexander Pagel (Lolligerhans) 24 | Alfredo Menezes (lonfom169) 25 | Ali AlZhrani (Cooffe) 26 | Andreas Matthies (Matthies) 27 | Andrei Vetrov (proukornew) 28 | Andrew Grant (AndyGrant) 29 | Andrey Neporada (nepal) 30 | Andy Duplain 31 | Antoine Champion (antoinechampion) 32 | Aram Tumanian (atumanian) 33 | Arjun Temurnikar 34 | Artem Solopiy (EntityFX) 35 | Auguste Pop 36 | Balint Pfliegel 37 | Ben Chaney (Chaneybenjamini) 38 | Ben Koshy (BKSpurgeon) 39 | Bill Henry (VoyagerOne) 40 | Bojun Guo (noobpwnftw, Nooby) 41 | borg323 42 | Boštjan Mejak (PedanticHacker) 43 | braich 44 | Brian Sheppard (SapphireBrand, briansheppard-toast) 45 | Bruno de Melo Costa (BM123499) 46 | Bruno Pellanda (pellanda) 47 | Bryan Cross (crossbr) 48 | candirufish 49 | Chess13234 50 | Chris Cain (ceebo) 51 | clefrks 52 | Dale Weiler (graphitemaster) 53 | Daniel Axtens (daxtens) 54 | Daniel Monroe (Ergodice) 55 | Dan Schmidt (dfannius) 56 | Dariusz Orzechowski (dorzechowski) 57 | David (dav1312) 58 | David Zar 59 | Daylen Yang (daylen) 60 | Deshawn Mohan-Smith (GoldenRare) 61 | Dieter Dobbelaere (ddobbelaere) 62 | DiscanX 63 | Dominik Schlösser (domschl) 64 | double-beep 65 | Douglas Matos Gomes (dsmsgms) 66 | Dubslow 67 | Eduardo Cáceres (eduherminio) 68 | Eelco de Groot (KingDefender) 69 | Elvin Liu (solarlight2) 70 | erbsenzaehler 71 | Ernesto Gatti 72 | Fabian Beuke (madnight) 73 | Fanael Linithien (Fanael) 74 | fanon 75 | Fauzi Akram Dabat (FauziAkram) 76 | Felix Wittmann 77 | gamander 78 | Gary Heckman (gheckman) 79 | George Sobala (gsobala) 80 | gguliash 81 | Giacomo Lorenzetti (G-Lorenz) 82 | Gian-Carlo Pascutto (gcp) 83 | Goh CJ (cj5716) 84 | Gontran Lemaire (gonlem) 85 | Goodkov Vasiliy Aleksandrovich (goodkov) 86 | Gregor Cramer 87 | GuardianRM 88 | Guy Vreuls (gvreuls) 89 | Günther Demetz (pb00067, pb00068) 90 | Henri Wiechers 91 | Hiraoka Takuya (HiraokaTakuya) 92 | homoSapiensSapiens 93 | Hongzhi Cheng 94 | Ivan Ivec (IIvec) 95 | Jacques B. (Timshel) 96 | Jake Senne (w1wwwwww) 97 | Jan Ondruš (hxim) 98 | Jared Kish (Kurtbusch, kurt22i) 99 | Jarrod Torriero (DU-jdto) 100 | Jean-Francois Romang (jromang) 101 | Jean Gauthier (OuaisBla) 102 | Jekaa 103 | Jerry Donald Watson (jerrydonaldwatson) 104 | jjoshua2 105 | Jonathan Buladas Dumale (SFisGOD) 106 | Jonathan Calovski (Mysseno) 107 | Jonathan McDermid (jonathanmcdermid) 108 | Joost VandeVondele (vondele) 109 | Joseph Ellis (jhellis3) 110 | Joseph R. Prostko 111 | Jörg Oster (joergoster) 112 | Julian Willemer (NightlyKing) 113 | jundery 114 | Justin Blanchard (UncombedCoconut) 115 | Kelly Wilson 116 | Ken Takusagawa 117 | Kian E (KJE-98) 118 | kinderchocolate 119 | Kiran Panditrao (Krgp) 120 | Kojirion 121 | Krystian Kuzniarek (kuzkry) 122 | Leonardo Ljubičić (ICCF World Champion) 123 | Leonid Pechenik (lp--) 124 | Liam Keegan (lkeegan) 125 | Linmiao Xu (linrock) 126 | Linus Arver (listx) 127 | loco-loco 128 | Lub van den Berg (ElbertoOne) 129 | Luca Brivio (lucabrivio) 130 | Lucas Braesch (lucasart) 131 | Lyudmil Antonov (lantonov) 132 | Maciej Żenczykowski (zenczykowski) 133 | Malcolm Campbell (xoto10) 134 | Mark Tenzer (31m059) 135 | marotear 136 | Matt Ginsberg (mattginsberg) 137 | Matthew Lai (matthewlai) 138 | Matthew Sullivan (Matt14916) 139 | Max A. (Disservin) 140 | Maxim Masiutin (maximmasiutin) 141 | Maxim Molchanov (Maxim) 142 | Michael An (man) 143 | Michael Byrne (MichaelB7) 144 | Michael Chaly (Vizvezdenec) 145 | Michael Stembera (mstembera) 146 | Michael Whiteley (protonspring) 147 | Michel Van den Bergh (vdbergh) 148 | Miguel Lahoz (miguel-l) 149 | Mikael Bäckman (mbootsector) 150 | Mike Babigian (Farseer) 151 | Mira 152 | Miroslav Fontán (Hexik) 153 | Moez Jellouli (MJZ1977) 154 | Mohammed Li (tthsqe12) 155 | Muzhen J (XInTheDark) 156 | Nathan Rugg (nmrugg) 157 | Nguyen Pham (nguyenpham) 158 | Nicklas Persson (NicklasPersson) 159 | Nick Pelling (nickpelling) 160 | Niklas Fiekas (niklasf) 161 | Nikolay Kostov (NikolayIT) 162 | Norman Schmidt (FireFather) 163 | notruck 164 | Ofek Shochat (OfekShochat, ghostway) 165 | Ondrej Mosnáček (WOnder93) 166 | Ondřej Mišina (AndrovT) 167 | Oskar Werkelin Ahlin 168 | Pablo Vazquez 169 | Panthee 170 | Pascal Romaret 171 | Pasquale Pigazzini (ppigazzini) 172 | Patrick Jansen (mibere) 173 | Peter Schneider (pschneider1968) 174 | Peter Zsifkovits (CoffeeOne) 175 | PikaCat 176 | Praveen Kumar Tummala (praveentml) 177 | Prokop Randáček (ProkopRandacek) 178 | Rahul Dsilva (silversolver1) 179 | Ralph Stößer (Ralph Stoesser) 180 | Raminder Singh 181 | renouve 182 | Reuven Peleg (R-Peleg) 183 | Richard Lloyd (Richard-Lloyd) 184 | rn5f107s2 185 | Rodrigo Exterckötter Tjäder 186 | Rodrigo Roim (roim) 187 | Ronald de Man (syzygy1, syzygy) 188 | Ron Britvich (Britvich) 189 | rqs 190 | Rui Coelho (ruicoelhopedro) 191 | Ryan Schmitt 192 | Ryan Takker 193 | Sami Kiminki (skiminki) 194 | Sebastian Buchwald (UniQP) 195 | Sergei Antonov (saproj) 196 | Sergei Ivanov (svivanov72) 197 | Sergio Vieri (sergiovieri) 198 | sf-x 199 | Shahin M. Shahin (peregrine) 200 | Shane Booth (shane31) 201 | Shawn Varghese (xXH4CKST3RXx) 202 | Siad Daboul (Topologist) 203 | Stefan Geschwentner (locutus2) 204 | Stefano Cardanobile (Stefano80) 205 | Stefano Di Martino (StefanoD) 206 | Steinar Gunderson (sesse) 207 | Stéphane Nicolet (snicolet) 208 | Syine Mineta (MinetaS) 209 | Thanar2 210 | thaspel 211 | theo77186 212 | Tomasz Sobczyk (Sopel97) 213 | Tom Truscott 214 | Tom Vijlbrief (tomtor) 215 | Torsten Franz (torfranz, tfranzer) 216 | Torsten Hellwig (Torom) 217 | Tracey Emery (basepr1me) 218 | tttak 219 | Unai Corzo (unaiic) 220 | Uri Blass (uriblass) 221 | Vince Negri (cuddlestmonkey) 222 | Viren 223 | windfishballad 224 | xefoci7612 225 | zz4032 226 | 227 | # Additionally, we acknowledge the authors and maintainers of fishtest, 228 | # an amazing and essential framework for Stockfish development! 229 | # 230 | # https://github.com/glinscott/fishtest/blob/master/AUTHORS 231 | -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- 1 | # This CITATION.cff file was generated with cffinit. 2 | # Visit https://bit.ly/cffinit to generate yours today! 3 | 4 | cff-version: 1.2.0 5 | title: Stockfish 6 | message: >- 7 | Please cite this software using the metadata from this 8 | file. 9 | type: software 10 | authors: 11 | - name: The Stockfish developers (see AUTHORS file) 12 | repository-code: 'https://github.com/official-stockfish/Stockfish' 13 | url: 'https://stockfishchess.org/' 14 | repository-artifact: 'https://stockfishchess.org/download/' 15 | abstract: Stockfish is a free and strong UCI chess engine. 16 | keywords: 17 | - chess 18 | - artificial intelligence (AI) 19 | - tree search 20 | - alpha-beta search 21 | - neural networks (NN) 22 | - efficiently updatable neural networks (NNUE) 23 | license: GPL-3.0 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |