Home

Awesome

tallystick

docs crates.io Build Status codecov patreon flattr

tallystick is a work-in-progress rust library for tallying votes.

Current state is very unstable. It is not currently recommended for use. See checkboxes below for a list of features that are complete.

Goals

  1. Ergonomic - Easy to use.
  2. Fast - Be the fastest general-purpose vote tallying library in the world.
  3. Secure - Have no undefined behavior.
  4. Complete - Support all well-known voting methods.
  5. Deterministic - Running the same tally twice should never produce different results.
  6. Generic - Generic over both candidate and count types.

Features

Supported Tally Methods

Status¹Tally MethodSupported VariantsPerformance²Notes
Plurality120 million v/sFirst Past the Post (FPTP)
Score3 million v/s
Approval4 million v/s
STVNewland-Britton, Meek, Warren3 million v/sSingle Transferable Vote
CPO-STV
Instant Runoff
Contingent
Supplementary
Condorcet2 million v/s
Copeland
SchulzeWinning, Margin, Ratio2 million v/s
Schulze STV
Kemeny–Young
Minimax
BordaClassic, Dowdall, Modified3 million v/s
Borda - NansonClassic, Dowdall, Modified
Borda - BaldwinClassic, Dowdall, Modified
DodgsonQuick, Tideman
Ranked pairsMargin, Winning
STAR
Majority judgment
D'HondtSainte-Laguë, Huntington-Hill, Quota
  1. ✓ means done, ⚠ means in-progress, blank means not started but support is planned.
  2. Single threaded performance measured in votes tallied per second. Benchmarked on a 2017 Macbook Pro.

Contributors