DP Lib v2.0.0
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 usesApproxBounds
internally, the algorithm splits the budget.
New deprecations (not yet removed, but users should migrate):
- Deprecated
BoundedStandardDeviation
; useBoundedVariance
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
andupper
bounds forBoundedSum
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
toBoundedMean
. - 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 aPCollection
(i.e. not in-memory).
- Support public partitions for
- 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
.