tallystick

Crates.iotallystick
lib.rstallystick
version0.4.3
sourcesrc
created_at2020-02-21 18:32:46.764212
updated_at2021-07-11 21:01:32.799877
descriptiontallystick is a rust library for talling votes
homepage
repositoryhttps://github.com/phayes/tallystick
max_upload_size
id211263
size356,603
Patrick Hayes (phayes)

documentation

README

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

  • wasm support for use in the browser, or in blockchain smart contracts.
  • rational support for perfectly-precise tallies by using rational fractions instead of floats.
  • fixed_point support for decimal fixed-point tallies, required by some statutes.
  • ffi support for calling from other programming languages.
  • alloc support for embedded and other applications where there is an allocator, but no standard library.

Supported Tally Methods

Status¹ Tally Method Supported Variants Performance² Notes
Plurality 120 million v/s First Past the Post (FPTP)
Score 3 million v/s
Approval 4 million v/s
STV Newland-Britton, Meek, Warren 3 million v/s Single Transferable Vote
CPO-STV
Instant Runoff
Contingent
Supplementary
Condorcet 2 million v/s
Copeland
Schulze Winning, Margin, Ratio 2 million v/s
Schulze STV
Kemeny–Young
Minimax
Borda Classic, Dowdall, Modified 3 million v/s
Borda - Nanson Classic, Dowdall, Modified
Borda - Baldwin Classic, Dowdall, Modified
Dodgson Quick, Tideman
Ranked pairs Margin, Winning
STAR
Majority judgment
D'Hondt Sainte-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

Commit count: 221

cargo fmt