A collection of cryptography primitives written in Rust.
This library contains primarily the following cryptographic primitives:
- The Tip5 hash function
 - Lattice-crypto
- arithmetic for the quotient ring 
$\mathbb{F}_ p[X] / \langle X^{64} + 1 \rangle$  - arithmetic for modules over this quotient ring
 - a IND-CCA2-secure key encapsulation mechanism
 - Lattice-Based Cryptography in Miden VM
 
 - arithmetic for the quotient ring 
 - 
BFieldElement,XFieldElement- The prime-field type 
$\mathbb{F}_p$ where$p = 2^{64} - 2^{32} + 1$  - The extension field 
$\mathbb{F}_p[x]/(x^3 - x + 1)$  - A codec trait for encoding and decoding structs as 
Vecs ofBFieldElement - An efficient prime for number-theoretic transforms
 
 - The prime-field type 
 - NTT
- Number Theoretic Transform (discrete Fast Fourier Transform)
 - Anatomy of a STARK, Part 6: Speeding Things Up
 
 - Univariate and multivariate polynomials
 - Merkle Trees
 - Merkle Mountain Ranges
 
While twenty-first's version is 0.x.y, releasing a new version:
- Is the release backwards-compatible?
Then the new version is 
0.x.y+1. Otherwise the new version is0.x+1.0. - Checkout the last commit on Mjolnir, and run 
make bench-publish. Save the benchmark's result and verify that there is no performance degradation. - Create a commit that increases 
version = "0.x.y"in twenty-first/Cargo.toml. The commit message should give a one-line summary of each release change. Include the benchmark result at the bottom. - Have a 
v0.x.ygit tag on this commit created. (git tag v0.x.y [sha],git push upstream --tags) - Have this commit 
cargo published on crates.io and in GitHub tags. 
If you do not have the privilege to create git tags or run cargo publish, submit a PR and the merger will take care of these.