Skip to content

Latest commit

 

History

History
153 lines (122 loc) · 6.5 KB

release-notes.rst

File metadata and controls

153 lines (122 loc) · 6.5 KB

../artwork/cicada.png

Release Notes

Cicada 1.2.0 - November 28th, 2023

  • Added new API for generating transcripts - detailed logs for advanced debugging, network tracing, and zero-knowledge proofs using MPC-in-the-head.

Cicada 1.1.0 - October 9th, 2023

  • Moved the PRZS implementation into its own protocol object.
  • Began running regression tests using Python 3.12.
  • Minor documentation improvements.
  • Restored missing regression tests, improved code coverage, and removed obsolete code.

Cicada 1.0.0 - September 15th, 2023

  • Our first stable release!
  • Split encoders into separate field arithmetic and encoding objects.
  • share() and reveal() methods automatically apply a default encoding with optional caller override.
  • API explicitly distinguishes between encoding-agnostic and encoding-specific operations.
  • Consistent support for private/private, public/private, and private/public arithmetic, based on argument types instead of separate methods.
  • Added configurable logging for message transcripts.
  • Added "cicada generate-shares" command for pedagogy.

Cicada 0.8.1 - October 15th, 2022

  • Reorganized the documentation and added instructions for building the docs locally.

Cicada 0.8.0 - October 14th, 2022

  • Renamed ActiveProtocol -> ActiveProtocolSuite.
  • Renamed AdditiveProtocol -> AdditiveProtocolSuite.
  • Renamed ShamirProtocol -> ShamirProtocolSuite.
  • Renamed ShamirBasicProtocol -> ShamirBasicProtocolSuite.
  • Protocol suite encoders have been removed from the public API.
  • Added multiply(), divide(), and reshare() methods to all protocol suites.
  • Significantly improved FixedFieldEncoder.uniform() performance.
  • Switched to a faster dot-product implementation for ShamirProtocolSuite.
  • Added documentation on active security.
  • ActiveProtocolSuite.verify() didn't work with scalar secrets.
  • Calculator service supports unix domain sockets.
  • Improved test coverage.
  • Switched from setuptools to flit for builds.

Cicada 0.7.0 - August 9th, 2022

  • Added ActiveProtocol, our first protocol with a security model against active adversaries.
  • Added private summation and private dot product operations to all protocol objects.
  • Added TLS support to SocketCommunicator.split() and SocketCommunicator.shrink().
  • Added SocketCommunicator.run_forever() for starting MPC services.
  • Created cicada.calculator as an example of MPC-as-a-service.
  • Regression tests use the calculator service, eliminating lots of repetitive test code.
  • Rename Tags -> Tag for consistency, clarity.
  • Rename all_gather() -> allgather() for consistency, clarity.
  • Raise a better error if a send operation would block.
  • NetstringSocket didn't handle sending large messages correctly.

Cicada 0.6.0 - June 17th, 2022

  • SocketCommunicator.run() would sometimes hang returning results from large numbers of players.
  • Sped-up regression tests significantly by removing unnecessary redundancy.
  • Began formally testing Cicada with Python 3.8 and 3.10.
  • Added user guide sections on Shamir sharing and fault recovery.
  • Reorganized SocketCommunicator statistics, and added statistics organized by message type.
  • Added the cicada-perf command for benchmarking communications.
  • Added indices and threshold properties to ShamirBasicProtocol and ShamirProtocol.
  • SocketCommunicator setup didn't always use the correct rank and name in log output.
  • Fixed a problem with the way thresholds are constrained in ShamirProtocol.
  • Explicitly specify process names for debugging with SocketCommunicator.run().
  • Removed obsolete code.

Cicada 0.5.1 - May 4th, 2022

  • A botched merge left some changes out of the 0.5.0 release.

Cicada 0.5.0 - April 28th, 2022

  • ShamirProtocol provides the same operations as AdditiveProtocol.
  • New ShamirBasicProtocol provides a subset of operations, but with relaxed constraints on share degree.
  • Reduced per-message SocketCommunicator overhead.
  • SocketCommunicator.run, SocketCommunicator.shrink, and SocketCommunicator.split support Unix domain sockets.
  • Rewrite the SocketCommunicator.shrink implementation for simplicity.
  • SocketCommunicator can raise exceptions while sending.
  • Rewrote the SocketCommunicator message queue for reduced resource consumption and greater flexibility.
  • Point-to-point SocketCommunicator operations support user-defined message tags.
  • Reduced the number of coordinating messages during logging.
  • Many improvements in library logging output.
  • Added a user guide article on logging.

Cicada 0.4.0 - March 21st, 2022

  • SocketCommunicator supports TLS encryption.
  • SocketCommunicator supports Unix domain sockets.
  • Moved SocketCommuniator initialization into a separate module.
  • Fixed problems with AdditiveProtocol.private_public_power.
  • Reduced default log output, and made log output more consistent.
  • Raise an exception trying to use a communicator that's been freed.
  • Removed the cicada.bind module.

Cicada 0.3.0 - February 1st, 2022

  • Improved code coverage from 80% to 95%.
  • Greatly improved SocketCommunicator startup behavior.
  • SocketCommunicator can choose random ports for players other than root.
  • Made SocketCommunicator.override() more flexible.
  • Fixed a bug in AdditiveProtocol.zigmoid().
  • Eliminated warnings waiting for interactive user input.
  • cicada.interactive.secret_input() just prompts for input.
  • Created new cicada command to replace cicada-exec, which is deprecated.

Cicada 0.2.0 - January 25th, 2022

  • Replaced NNGCommunicator with SocketCommunicator, for vastly improved reliability.
  • Added ReLU function.
  • Added absolute value function.
  • Added bit decomposition function.
  • Added division function.
  • Added equality comparison function.
  • Added floor function.
  • Added less-than-zero function.
  • Added logical negation function.
  • Added min and max functions.
  • Added multiplicative inverse function.
  • Added zigmoid function.
  • Added many new documentation topics, including communication patterns, random seeds, timeouts, and working with multiple communicators.
  • Switched to Github Actions for continuous integration.
  • Improved code test coverage.

Cicada 0.1.0 - June 28th, 2021

  • Initial Release.