Sobre el proyecto

Este repositorio es una biblioteca de ajedrez en Go (Golang) que ofrece utilidades comunes de ajedrez como un conjunto de paquetes. Es un fork de notnil/chess, mantenido bajo el espacio de nombres /v2, con un enfoque en reducir asignaciones, mejorar el rendimiento y ampliar la cobertura de pruebas. Las capacidades principales incluyen la generación de movimientos mediante bitboards, la gestión de turnos, la detección de jaque mate y tablas, y la serialización/deserialización. Los formatos compatibles incluyen PGN (con pares de etiquetas, comentarios, anotaciones de comandos y un Scanner en streaming para bases de datos grandes, con expansión opcional de variantes) y FEN. Se admiten múltiples notaciones: algebraica, algebraica larga y UCI. El manejo del resultado de la partida abarca jaque mate, ahogado, rendición, ofertas de tablas, triple y quíntuple repetición, las reglas de cincuenta movimientos y setenta y cinco movimientos, y material insuficiente. Las API de movimientos vienen en variantes validadas y de alto rendimiento no seguras (UnsafeMove, UnsafePushNotationMove), y el README señala mejoras de velocidad de aproximadamente 1,5x y 1,1x respectivamente cuando se omite la validación. Los paquetes adicionales incluyen un generador de imágenes de tableros de ajedrez en SVG, un explorador de libros de aperturas y un cliente de Universal Chess Interface (UCI) que puede controlar motores externos como Stockfish, como se muestra en un ejemplo de auto-partida. Un método Draw() renderiza posiciones con símbolos de ajedrez Unicode. La instalación se realiza mediante go get github.com/corentings/chess/v2. El README documenta benchmarks y afirma que la biblioteca está optimizada para el rendimiento y su posible uso por bots de ajedrez. Se mantiene principalmente para los proyectos del propio autor y se comparte con la comunidad; se agradecen las contribuciones, los informes de problemas y las solicitudes de extracción.