From 83211672dab1e3030719be048d3faa2cc9578920 Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Fri, 15 Aug 2025 19:44:58 +0200 Subject: [PATCH] More concise and relevant copilot instructions --- .github/copilot-instructions.md | 100 ++++++++++++--------------------------- 1 files changed, 30 insertions(+), 70 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 6290266..1ac766b 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -31,25 +31,10 @@ make -j2 ARCH=x86-64 build # Debug build (for development) make -j2 ARCH=x86-64 debug=yes build -# Large board variants (supports boards up to 12x10) -make -j2 ARCH=x86-64 largeboards=yes build - -# All variants including ones with large branching factor +# All variants including ones with large boards (up to 12x10) and large branching factor (all) make -j2 ARCH=x86-64 largeboards=yes all=yes build ``` -#### Architecture Options -Common architectures (use `make help` for full list): -- `x86-64-modern`: Modern 64-bit CPUs (recommended) -- `x86-64-avx2`: CPUs with AVX2 support -- `x86-64`: Generic 64-bit (portable but slower) -- `armv8`: ARM64 CPUs -- `apple-silicon`: Apple M1/M2 processors - -#### Build Troubleshooting -- **Compilation errors:** Ensure C++17 compiler (GCC 7+, Clang 5+) -- **Linking errors on Linux:** Install `g++-multilib` for 32-bit builds - ### Python Bindings (pyffish) ```bash # Build Python bindings (from repository root) @@ -114,31 +99,9 @@ All test commands below assume the current directory is `src/`. ### Directory Structure ``` -├── src/ # Core C++ engine source -│ ├── Makefile # Primary build configuration -│ ├── main.cpp # Engine entry point -│ ├── uci.cpp # UCI protocol implementation -│ ├── xboard.cpp # XBoard protocol implementation -│ ├── position.h # Position representation -│ ├── position.cpp # Board logic -│ ├── movegen.cpp # Move generation -│ ├── search.cpp # Search algorithm -│ ├── evaluate.cpp # Position evaluation -│ ├── variant.h # Variant properties -│ ├── variant.cpp # Variant definitions (built-in variants) -│ ├── variants.ini # Variant definitions (runtime configurable variants) -│ ├── nnue/ # Neural network evaluation -│ ├── syzygy/ # Endgame tablebase support -│ ├── pyffish.cpp # Python bindings -│ └── ffishjs.cpp # JavaScript bindings -├── tests/ # Test scripts and data -│ ├── perft.sh # Move generation tests -│ ├── protocol.sh # Protocol compliance tests -│ ├── js/ # JavaScript binding tests -│ └── pgn/ # Test game files -├── .github/workflows/ # CI/CD configurations -├── setup.py # Python package configuration -└── README.md # Comprehensive documentation +src/ # Core C++ engine source +tests/ # Test scripts and data +.github/workflows/ # CI/CD configurations ``` ### Configuration Files @@ -146,15 +109,17 @@ All test commands below assume the current directory is `src/`. - **`setup.py`**: Python package build configuration - **`tests/js/package.json`**: JavaScript bindings configuration -### Key Source Files -- **`src/variant.h`**: Variant rule properties -- **`src/variant.cpp`**: Variant-specific game rules -- **`src/variant.ini`**: Variant rule configuration examples and documentation of variant properties -- **`src/position.h`**: Position representation -- **`src/position.cpp`**: Board logic -- **`src/movegen.cpp`**: Move generation logic -- **`src/parser.cpp`**: Variant rule configuration parsing -- **`src/piece.cpp`**: Piece type definitions and behavior +### Key Source Files in `src/` +- **`variant.h`**: Variant rule properties +- **`variant.cpp`**: Variant-specific game rules +- **`variant.ini`**: Variant rule configuration examples and documentation of variant properties +- **`position.h`**: Position representation +- **`position.cpp`**: Board logic +- **`movegen.cpp`**: Move generation logic +- **`parser.cpp`**: Variant rule configuration parsing +- **`piece.cpp`**: Piece type definitions and behavior +- **`pyffish.cpp`**: Python bindings +- **`ffishjs.cpp`**: JavaScript bindings ## Continuous Integration @@ -165,13 +130,6 @@ All test commands below assume the current directory is `src/`. - **`wheels.yml`**: Python package builds - **`ffishjs.yml`**: JavaScript binding builds -### Validation Pipeline -1. **Code Standards:** C++17 compliance, `-Werror` warnings -2. **Protocol Tests:** UCI, UCCI, USI, XBoard compatibility -3. **Variant Tests:** Move generation verification for all variants -4. **Performance Tests:** Benchmark consistency across builds -5. **Multi-platform:** Linux, Windows, macOS builds - ## Common Development Patterns ### Making Engine Changes @@ -183,16 +141,18 @@ All test commands below assume the current directory is `src/`. 1. **Edit `src/variants.ini`**: Add variant configuration 2. **Test parsing:** `./stockfish check variants.ini` -## Troubleshooting Guide - -### Build Failures -- **C++ version:** Requires C++17-compatible compiler -- **32-bit builds:** May need `g++-multilib` package -- **Linking errors:** Ensure pthread library availability - -### Test Failures -- **Perft mismatches:** Usually indicates move generation bugs -- **Benchmark variations:** Expected 1-5% variance across builds -- **Missing expect:** Install expect utility for test scripts - -This documentation covers the essential information needed for effective development in Fairy-Stockfish. +### Relevant websites for researching chess variant rules +- [Chess Variants on Wikipedia](https://en.wikipedia.org/wiki/List_of_chess_variants) +- [Chess Variants Wiki](https://www.chessvariants.com/) +- [Variant Chess on BoardGameGeek](https://boardgamegeek.com/boardgamefamily/4024/traditional-games-chess) +- [PyChess Variants](https://www.pychess.org/variants) +- [Ludii](https://ludii.games/library.php) +- [Lichess.org Variants](https://lichess.org/variant) +- [Greenchess](https://greenchess.net/variants.php) +- [Chess Variants on Chess.com](https://www.chess.com/variants) + +### Development Best Practices +* Make sure to only stage and commit changes that are intended to be part of the task. +* Keep changes minimal and focused on the task at hand. +* After applying changes make sure that all places related to the task have been identified. +* Stay consistent with the existing code style and conventions. -- 1.7.0.4