Prior art
Penmark sits at an intersection of two ecosystems, and we want to be honest about both — the people doing the same engineering work, and the people serving the same users.
On the engine side (libraries that solve / grade / generate logic puzzles):
- Simon Tatham’s Portable Puzzle Collection — https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ — the long-running C library + GUI for ~40 logic puzzles, with per-puzzle generators and solvers. The closest peer in scope.
- PuzzleKit — https://github.com/SmilingWayne/PuzzleKit — Python toolkit for Nikoli-style puzzles; we use the dataset at https://github.com/SmilingWayne/puzzlekit-dataset for benchmarking and corpus seeding.
- Per-puzzle solvers — every Sudoku solver since the 90s, Slitherlink solvers in the SAT-encoding tradition, MiniSat / Glucose / Z3 used directly. The “I wrote a solver for X” universe.
On the player / editor side (where Penmark’s WASM embed and ordo’s archive land):
- SudokuPad — https://sudokupad.app — best-in-class Sudoku player + variant authoring; the bar for in-browser puzzle UX.
- pzv.jp / Puzz.link — http://pzv.jp/ — canonical multi-puzzle player with the URL-encoded share format that everyone consumes.
- F-Puzzles — https://f-puzzles.com/ — Sudoku-variant editor + player popular with constructors.
Penmark’s ambition is to be one library covering both halves: the engine work that Tatham, PuzzleKit, and copris-puzzle do, plus the embeddable player + editor that SudokuPad / pzv.jp / F-Puzzles ship. One core crate, one rule vocabulary, three frontends. None of the above does all of it; whether we end up doing all of it is what implementation will decide.