[!IMPORTANT] As of October 2023, I have started developing a poker solver as a business and have decided to suspend development of this open-source project. See this issue for more information.
An open-source postflop solver library written in Rust
Documentation: https://b-inary.github.io/postflop_solver/postflop_solver/
Related repositories
Note: The primary purpose of this library is to serve as a backend engine for the GUI applications (WASM Postflop and Desktop Postflop). The direct use of this library by the users/developers is not a critical purpose by design. Therefore, breaking changes are often made without version changes. See CHANGES.md for details about breaking changes.
Cargo.toml
[dependencies]
postflop-solver = { git = "https://github.com/b-inary/postflop-solver" }
You can find examples in the examples directory.
If you have cloned this repository, you can run the example with the following command:
$ cargo run --release --example basic
bincode
: Uses bincode crate (2.0.0-rc.3) to serialize and deserialize the PostFlopGame
struct.
This feature is required to save and load the game tree.
Enabled by default.custom-alloc
: Uses custom memory allocator in solving process (only available in nightly Rust).
It significantly reduces the number of calls of the default allocator, so it is recommended to use this feature when the default allocator is not so efficient.
Note that this feature assumes that, at most, only one instance of PostFlopGame
is available when solving in a program.
Disabled by default.rayon
: Uses rayon crate for parallelization.
Enabled by default.zstd
: Uses zstd crate to compress and decompress the game tree.
This feature is required to save and load the game tree with compression.
Disabled by default.Copyright (C) 2022 Wataru Inariba
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.