ANN: PortableGameNotation.jl

PortableGameNotation.jl contains Julia language tools for processing portable game notation (PGN) files.

I’m a chess nut, and I wanted a pure Julia way to process chess games files in PGN format, so I wrote some basic tools. It is still very rough, but at this point you can quickly import the games from a PGN file and get a list of the games as structs. This allows some simple queries that can be used to build fancier applications.

My end game is to have a Julia equivalent of python-chess, but that will require implementation of a board model, game rules, UCI communication, etc. These can be implemented separately and then combined into something like a Chess.jl package. The reason I don’t just use PyCall + python-chess is that the Python package is very slow at complicated operations on large numbers of games. I believe that JIT-ing the board methods in particular will make a Julia implementation much faster.

2 Likes

Now we just need a BWAPI wrapper to start winning a bunch of AI competitions using Julia-based tools.

3 Likes

Might be good to mention somewhere in the readme or package description that PGN is a chess game format, to save anyone who sees the package and is curious about what it does a trip to google.

2 Likes

There was a Julia chess engine mentioned here

but the linked github repo seems to have disappeared. Maybe still worth contacting the author?

Alan made the package private, but I think he would be glad to share it with interested parties if you ask.