Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
155 commits
Select commit Hold shift + click to select a range
69ca0e5
wip
Disservin Feb 7, 2026
e297da4
remove
Disservin Feb 7, 2026
c782015
tb
Disservin Feb 7, 2026
cd499b3
update
Disservin Feb 8, 2026
653be72
cleanup
Disservin Feb 8, 2026
2192c80
update
Disservin Feb 8, 2026
170eec5
clippy
Disservin Feb 8, 2026
2752e15
clippy
Disservin Feb 8, 2026
98149ee
clippy
Disservin Feb 8, 2026
dc1458f
remove unnecessary thing
Disservin Feb 8, 2026
9580960
update loop
Disservin Feb 8, 2026
3cf37a3
update ref
Disservin Feb 8, 2026
172f3a5
update
Disservin Feb 8, 2026
6c398e0
add engine info
Disservin Feb 8, 2026
bcf47c0
add variant
Disservin Feb 8, 2026
04e8142
gzip
Disservin Feb 8, 2026
28d7ac0
allow negative concurrency
Disservin Feb 8, 2026
ea34262
add exe path for windows
Disservin Feb 8, 2026
6b5b5e8
windows
Disservin Feb 8, 2026
f1ee147
update logging
Disservin Feb 8, 2026
5ae09c9
clippy
Disservin Feb 8, 2026
0ee2b57
fix tracker enable
Disservin Feb 8, 2026
92deca0
move logic into game mod
Disservin Feb 9, 2026
4697626
shogi
Disservin Feb 9, 2026
582fc86
cleanup
Disservin Feb 9, 2026
f9f27d3
skip isready
Disservin Feb 9, 2026
55aca01
refactor into protocl and use isready instead of ucinewgame
Disservin Feb 9, 2026
93432de
update artifacts
Disservin Feb 10, 2026
cf894d5
move files
Disservin Feb 10, 2026
510c222
abstract isready
Disservin Feb 10, 2026
f75cff4
move into variants
Disservin Feb 10, 2026
d796f83
remove drop
Disservin Feb 10, 2026
d2bec3a
update ci
Disservin Feb 14, 2026
2e13425
add tests
Disservin Feb 14, 2026
271876b
fix ci
Disservin Feb 14, 2026
fafa30b
fix ci
Disservin Feb 14, 2026
83dcf7c
copy tests dir
Disservin Feb 14, 2026
09223bd
update tests
Disservin Feb 14, 2026
1517824
update tests
Disservin Feb 14, 2026
d3d8f0c
update process impl
Disservin Feb 14, 2026
5289944
update time parsing and random mover
Disservin Feb 14, 2026
29b3b82
fix?
Disservin Feb 14, 2026
0df25d1
fix syzygy
Disservin Feb 14, 2026
18ef4c2
fix ci
Disservin Feb 14, 2026
be860c2
disable threadpool
Disservin Feb 14, 2026
2dc5a03
fix test
Disservin Feb 14, 2026
4030ae9
inherit?
Disservin Feb 14, 2026
142721e
fix side?
Disservin Feb 14, 2026
6e24999
adjudication fixes
Disservin Feb 14, 2026
2575bdc
fix windows drop
Disservin Feb 14, 2026
de028ad
fix windows process
Disservin Feb 14, 2026
b81caeb
fix name
Disservin Feb 14, 2026
a7d6587
fix side
Disservin Feb 14, 2026
0074ba3
simplify ci
Disservin Feb 14, 2026
fbbd037
simplify ci
Disservin Feb 14, 2026
271d5ed
test time
Disservin Feb 14, 2026
2a8e590
add test for dirs
Disservin Feb 14, 2026
8960bfa
add test
Disservin Feb 14, 2026
7887659
add tests
Disservin Feb 14, 2026
e993c74
delete
Disservin Feb 14, 2026
ba1ef67
add tests
Disservin Feb 14, 2026
1bf61d9
update cli
Disservin Feb 14, 2026
2618d69
update unix impl
Disservin Feb 14, 2026
b640b40
remove option from interrupt
Disservin Feb 14, 2026
537d7aa
fix error
Disservin Feb 14, 2026
9aabb5a
remove default
Disservin Feb 14, 2026
da2d0ce
cleanup windows rs
Disservin Feb 15, 2026
710a5ea
mod error
Disservin Feb 15, 2026
88d92e8
update common
Disservin Feb 15, 2026
62c1d78
add from trait
Disservin Feb 15, 2026
b0efe24
from string
Disservin Feb 15, 2026
005f9cc
windows affinity?
Disservin Feb 15, 2026
15d8cfe
update moves notation things
Disservin Feb 15, 2026
a1c9ab6
store gamemove
Disservin Feb 15, 2026
ba784b7
remove Variant
Disservin Feb 15, 2026
6920110
idiomatic rust for processresult
Disservin Feb 15, 2026
cfb8139
no expect
Disservin Feb 15, 2026
734bb33
cargo clippy things
Disservin Feb 15, 2026
77d0f05
dont call unwrap
Disservin Feb 15, 2026
81e23b9
dont call unwrap for pgn
Disservin Feb 15, 2026
0e76217
fix pgn write
Disservin Feb 15, 2026
475a494
error handling engine restart
Disservin Feb 15, 2026
bb4ecfa
small refactors
Disservin Feb 16, 2026
f58fc73
remove threadpool implementation
Disservin Feb 16, 2026
32d2184
idiomatic code
Disservin Feb 16, 2026
00cf31e
improve cache
Disservin Feb 17, 2026
3fb35f7
use engine info display
Disservin Feb 17, 2026
6b9fbd7
update engine cache usage
Disservin Feb 17, 2026
d85ba46
abstract in helper function
Disservin Feb 17, 2026
eb33a23
Revert "update engine cache usage"
Disservin Feb 17, 2026
6aaef82
refactor engine restart
Disservin Feb 18, 2026
65bc223
update engine usage time
Disservin Feb 18, 2026
87585ef
cleanup run_game function
Disservin Feb 18, 2026
21e4f6b
remove drop
Disservin Feb 18, 2026
965edae
combine logic
Disservin Feb 18, 2026
12b2c6e
refactor funciton names
Disservin Feb 18, 2026
eb2ba5d
ci?
Disservin Feb 18, 2026
6d182a8
adapt white/black shenanigans
Disservin Feb 18, 2026
476a75c
refactor colors and gamepairs
Disservin Feb 19, 2026
caadb21
use our logging code
Disservin Feb 19, 2026
7ff306f
add wait for stop and bestmove
Disservin Feb 19, 2026
8d341e8
add all openings test
Disservin Feb 19, 2026
ef2efc4
count number of rating reports
Disservin Feb 19, 2026
2342901
plies option test
Disservin Feb 19, 2026
c00d70b
add seed for shuffle
Disservin Feb 19, 2026
a148231
use mt64
Disservin Feb 19, 2026
acb7bbe
random run tests
Disservin Feb 19, 2026
bd03f2d
update test
Disservin Feb 19, 2026
b747226
port https://github.com/Disservin/fastchess/commit/a0863d6bceb4c56888…
Disservin Feb 22, 2026
92dc819
wip verify pv lines
Disservin Feb 22, 2026
ebed8f6
add check-mate-pvs
Disservin Feb 22, 2026
0e00068
remove output
Disservin Feb 22, 2026
ca9aff4
fix is uci move
Disservin Feb 22, 2026
05980e7
lower concurrency
Disservin Feb 22, 2026
4677e56
adapt test
Disservin Feb 22, 2026
17e7f78
add chess
Disservin Feb 28, 2026
611d4dd
update book/pgn
Disservin Feb 28, 2026
1b6d765
update chess usage
Disservin Feb 28, 2026
86bd57d
add pgn for test
Disservin Feb 28, 2026
c31d45c
runner simple gameover check fix
Disservin Feb 28, 2026
7967bda
print timeouts
Disservin Feb 28, 2026
344bd85
logger improvements perf
Disservin Feb 28, 2026
019cfd8
cache thread id
Disservin Mar 1, 2026
1a8cca4
update log writer
Disservin Mar 1, 2026
2d0b4c4
add faster date time func
Disservin Mar 1, 2026
2fe844e
use logger thread
Disservin Mar 1, 2026
11777ed
remove dependencies
Disservin Mar 1, 2026
3ba8e41
allow dead code
Disservin Mar 1, 2026
da85f69
update engine disconnects warnings and abnormal termination
Disservin Mar 1, 2026
1ba168c
remove testing scripts
Disservin Mar 1, 2026
1e9dd97
cleanup
Disservin Mar 1, 2026
cb5ce98
add pv check tests
Disservin Mar 1, 2026
5609b5a
use slices
Disservin Mar 1, 2026
59b25e1
remove unused code
Disservin Mar 1, 2026
b2d3541
remove old dir
Disservin Mar 1, 2026
c9a6633
add random_mover
Disservin Mar 1, 2026
2172d21
reparse opening fen
Disservin Mar 1, 2026
83adb9a
add back help text from man.md
Disservin Mar 3, 2026
fb8f48a
Add Compliance Test back
Disservin Mar 3, 2026
799b41f
Improve Engine Shutdown Time
Disservin Mar 3, 2026
33f547a
immediate flush log file
Disservin Mar 3, 2026
1058fb1
fix shogi
Disservin Mar 4, 2026
e9bac0d
add stoat shogi check
Disservin Mar 4, 2026
c605b2b
same nodes
Disservin Mar 4, 2026
891d92a
rust artifacts in ci
Disservin Mar 4, 2026
3c18f31
drop assert in shogi new game
Disservin Mar 5, 2026
31502b2
use library
Disservin Mar 5, 2026
c08222d
remove old test files
Disservin Mar 5, 2026
3d1c966
Update README
Disservin Mar 5, 2026
fdd8642
drop comments
Disservin Mar 8, 2026
422449c
add eco back
Disservin Mar 8, 2026
23ca86c
Update Chess Library
Disservin Mar 8, 2026
666293e
remove usi_string
Disservin Mar 8, 2026
76d1aca
backport fix, #999
Disservin Apr 21, 2026
2de63ca
backport fix #1000
Disservin Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
189 changes: 61 additions & 128 deletions .github/workflows/artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,103 +8,70 @@ jobs:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
env:
COMPILER: ${{ matrix.config.compiler }}
EXT: ${{ matrix.config.ext }}
OS: ${{ matrix.config.os }}
NATIVE: ${{ matrix.config.native }}
PLATFORM: ${{ matrix.config.platform }}
strategy:
matrix:
config:
# Linux
- {
name: "Ubuntu 22.04 GCC x86-64",
name: "Ubuntu 22.04 x86-64",
os: ubuntu-22.04,
compiler: g++,
shell: "bash {0}",
native: "-march=x86-64",
arch: "x86-64",
extra_ldflags: "",
platform: "linux",
docker: true,
docker_platform: "linux/amd64",
image: "alpine:3.22",
target: "x86_64-unknown-linux-musl",
}
- {
name: "Ubuntu 22.04 GCC ARM64",
name: "Ubuntu 22.04 ARM64",
os: ubuntu-22.04-arm,
compiler: g++,
shell: "bash {0}",
native: "",
arch: "arm64",
extra_ldflags: "",
platform: "linux",
docker: true,
docker_platform: "linux/arm64",
image: "alpine:3.22",
target: "aarch64-unknown-linux-musl",
}
- {
name: "Ubuntu 22.04 GCC RISC-V",
name: "Ubuntu 22.04 RISC-V",
os: ubuntu-22.04,
compiler: g++,
shell: "bash {0}",
native: "",
extra_ldflags: "-latomic",
docker: true,
docker_platform: "linux/riscv64",
image: "riscv64/alpine:3.22",
arch: "risc-v",
platform: "linux",
target: "riscv64gc-unknown-linux-gnu",
cross: true,
}

