Sixth major update: secure NumPy arrays
Pre-release
Pre-release
Many new types/functions/methods to support a substantial part of the NumPy array API.
Along with vectorized implementations of the corresponding protocols.
New mpyc.numpy
module as stub to avoid a (hard) dependency for the numpy package.
New demos -- try all with np-run-all.{bat,sh}
:
pseudoinverse.py
implementing the Moore-Penrose pseudoinverse.sha3.py
for threshold SHA-3 hash functions.np_bnnmnist.py
,np_cnnmnist.py
,np_id3gini.py
,np_aes.py
,np_onewayhashchains.py
,np_lpsolver.py
,np_lpsolverfxp.py
reimplement existing demos with 2-fold to 18-fold speedups.
Command Line Interface:
- Add
-V
option for MPyC version. - Add option
--log-level ll
with ll=debug/info(default)/warning/error. - Support for
--output-windows
on Linux/Mac. - Add
-W w, --workers w
to set number of worker threads per party (experimental, see below). - Add
--no-numpy
to disable load and use of numpy package. - Let
--mix32-64bit
also disable use ofpickle
for exchanging NumPy arrays. - Report
bytes_sent
by party (in debug mode: per destination party as well)
More technical changes:
- Secure prime fields for any number of parties using subfields if order
$p$ does not exceed number of parties$m$ . - Vectorized modular exponentiation (experimental) using
gmpy2
's new functionpowmod_base_list()
. - Move import
ssl
to avoid dependency for PyScript. - Part of runtime setup moved to init module.
- And lots of smaller things.
Docs:
- Add "MPyC basics"
- Add "Hacking MPyC"
- Add MPyC command line documentation (using
sphinx-argparse
).
Corresponds to package mpyc 0.9 on PyPI.
This should be the last MPyC release supporting Python 3.8 and NumPy 1.21, following NumPy's deprecation policy.