Introducing OpenDP Library v0.5

Dear OpenDP Community,


The OpenDP team is delighted (if a bit tardy) to announce the release of OpenDP Library 0.5!

As a reminder, the OpenDP Library is a modular collection of algorithms for analyzing sensitive datasets, with a flexible and extensible approach to tracking privacy, and a vetted implementation. It can be used to build a wide range of data processing pipelines and privacy-preserving applications. The OpenDP Library is available as binaries for Python on PyPI, for Rust on, or in source form on GitHub.

This release is packed with enhancements to make the OpenDP Library more versatile and improve its robustness. The changes cover multiple aspects of the library, broadening the kinds of computations that can be performed, and making development more streamlined.

New Algorithms and Privacy Components

Our main focus in OpenDP 0.5 was on algorithm development. There are a number of new and improved components, but much of the work went into two important areas: improving the treatment of finite arithmetic (avoiding vulnerabilities in essentially all other existing DP libraries), and rationalizing the approach to noise generation (following the approach in CKS20).

  • Rewritten summary transformations and associated machinery to properly handle finate arithmetic, including variations to respect order-sensitive dataset metrics
  • Reworked Laplace and Gaussian mechanisms using floating-point-safe discrete sampling and scaling, and improved implementations of underlying samplers.
  • Added support for the discrete Gaussian mechanism. For consistency, the geometric mechanism has been renamed to the discrete Laplace mechanism.
  • New support for zero-concentrated differential privacy, with simple conversion to approximate DP in terms of ε(δ) privacy curves.
  • Improved basic composition combinator with support for an arbitrary number of measurements

Architecture and Engineering Improvements

Beyond algorithms, OpenDP Library 0.5 also features architectural enhancements and “under the hood” work to improve the foundations of the system.

  • Modification of the privacy tracking from relations to maps (thanks to Damien Desfontaines for the inspiration).

  • Modularization of the codebase for easy integration and rendering of proofs, incorporation into the PR review flow.

  • Unification of common generic traits for ease of future contributions.

  • Restructuring of the project package for easier distribution (merging to a single Rust crate).

  • Rewrite of the build system for better support for Apple silicon and Windows targets.

Communications and Community

Because this only matters if you’re able to understand how to use the OpenDP Library, we’ve also put effort into improving the breadth and depth of our developer documentation.

  • Expanded concept coverage in the User Guide.

  • New or enhanced example notebooks: membership attack, reconstruction attack, estimating accuracy, dataset resize.

  • Reworked API docs to incorporate historical versions.

  • Better coverage of the contribution process in the Developer Guide.

Give It a Whirl!

There’s more than can fit here, but that should give you a sense of the great things included in OpenDP Library 0.5! Further details, including some notes on updating your applications, can be found in the CHANGELOG.

We welcome your feedback and participation in the OpenDP Project. To learn more, please visit the OpenDP website or join our Slack workspace.



The OpenDP Team

OpenDP Twitter OpenDP Blog OpenDP GitHub