chess-oxide 0.3.2

A chess engine library written in Rust, with a GUI bin to play against it.
Documentation
# Chess Oxide

A chess engine written in Rust.

## Features

- **Move Generation**: Efficient move generation for all pieces using a mailbox system.
- **Position Representation**: Uses a 64-square array for position representation.
- **Board Representation**: Data and functions required to run a chess game.
- **Zobrist Hashing**: Implements Zobrist hashing for fast position comparison.
- **Perft Testing**: Performance testing for move generation.
- **Error Handling**: Error handling for user facing functions.
- **GUI Integration**: Basic GUI for visualizing the board and moves using Slint.
- **FEN/PGN Implementations**: Implementation of FEN and PGN standards for import/export of board states.
- **Engine**: Implemented using a negamax algorithm implementing alpha/beta pruning.
- **Transposition Table**: Implementation of a Transposition Table to use with engine.
- **Engine Debug Feature**: Enabling 'debug_engine_logging' feature gives detailed breakdown of the nodes searched in engine.
- **Logging**: Library uses 'log' crate and frontends use 'env_logger'.

## Installation

To build and run the project, ensure you have Rust installed. Clone the repository and run:

```sh
cargo build [--bin] [--release]
```

## Usage

To run the chess engine with the GUI:

```sh
cargo run --bin chess-gui [--release]
```

To run the basic performance test:
```sh
cargo run --bin chess-perft [--release]
```

Example using environment variable RUST_LOG for env_logger configuration:
```sh
RUST_LOG=debug cargo run --bin chess-gui --release
```

## License
This project is licensed under the MPL-2.0 License.