Posts from July 2021

Implementing a BLT parser by hand in Rust (vs pest and combine): OpenTally dev log
OpenTally is opensource software which can count single transferable vote elections specified using the BLT file format.
Earlier this month, I replaced OpenTally's previous naive stringmanipulationbased BLT parser with one using pest. A new parser was necessary to support extensions to the BLT… »

Asyncify with vanilla JS/WebAssembly (wasmbindgen compatible)
Background
WebAssembly is a technology for executing compiled programs in the web browser at nearnative speeds. However, it has a number of current limitations, including that it does not support coroutines/asynchronicity.
In OpenTally, WebAssembly is used to run code for counting an election. This… »

Model rules for a computerised STV election using the weighted inclusive Gregory method
OpenTally is opensource software for counting single transferable vote (STV) elections. The default preset in OpenTally is ‘OpenTally WIGM’, a recommended set of simple STV rules designed for computer counting, using the weighted inclusive Gregory method, exact quotas and rational arithmetic.
The weighted inclusive Gregory… »

Reducing binary size with DIY dynamic dispatch: OpenTally dev log
Background
OpenTally is open source software for the counting of preferential voting elections. One feature of OpenTally is support for various different representations of numbers, from floatingpoint arithmetic through to exact rational representations.
In OpenTally, these are implemented using generics. For example, consider the following… »

Compiling I D Hill's New Zealand Meek STV implementation: OpenTally dev log
In [1], I D Hill describes an implementation of Meek STV written in Pascal, which had been privately circulated since as early as 1999 [2]. The implementation is similar to the earlier ‘Algorithm 123’ Pascal implementation of Meek STV by Hill, Wichmann and… »

Multiple constraints in STV elections: OpenTally dev log
OpenTally is open source software currently under development for the counting of elections using STV and related systems. Part of its feature set is the implementation of constraints on elections: for example, where a certain minimum or maximum number of candidates must be elected from… »