Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Penmark

Penmark is a toolkit in Rust for creating, playing, and analyzing Nikoli-style pen-and-paper puzzles. Through a unified view of pen-and-paper puzzles, a new constraint programming engine written from scratch, and a portable WASM library, Penmark aims to be the best in class toolkit for these pen-and-paper puzzles in all regards.

This book documents how Penmark is structured, why it’s structured that way, and how to use it. It’s updated regularly throughout development; changes often appear here before being implemented.

What’s in this book

  • Core concepts — the conceptual layers (genre / puzzle / game), grid substrates, regions, and the rule vocabulary that every constraint draws from.
  • Implementations — the trait surface (Puzzle, Game, the four action traits), tagged serialization, dispatching, the propagation engine, and the Puzzlehound dataset.
  • Solver, Generator, Grader, Enumerator — one section per action.
  • Frontends — CLI verbs and the directory layout that holds it together.
  • Roadmap — MVP scope, performance state, open work.

Chapters are mostly self-contained; cross-links handle the cases where one needs to lean on another. Skim the library-structure and genre-puzzle-game chapters first if you want orientation; otherwise jump wherever.