Modules
Echecs is a pure Elixir chess library for move generation, validation, and game state management.
Legacy struct-based bitboard container, superseded by the Echecs.Board
tuple representation used throughout the engine.
Constants for Bitboard operations
Low-level bit manipulation helpers for bitboards.
Magic-bitboard attack lookups for sliding pieces (rooks, bishops).
Finds magic numbers and attack tables for sliding pieces (rooks, bishops).
Compile-time attack and geometry tables for non-sliding queries.
Chess board as a 15-element tuple of 64-bit integer bitboards.
Parsing and generation of Forsyth-Edwards Notation (FEN) strings.
Complete state of a chess game: board tuple, side to move, castling rights
(bit flags wk = 1, wq = 2, bk = 4, bq = 8), en-passant square,
half/fullmove clocks, position history, Zobrist hash and cached king squares.
Chess moves as structs and as packed integers.
Legal-only move generation using the check-mask + pin-mask technique.
Minimal PGN move-text parser and replayer.
Performance-test (perft) helpers for validating move generation.
Piece colors (:white, :black) and types (:pawn, :knight, :bishop,
:rook, :queen, :king).
Zobrist hashing for fast position identity and repetition detection.
Mix Tasks
Runs deterministic benchmarks for move generation, perft, PGN replay, and hashing.