|dc.description.abstract||Transactional memory is a concurrency primitive that is easier to reason about and therefore less error prone than locking, but traditional software
implementations have been unacceptably slow. STO, a transactional memory library by Herman et al, improves performance by logging abstract data structure operations rather than individual reads and writes, but requires data structure authors to explicitly support the STO protocol, making it possible to accidentally make non-transactional modifications to data structures from within
a transaction block.
In this thesis I describe sto-rs, a port of STO from C++ to Rust (26), a new systems programming language that can provide strong guarantees about memory safety in the presence of parallelism. In doing so I show that Rust's type system allows many programming mistakes possible using the original STO to be prevented at compile
time. This work also supports Rust's claim that its type system is agnostic to concurrency schemes and that the language can express arbitrary new concurrency primitives.||