Skip to content

DP Lib v2.0.0

Compare
Choose a tag to compare
@monsieurmuffin monsieurmuffin released this 15 Nov 14:26
· 53 commits to main since this release

This is a major release with new features, improvements and bug fixes across the libraries. It includes breaking changes, which are listed below.

Overview Table

Algorithm C++ Go Java
Laplace mechanism
Gaussian mechanism
Count
Sum
Mean
Variance
Quantiles
Automatic bounds approximation
Truncated geometric thresholding
Laplace thresholding
Gaussian thresholding

Note: All features not mentioned in the release notes are considered experimental for this release. In particular, the accounting library, the stochastic testing API in C++, and the PostgreSQL extension are experimental and likely to change or be removed in the future.

Changes since the 1.1.2 release

C++

New features:

  • Add confidence intervals for mean.

Breaking changes:

  • Removed budget fraction for DP algorithms; use absolute privacy budgets during initialization instead.
  • The semantics of ApproxBounds budget has changed. A DP algorithm now consumes at most the given epsilon and delta. If the DP algorithm uses ApproxBounds internally, the algorithm splits the budget.

New deprecations (not yet removed, but users should migrate):

  • Deprecated BoundedStandardDeviation; use BoundedVariance instead.
  • Use absl::Status instead of our own soft fork.

Java

New features:

  • Implement discrete Laplace noise generator.
  • Implement automatic approximate DP bounds calculation.

Go

New features:

  • Allow setting equal lower and upper bounds for BoundedSum contributions.
  • Improved error reporting.

Breaking changes:

  • Return errors instead of log.Fatal/Exit'ing. This changes the function signatures, so the errors now have to be handled or ignored.
  • Rename BoundedMeanFloat64 to BoundedMean.
  • Disable defaults for MaxPartitionsContributed.
  • Disallow using 0 or very small epsilon for Gaussian noise.

Privacy on Beam:

New features:

  • Public partitions improvements:
    • Support public partitions for DistinctPerKey.
    • Support in-memory public partitions for all aggregations.
    • Faster public partitions for Count & DistinctPrivacyID when public partitions are a PCollection (i.e. not in-memory).
  • Clamp negative counts to 0 for DistinctPrivacyID.
  • Improve error reporting.
  • Depends on GitHub for the Go DP Library dependency instead of the local version.

Breaking changes:

  • Disallow equal bounds for MeanPerKey.