# macOS
- {
name: "MacOS Apple Clang x86-64",
name: "MacOS x86-64",
os: macos-15-intel,
compiler: clang++,
shell: "bash {0}",
native: "",
extra_ldflags: "",
arch: "x86-64",
platform: "mac",
target: "x86_64-apple-darwin",
}
- {
name: "MacOS Apple Clang ARM64",
name: "MacOS ARM64",
os: macos-latest,
compiler: clang++,
shell: "bash {0}",
native: "",
extra_ldflags: "",
arch: "arm64",
platform: "mac",
target: "aarch64-apple-darwin",
}

# Windows (MSYS2 / MinGW)
- {
name: "Windows GCC x86-64",
name: "Windows x86-64",
os: windows-latest,
compiler: g++,
msys_sys: "mingw64",
msys_env: "x86_64-gcc",
shell: "msys2 {0}",
ext: .exe,
native: "-march=x86-64",
extra_ldflags: "",
shell: "bash {0}",
arch: "x86-64",
platform: "windows",
target: "x86_64-pc-windows-msvc",
ext: .exe,
rustflags: "-C target-feature=+crt-static",
}
- {
name: "Windows GCC ARM64",
name: "Windows ARM64",
os: windows-11-arm,
compiler: g++,
msys_sys: "mingw64",
msys_env: "x86_64-gcc",
shell: "msys2 {0}",
ext: .exe,
native: "",
extra_ldflags: "",
shell: "bash {0}",
arch: "arm64",
platform: "windows",
target: "aarch64-pc-windows-msvc",
ext: .exe,
rustflags: "-C target-feature=+crt-static",
}

