Expand description
A blazingly fast chess library.
This package is separated into two parts. Firstly, the board representation & associated functions
(the current crate, tanton
), and secondly, the AI implementations using these chess foundations,
tanton_engine.
The general formatting and structure of the library take heavy influence from the basic building blocks of the Stockfish chess engine.
Usage
This crate is on crates.io and can be
used by adding tanton
to the dependencies in your project’s Cargo.toml
.
Platforms
tanton
is currently tested and created for use with the x86_64
instruction set in mind.
Currently, there are no guarantees of correct behavior if compiled for a different
instruction set.
Safety
While generally a safe library, tanton was built with a focus of speed in mind. Usage of methods
must be followed carefully, as there are many possible ways to panic
unexpectedly. Methods
with the ability to panic will be documented as such.
Examples
You can create a Board
with the starting position like so:
use tanton::Board;
let board = Board::start_pos();
Generating a list of moves (Contained inside a MoveList
) can be done with:
let list = board.generate_moves();
Applying and undoing moves is simple:
let mut board = Board::start_pos();
let list = board.generate_moves();
for mov in list.iter() {
board.apply_move(*mov);
println!("{}",board.get_fen());
board.undo_move();
}
Using fen strings is also supported:
let start_position = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
let board = Board::from_fen(start_position).unwrap();
Re-exports
pub use board::Board;
pub use core::bitboard::BitBoard;
pub use core::move_list::MoveList;
pub use core::move_list::ScoringMoveList;
pub use core::piece_move::BitMove;
pub use core::piece_move::ScoringMove;
pub use core::sq::SQ;
pub use core::File;
pub use core::Piece;
pub use core::PieceType;
pub use core::Player;
pub use core::Rank;
pub use helper::Helper;
Modules
Board
, the object representing the current state of a chessboard.
All modifications to the current state of the board is done through this object, as well as
gathering information about the current state of the board.SQ
, BitBoard
, Player
, Piece
, GenTypes
, Rank
, and File
.TranspositionTable
, a fast lookup table able to be accessed by
multiple threads. Other useful objects are the UciLimit
enum and Searcher
trait
for building bots.