Skip to content

Commit

Permalink
Merged volatile implementation and Record changes
Browse files Browse the repository at this point in the history
  • Loading branch information
cqstanford committed Apr 10, 2024
2 parents bce9357 + 0efcf49 commit 3a84607
Show file tree
Hide file tree
Showing 44 changed files with 2,941 additions and 849 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/push_branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Build
run: cargo build --verbose

Expand All @@ -24,6 +26,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Test
run: cargo test --verbose

Expand All @@ -34,6 +38,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Create Formatting Commit
uses: mbrobbel/rustfmt-check@master
with:
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/push_main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Build
run: cargo build --verbose

Expand All @@ -28,6 +30,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Test
run: cargo test --verbose

Expand All @@ -36,6 +40,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Format Check
run: cargo fmt --verbose -- --check

Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@

# Profiling output
flamegraph.svg

# MacOS desktop attributes file
.DS_Store
95 changes: 87 additions & 8 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 6 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,26 @@ repository = "https://github.com/GamesCrafters/GamesmanNova"
keywords = ["game", "solver", "strong-solver", "research"]
edition = "2021"
readme = "README.md"
exclude = ["/.github"]
exclude = ["/.github", "/data"]

[[bin]]
name = "nova"
path = "src/main.rs"
test = true
name = "nova"
bench = true
test = true

[profile.release]
lto = "fat"
codegen-units = 1
debug = true
lto = "fat"

[dependencies]
clap = { version = "^4", features = ["derive"] }
serde_json = "^1"
exitcode = "^1"
petgraph = "^0"
nalgebra = "^0"
colored = "^2"
anyhow = "^1"
bitvec = "^1"
regex = "^1"
32 changes: 13 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,45 @@
# GamesmanNova

Nova is a research project primarily built for efficiently searching extensive-form games, such as Tic-Tac-Toe, Connect4, and Chess (if it weren't so darn big). In particular, the prupose of this project is to take learnings and ambitions from [Prof. Dan Garcia's](https://people.eecs.berkeley.edu/~ddgarcia/) multi-decade project [GamesmanClassic](https://github.com/GamesCrafters/GamesmanClassic) and provide a software system that is more general, performant, and ergonomic.
Nova is a UC Berkeley research project primarily built for efficiently searching extensive-form games, such as Tic-Tac-Toe, Connect4, and Chess (if it weren't so darn big). In particular, the prupose of this project is to take learnings and ambitions from [Prof. Dan Garcia's](https://people.eecs.berkeley.edu/~ddgarcia/) multi-decade project [GamesmanClassic](https://github.com/GamesCrafters/GamesmanClassic) and provide a software system that is more general, performant, and ergonomic.

## Installation

Before doing anything, you will want to install [the Rust compiler and toolchain](https://www.rust-lang.org/tools/install). GamesmanNova is on [crates.io](https://crates.io/crates/gamesman-nova), so to get the `nova` executable, you can then run:

```
$ cargo install gamesman-nova
cargo install gamesman-nova
```

Otherwise, if you would like to build Nova from source, you can also:

1. Clone this repository to your preferred `location`.

```
$ git clone https://github.com/GamesCrafters/GamesmanNova.git location
git clone https://github.com/GamesCrafters/GamesmanNova.git location
```

2. Go to your installation (`cd location`), and install the executable:

```
$ cargo install --path .
cargo install --path .
```

This will add the `nova` executable to your list of cargo binaries.

## Development

### Important Fronts

The current big objectives for this project are:
## Usage

* Supporting transferrable utility coalitional games (i.e., games where you can re-distribute winnings at the end among those who helped you win).
* Creating a memory-efficient and thread-safe implementation of GamesmanClassic's database engine.
* Designing a database file serialization protocol to make GamesmanClassic's databases compatible with Nova.
* Building a wonderful terminal user interface and expanding the current command-line interface.
* Implementing and wrapping a distributed MPI controller for distribution.
Once you have the `nova` executable in a directory that is part of your `PATH`, you can run:

### Subprojects
```
nova --help
```

Smaller modules currently being built:
This will display a list of sub-commands and their descriptions. Nova uses [`clap`](https://docs.rs/clap/latest/clap/) for Unix-like command-line argument parsing.

* An implementation of the [Crossteaser](https://www.jaapsch.net/puzzles/crosstsr.htm) puzzle.
## Development

### Contributing
As a research project, the primary users of Nova will be people who intend to build on it as a platform. In the long-term, we wish to make this evident by splitting Nova into multiple modular crates that better express this, in a way that makes the project more accessible.

This project was created in affiliation with GamesCrafters, a computational game theory applied research group at UC Berkeley. If you would like to contribute as someone outside the GamesCrafters org, feel free to fork the repository and open a PR. If you are part of the org, create a branch anytime and code away (but do let others know, so we can help or thank you). Some light CI is set up to ensure some loose measure of quality on the main branch (namely compilation, testing, and formatting checks).
For now, we make our best attempt at providing a good experience when building from this repository via rustdocs and a reasonable architecture. The project adheres to semantic versioning per Rust's standards, and is currently unstable.

-- Cheers, [Max Fierro](https://www.maxfierro.me/)
3 changes: 0 additions & 3 deletions src/database/engine/lsmt/mod.rs

This file was deleted.

Loading

0 comments on commit 3a84607

Please sign in to comment.