defaults:
Expand All @@ -116,93 +83,59 @@ jobs:
with:
fetch-depth: 0

- name: Installing required packages
if: runner.os == 'Linux' && matrix.config.docker != true
run: |
sudo apt-get update
sudo apt-get install g++-multilib
$COMPILER --version

- name: Install windows make
if: runner.os == 'Windows'
uses: msys2/setup-msys2@v2
- name: Install Rust
if: runner.os != 'Windows'
uses: dtolnay/rust-toolchain@stable
with:
msystem: ${{matrix.config.msys_sys}}
install: mingw-w64-${{matrix.config.msys_env}} make git expect
targets: ${{ matrix.config.target }}

- name: Extract the commit sha
- name: Install musl-tools (Linux)
if: runner.os == 'Linux' && matrix.config.cross != true
run: |
git rev-parse --short "$GITHUB_SHA" > sha
echo "COMMIT_SHA=$(cat sha)" >> $GITHUB_ENV
echo "Git sha:" $(cat sha)
sudo apt-get update
sudo apt-get install -y musl-tools

- name: Get commit date
id: commit_date
run: echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV
- name: Install cross (RISC-V)
if: matrix.config.cross == true
run: cargo install cross --git https://github.com/cross-rs/cross

- name: Set up QEMU
if: matrix.config.base_image
uses: docker/setup-qemu-action@v3
- name: Extract commit info
run: |
echo "COMMIT_SHA=$(git rev-parse --short "$GITHUB_SHA")" >> $GITHUB_ENV
echo "COMMIT_DATE=$(git show -s --date=format:'%Y%m%d' --format=%cd HEAD)" >> $GITHUB_ENV

