À propos du projet

Ce dépôt est une bibliothèque d'échecs en Go (Golang) proposant des utilitaires d'échecs courants sous forme d'un ensemble de packages. Il s'agit d'un fork de notnil/chess, maintenu sous l'espace de noms /v2, avec un accent sur la réduction des allocations, l'amélioration des performances et l'élargissement de la couverture de tests. Les capacités principales incluent la génération de coups à l'aide de bitboards, la gestion du tour, la détection d'échec et mat et de partie nulle, ainsi que la sérialisation/désérialisation. Les formats pris en charge incluent PGN (avec paires de balises, commentaires, annotations de commandes, et un Scanner en flux pour les grandes bases de données, avec expansion optionnelle des variantes) et FEN. Plusieurs notations sont prises en charge : algébrique, algébrique longue et UCI. La gestion du résultat de la partie couvre l'échec et mat, le pat, l'abandon, les propositions de nulle, la triple et la quintuple répétition, les règles des cinquante et soixante-quinze coups, et le matériel insuffisant. Les API de coups existent en variantes validées et non sécurisées hautes performances (UnsafeMove, UnsafePushNotationMove), le README indiquant des accélérations d'environ 1,5x et 1,1x respectivement lorsque la validation est ignorée. Des packages supplémentaires incluent un générateur d'images d'échiquier SVG, un explorateur de livres d'ouvertures, et un client Universal Chess Interface (UCI) capable de piloter des moteurs externes tels que Stockfish, comme le montre un exemple d'auto-jeu. Une méthode Draw() affiche les positions avec des symboles d'échecs Unicode. L'installation se fait via go get github.com/corentings/chess/v2. Le README documente des benchmarks et indique que la bibliothèque est optimisée pour la performance en vue d'une utilisation potentielle par des bots d'échecs. Elle est principalement maintenue pour les projets personnels de l'auteur et partagée avec la communauté ; les contributions, signalements et pull requests sont les bienvenus.