## Overview
[![Build Status](https://travis-ci.org/official-stockfish/Stockfish.svg?branch=master)](https://travis-ci.org/official-stockfish/Stockfish)
-[![Build Status](https://ci.appveyor.com/api/projects/status/github/official-stockfish/Stockfish?svg=true)](https://ci.appveyor.com/project/mcostalba/stockfish)
+[![Build Status](https://ci.appveyor.com/api/projects/status/github/official-stockfish/Stockfish?branch=master&svg=true)](https://ci.appveyor.com/project/mcostalba/stockfish/branch/master)
[Stockfish](https://stockfishchess.org) is a free, powerful UCI chess engine
derived from Glaurung 2.1. It is not a complete chess program and requires a
A positive value for contempt favors middle game positions and avoids draws.
* #### Analysis Contempt
- By default, contempt is set to prefer the side to move. Set this option to "White"
+ By default, contempt is set to prefer the side to move. Set this option to "White"
or "Black" to analyse with contempt for that side, or "Off" to disable contempt.
* #### Threads
- The number of CPU threads used for searching a position. For best performance, set
+ The number of CPU threads used for searching a position. For best performance, set
this equal to the number of CPU cores available.
* #### Hash
- The size of the hash table in MB.
+ The size of the hash table in MB. It is recommended to set Hash after setting Threads.
* #### Clear Hash
Clear the hash table.
Leave at 1 for best performance.
* #### Skill Level
- Lower the Skill Level in order to make Stockfish play weaker.
+ Lower the Skill Level in order to make Stockfish play weaker (see also UCI_LimitStrength).
+ Internally, MultiPV is enabled, and with a certain probability depending on the Skill Level a
+ weaker move will be played.
+
+ * #### UCI_LimitStrength
+ Enable weaker play aiming for an Elo rating as set by UCI_Elo. This option overrides Skill Level.
+
+ * #### UCI_Elo
+ If enabled by UCI_LimitStrength, aim for an engine strength of the given Elo.
+ This Elo rating has been calibrated at a time control of 60s+0.6s and anchored to CCRL 40/4.
* #### Move Overhead
- Assume a time delay of x ms due to network and GUI overheads. This is useful to
+ Assume a time delay of x ms due to network and GUI overheads. This is useful to
avoid losses on time in those cases.
* #### Minimum Thinking Time
- Search for at least x ms per move.
+ Search for at least x ms per move.
* #### Slow Mover
- Lower values will make Stockfish take less time in games, higher values will
+ Lower values will make Stockfish take less time in games, higher values will
make it think longer.
* #### nodestime
- Tells the engine to use nodes searched instead of wall time to account for
+ Tells the engine to use nodes searched instead of wall time to account for
elapsed time. Useful for engine testing.
* #### UCI_Chess960
An option handled by your GUI.
* #### SyzygyPath
- Path to the folders/directories storing the Syzygy tablebase files. Multiple
- directories are to be separated by ";" on Windows and by ":" on Unix-based
+ Path to the folders/directories storing the Syzygy tablebase files. Multiple
+ directories are to be separated by ";" on Windows and by ":" on Unix-based
operating systems. Do not use spaces around the ";" or ":".
-
+
Example: `C:\tablebases\wdl345;C:\tablebases\wdl6;D:\tablebases\dtz345;D:\tablebases\dtz6`
-
- It is recommended to store .rtbw files on an SSD. There is no loss in storing
- the .rtbz files on a regular HD.
+
+ It is recommended to store .rtbw files on an SSD. There is no loss in storing
+ the .rtbz files on a regular HD. It is recommended to verify all md5 checksums
+ of the downloaded tablebase files (`md5sum -c checksum.md5`) as corruption will
+ lead to engine crashes.
* #### SyzygyProbeDepth
Minimum remaining search depth for which a position is probed. Set this option
needed for optimal play and in addition being able to take into account
the 50-move rule.
+## Large Pages
+
+Stockfish supports large pages on Linux and Windows. Large pages make
+the hash access more efficient, improving the engine speed, especially
+on large hash sizes. Typical increases are 5..10% in terms of nps, but
+speed increases up to 30% have been measured. The support is
+automatic. Stockfish attempts to use large pages when available and
+will fall back to regular memory allocation when this is not the case.
+
+### Support on Linux
+
+Large page support on Linux is obtained by the Linux kernel
+transparent huge pages functionality. Typically, transparent huge pages
+are already enabled and no configuration is needed.
+
+### Support on Windows
+
+The use of large pages requires "Lock Pages in Memory" privilege. See
+[Enable the Lock Pages in Memory Option (Windows)](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows)
+on how to enable this privilege. Logout/login may be needed
+afterwards. Due to memory fragmentation, it may not always be
+possible to allocate large pages even when enabled. A reboot
+might alleviate this problem. To determine whether large pages
+are in use, see the engine log.
## Compiling Stockfish yourself from the sources
set/unset some switches in the compiler command line; see file *types.h*
for a quick reference.
+When reporting an issue or a bug, please tell us which version and
+compiler you used to create your executable. These informations can
+be found by typing the following commands in a console:
+
+```
+ ./stockfish
+ compiler
+```
## Understanding the code base and participating in the project
### Donating hardware
Improving Stockfish requires a massive amount of testing. You can donate
-your hardware resources by installing the [Fishtest Worker](https://github.com/glinscott/fishtest/wiki/Running-the-worker)
-and view the current tests on [Fishtest](http://tests.stockfishchess.org/tests).
+your hardware resources by installing the [Fishtest Worker](https://github.com/glinscott/fishtest/wiki/Running-the-worker:-overview)
+and view the current tests on [Fishtest](https://tests.stockfishchess.org/tests).
### Improving the code
-If you want to help improve the code, there are several valuable ressources:
+If you want to help improve the code, there are several valuable resources:
* [In this wiki,](https://www.chessprogramming.org) many techniques used in
Stockfish are explained with a lot of background information.
Nevertheless, a helpful resource.
* The latest source can always be found on [GitHub](https://github.com/official-stockfish/Stockfish).
-Discussions about Stockfish take place in the [FishCooking](https://groups.google.com/forum/#!forum/fishcooking)
-group and engine testing is done on [Fishtest](http://tests.stockfishchess.org/tests).
+Discussions about Stockfish take place in the [FishCooking](https://groups.google.com/forum/#!forum/fishcooking)
+group and engine testing is done on [Fishtest](https://tests.stockfishchess.org/tests).
If you want to help improve Stockfish, please read this [guideline](https://github.com/glinscott/fishtest/wiki/Creating-my-first-test)
first, where the basics of Stockfish development are explained.