# replace version string if this is a tagged build
- name: Version replace
run: |
if [ -n "$GITHUB_REF" ] && [[ "$GITHUB_REF" == refs/tags/* ]]; then
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
TAG="${GITHUB_REF#refs/tags/}"
echo "Current tag found: $TAG"
else
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -n "$TAG" ]; then
echo "Last tag found: $TAG"
else
echo "No tags found, using default version string."
cat app/src/main.cpp
exit 0
fi
[ -z "$TAG" ] && exit 0
fi
VERSION=$(echo "$TAG" | sed 's/^v//' | sed 's/-alpha$//')
sed -i "s/const char\* version = \"[^\"]*\"/const char* version = \"alpha $VERSION \"/" app/src/main.cpp
cat app/src/main.cpp
perl -i -pe "s/^version = \"[^\"]*\"/version = \"$VERSION\"/" app/Cargo.toml

# Build RISC-V in Docker
- name: Build in Docker
if: matrix.config.docker == true
- name: Build
run: |
sudo apt-get update
sudo apt-get install qemu-user-static
docker run --rm --platform ${{ matrix.config.docker_platform }} \
-v ${{ github.workspace }}:/workspace \
-w /workspace \
${{ matrix.config.image }} \
sh -c "
apk add --no-cache build-base g++ make &&
make -j2 build=release EXTRA_LDFLAGS='${{ matrix.config.extra_ldflags }}' NATIVE='${{ matrix.config.native }}' COMPILER='${{ matrix.config.compiler }}' COMPILE_MSG='compiled for ${{ matrix.config.os }} ${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }} (CI)' &&
strip ./fastchess${{ matrix.config.ext }} || true &&
find . -type f \( -name "*.o" -o -name "*.d" \) -delete &&
find . -type d -name "sha" -exec rm -rf {} + &&
./fastchess* -version
"

# Build (non-Docker)
- name: Building fastchess
if: matrix.config.docker != true
run: |
make -j2 build=release EXTRA_LDFLAGS='${{ matrix.config.extra_ldflags }}' NATIVE="$NATIVE" COMPILER="$COMPILER" COMPILE_MSG="compiled for ${{ matrix.config.os }} ${{ env.COMMIT_DATE }}-${{ env.COMMIT_SHA }} (CI)"
strip ./fastchess$EXT || true
find . -type f \( -name "*.o" -o -name "*.d" \) -delete
find . -type d -name "sha" -exec rm -rf {} +
./fastchess* -version
cd app
if [ "${{ matrix.config.cross }}" = "true" ]; then
cross build --release --target ${{ matrix.config.target }}
else
cargo build --release --target ${{ matrix.config.target }}
fi
cp target/${{ matrix.config.target }}/release/fastchess${{ matrix.config.ext }} ../fastchess${{ matrix.config.ext }}
strip ../fastchess${{ matrix.config.ext }} || true

- name: Archive binaries
uses: actions/upload-artifact@v4
with:
name: fastchess-${{ matrix.config.platform }}-${{ matrix.config.arch }}
path: |
app
.clang-format
config.json
Makefile
man
README.md
LICENSE
fastchess${{ matrix.config.ext }}
# - name: Archive binaries
# uses: actions/upload-artifact@v4
# with:
# name: fastchess-${{ matrix.config.platform }}-${{ matrix.config.arch }}
# path: |
# app
# .clang-format
# config.json
# Makefile
# man
# README.md
# LICENSE
# fastchess${{ matrix.config.ext }}
13 changes: 7 additions & 6 deletions .github/workflows/cutechess_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,13 @@ jobs:
with:
fetch-depth: 0

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Installing required packages
if: runner.os == 'Linux'
run: |
sudo apt-get update
clang++ --version
g++ --version

- name: Create cutechess-testing directory
run: |
Expand All @@ -36,10 +37,10 @@ jobs:
id: cache-syzygy
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684
with:
path: |
cutechess-testing/3-4-5-wdl/
cutechess-testing/3-4-5-dtz/
key: key-syzygy
path: |
cutechess-testing/3-4-5-wdl/
cutechess-testing/3-4-5-dtz/
key: key-syzygy

# Note: unlike fastchess, cutechess requires both wdl and dtz tables for adjudication to work correctly.
- name: download syzygy 3-4-5 if needed
Expand Down
52 changes: 13 additions & 39 deletions .github/workflows/e2e_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,64 +4,38 @@ on:
workflow_call:

jobs:
Tests:
name: ${{matrix.config.name}}
runs-on: ${{matrix.config.os}}
tests:
name: ${{matrix.os}}
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
config:
- { name: "Ubuntu 22.04", os: ubuntu-22.04, shell: "bash {0}" }
- { name: "MacOS Apple Clang", os: macos-latest, shell: "bash {0}" }
- {
name: "Windows GCC",
os: windows-latest,
msys_sys: "mingw64",
msys_env: "x86_64-gcc",
shell: "msys2 {0}",
}
os: [ubuntu-22.04, macos-latest, windows-latest]

defaults:
run:
shell: ${{ matrix.config.shell }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Installing required packages
if: runner.os == 'Linux'
run: |
sudo apt-get update
clang++ --version
g++ --version
- uses: dtolnay/rust-toolchain@stable

- name: Install windows make
if: runner.os == 'Windows'
- if: runner.os == 'Windows'
uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.config.msys_sys}}
install: mingw-w64-${{matrix.config.msys_env}} make git expect
msystem: mingw64
install: mingw-w64-x86_64-gcc make git expect
path-type: inherit

- name: Macos clang version
if: runner.os == 'Macos'
run: |
clang++ --version

- name: Sanitize Thread E2E Test
if: runner.os == 'Linux'
- if: runner.os == 'Linux'
run: |
make clean
bash app/tests/e2e/e2e.sh san=thread

- name: Asan E2E
if: runner.os == 'Linux'
- if: runner.os == 'Linux'
continue-on-error: true
run: |
make clean
bash app/tests/e2e/e2e.sh san=asan

- name: Normal E2E
run: |
- run: |
make clean
bash app/tests/e2e/e2e.sh
shell: bash
7 changes: 5 additions & 2 deletions .github/workflows/fastchess.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ on:
- "v*"
branches: ["master"]
pull_request:
branches: ["master"]
branches: ["master", "port-rust"]

jobs:
Artifacts:
if: github.ref == 'refs/heads/master' || github.ref_type == 'tag'
if: github.ref == 'refs/heads/master' || github.ref_type == 'tag' || github.head_ref == 'port-rust'
uses: ./.github/workflows/artifacts.yml
Precreate-Release:
needs: [Artifacts]
Expand Down Expand Up @@ -46,3 +46,6 @@ jobs:
Cutechess-Tests:
if: github.ref_type != 'tag'
uses: ./.github/workflows/cutechess_tests.yml
Shogi-Stoat-Test:
if: github.ref_type != 'tag'
uses: ./.github/workflows/shogi_stoat_test.yml
Loading