prophet

Prophet is a C based chess program.

Download

You can download the source code as well as release bundles for Linux and Windows from the Prophet Github repo:  https://github.com/jswaff/prophet

Prophet is distributed under the MIT license. See LICENSE.TXT in the download for details, but essentially it means you can do pretty much anything you want with it as long as (1) you don’t hold me liable, and (2) you provide attribution back to me.

History

The first version of Prophet was written around the year 2000 while I was an undergraduate. It was the successor to a previous engine I had written named Tristram. I used this version to do some not-so-successful experimentation with TDLeaf (a form of temporal difference learning).

The second version was released in early 2007. I was in graduate school at that time and was using Prophet as a test bed for various parallel search algorithms. I continued to work on this version until shortly after finishing graduate school in 2008.

After that, Prophet lie dormant for a few years until 2011 when I started a second complete rewrite. By this point I had learned the importance of test driven design and wanted to apply that to Prophet. Life got busy again and the project lie dormant for several more years before it was even released. Prophet 3.0 never achieved functional parity with Prophet 2.0. I never implemented the parallel search, and there are some evaluation terms that were never ported. Despite that, I think it was a better program overall.

Development on Prophet 4.0 began in June 2019 and released in Fall 2021.  Yet another rewrite. It was a tremendous amount of work but I think the effort was worth it.  The main design goals were to modularize the codebase, further improve unit testing, and separate test code from the release binary. All the design goals were met, providing a solid foundation for years to come.

Prophet 5.0, released in Aug. 2025, is the first major release that didn’t involve a complete rewrite. The major advancement in this version is the ability to use a neural network (NNUE).