lichess-org/scalachess

Chess API written in scala. Immutable and free of side effects.

783

stars

4,779

commits

Scala

primary language

Sep 10, 2026

updated

lichess.org
bitboard
bitboard-datastructure
chess
functional-programming
lichess
scala-3

README

Chess API written in scala for lichess.org

It is entirely functional, immutable, and free of side effects.

INSTALL

Clone scalachess

git clone https://github.com/lichess-org/scalachess

Start sbt in scalachess directory

sbt

In the sbt shell, to compile scalachess, run

compile

To run the tests

testKit / test

To run full benchmarks (takes more than 1 hour to finish):

bench / Jmh / run

Or to output a json file

bench / Jmh / run -rf json

To run quick benchmarks (results may be inaccurate):

bench / Jmh / run -i 1 -wi 1 -f1

To run longer benchmarks:

bench / Jmh / run -i 3 -wi 2 -f2

To run benchmarks for a specific class:

bench / Jmh / run -rf json .*PlayBench.*

To run scalafmt and scalafix:

sbt prepare

Install (python)

For python code, install pipenv, and run $ pipenv install from project root.

Release

  1. Bump version in build.sbt.
  2. Commit the version bump and push to master.
  3. gh release create X.Y.Z

Contributors

(top 30 of 63)

ornicar

2,020 commits

lenguyenthanh

1,561 commits

niklasf

297 commits

scala-steward

280 commits

lichess-org/scalachess

Chess API written in scala. Immutable and free of side effects.

783

stars

4,779

commits

Scala

primary language

Sep 10, 2026

updated

lichess.org
bitboard
bitboard-datastructure
chess
functional-programming
lichess
scala-3

README

Chess API written in scala for lichess.org

It is entirely functional, immutable, and free of side effects.

INSTALL

Clone scalachess

git clone https://github.com/lichess-org/scalachess

Start sbt in scalachess directory

sbt

In the sbt shell, to compile scalachess, run

compile

To run the tests

testKit / test

To run full benchmarks (takes more than 1 hour to finish):

bench / Jmh / run

Or to output a json file

bench / Jmh / run -rf json

To run quick benchmarks (results may be inaccurate):

bench / Jmh / run -i 1 -wi 1 -f1

To run longer benchmarks:

bench / Jmh / run -i 3 -wi 2 -f2

To run benchmarks for a specific class:

bench / Jmh / run -rf json .*PlayBench.*

To run scalafmt and scalafix:

sbt prepare

Install (python)

For python code, install pipenv, and run $ pipenv install from project root.

Release

  1. Bump version in build.sbt.
  2. Commit the version bump and push to master.
  3. gh release create X.Y.Z

Contributors

(top 30 of 63)

ornicar

2,020 commits

lenguyenthanh

1,561 commits

niklasf

297 commits

scala-steward

280 commits

Languages

Scala

99.9%