# ANN: PortableGameNotation.jl

**URL:** <https://discourse.julialang.org/t/ann-portablegamenotation-jl/4248>\
**Category:** Community\
**Created:** [June 13, 2017, 3:47pm UTC](https://discourse.julialang.org/t/ann-portablegamenotation-jl/4248 "2017-06-13T15:47:44Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![davidssmith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidssmith/32/615_2.png) [@davidssmith](https://discourse.julialang.org/u/davidssmith)\
**Post date:** [June 13, 2017, 3:47pm UTC](https://discourse.julialang.org/t/ann-portablegamenotation-jl/4248/1 "2017-06-13T15:47:44Z")

</div>

`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.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [June 13, 2017, 4:15pm UTC](https://discourse.julialang.org/t/ann-portablegamenotation-jl/4248/2 "2017-06-13T16:15:41Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tkelman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkelman/32/692_2.png) [@tkelman](https://discourse.julialang.org/u/tkelman)\
**Post date:** [June 14, 2017, 5:13am UTC](https://discourse.julialang.org/t/ann-portablegamenotation-jl/4248/3 "2017-06-14T05:13:14Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![fabiangans](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fabiangans/32/2624_2.png) [@fabiangans](https://discourse.julialang.org/u/fabiangans)\
**Post date:** [June 14, 2017, 12:04pm UTC](https://discourse.julialang.org/t/ann-portablegamenotation-jl/4248/4 "2017-06-14T12:04:09Z")

</div>

There was a Julia chess engine mentioned here

> [@2nd Portland Julia Meetup - January 17th](https://discourse.julialang.org/t/2nd-portland-julia-meetup-january-17th/1452):
>
> Hello all, Our next Portland area Julia meetup will be 11:30 - 1:30, Tuesday, 17 January at McMenamin’s Cornelius Pass Roadhouse in Hillsboro. If you’re in the area, we would love for you to join us! Alan Bahm is going to talk about his work on a Julia chess engine, [chess.jl](https://github.com/abahm/Chess.jl), and I’ll be briefly talking about [http://app.juliadiffeq.org/](http://app.juliadiffeq.org/), and we’re looking forward to hearing what you’re working on. Hope to see you there, Alex PS: If you’re interested in future Portland area events but can’t…

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

---

<div class="post-metadata">

**Author:** ![amellnik](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amellnik/32/137_2.png) [@amellnik](https://discourse.julialang.org/u/amellnik)\
**Post date:** [June 14, 2017, 3:36pm UTC](https://discourse.julialang.org/t/ann-portablegamenotation-jl/4248/5 "2017-06-14T15:36:34Z")

</div>

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