New modules:
* `mpyc.fingroups` for finite groups (symmetric groups, quadratic residues, Schnorr groups, elliptic curves, class groups).
* `mpyc.secgroups` for secure versions of finite groups by using `mpc.SecGrp()`.
* `mpyc.__main__` for async REPL with top-level `await` and MPyC preloaded by using `python -m mpyc`.
New types/functions/methods:
* `mpyc.sectypes.SecureFloat` for secure floating-point numbers by using `mpc.SecFlt()`.
* `mpc.gcd()`, `mpc.gcdext()`, `mpc.inverse()` for secure (extended) gcd and modular inverse.
* `mpyc.statistics` module extended with secure `quantiles()`, `covariance()`, `correlation()`, `linear_regression()`.
* `mpc.find()` as secure generic search for first occurrence in a list.
* `mpyc.gmpy` module extended with `ratrec()` and stubs for `gmpy2` functions `gcdext()`, `jacobi()`, `kronecker()`.
* `mpc.if_swap()` as convenience function for secure (oblivious) conditional swap, slightly more efficient than using `mpc.if_else()`.
New demos:
* `multilateration.py` for privacy-preserving multilateration (MLAT), building on `ridgeregression.py` demo.
* `elgamal.py` for threshold ElGamal built from MPyC (secure) finite groups.
* `dsa.py` for threshold DSA and Schnorr signatures, reusing distributed key generation from `elgamal.py`.
Technical changes:
* Command line option `--no-prss` for disabling PRSS (e.g., demos `{helloworld,oneliners,ot,unanimous,parallelsort}.py` do not use PRSS).
* Command line option `--mix32-64bit` (and environment variable `MPYC_MIX32_64BIT`) for 32-bit/64-bit compatibility mode (e.g., to mix with MPyC parties running on a 32-bit Raspberry Pi OS).
* Drop limitation to m=256 parties (see, e.g., demo `helloworld.py`).
* Use `pyOpenSSL` only via `cryptography` package for generating X.509 certificates, also upgrading incl. dummy `.crt` files from version 1 to 3.
* Toward favoring hashable over mutable for finite fields.
* Add Read the Docs badge, `.readthedocs.yaml` and check if environment variable `READTHEDOCS=True` for generating Sphinx-based documentation on Read the Docs (including an overview of the MPyC demos).
* Add `.gitattributes` for platform-dependent line endings in `.bat` and `.sh` files.
* And other things.
Many thanks to Niek Bouman, Stan Korzilius, Daniel Moser, Toon Segers, Meilof Veeningen, and Thijs Veugen for (continuous) collaboration.
Corresponds to package **mpyc 0.8** on [PyPI](https://pypi.org/).
This will be the last release of MPyC supporting Python 3.6 and Python 3.7.
As of December 23, 2021 Python 3.6 has reached end-of-life (see [Python Developer’s Guide](https://devguide.python.org/)), and Numpy dropped support for Python 3.7 on December 26, 2021 (see [NumPy version support]*https://numpy.org/neps/nep-0029-deprecation_policy.html)). Also PyPy is expected to fully support Python 3.8 in the course of 2022 (see [PyPy - Features](https://www.pypy.org/features.html)).