Skip to content

Releases: columbia/pdslib

v0.3 - Big Bird

09 Jun 13:32

Choose a tag to compare

This release implements the Big Bird algorithm, described in our preprint. Big Bird is a privacy management layer that operates on top of the individual privacy loss accounting layer. It introduces a shared global budget to maintain strong privacy guarantees against colluding sites, and a system of quota filters to regulate how sites can deplete the global budget. Big Bird also exposes an experimental batch API that uses a fair scheduler that improves utilization while maintaining isolation. Together, these mechanisms establish a robust foundation for enforcing privacy protections in adversarial environments.

What's Changed

  • Add URIs to Event and Report APIs by @giorgi-o in #31
  • PDS refactor - Terminology alignments with CM 3.3 by @mychern in #35
  • Implementing logging infrastructure by @arcaulfield in #36
  • Implement c/nc/q-conv filters by @giorgi-o in #37
  • Added filtering of relevant events based on URIs by @mychern in #40
  • Add event metadata relevancy check by PPA by @mychern in #42
  • Add QSource filter by @mychern in #43
  • Fix tests, and a few QoL cleanups by @giorgi-o in #50
  • Adjusted individual sensitivity to be per epoch-site by @mychern in #51
  • Simplify PpaEvent interface by @mychern in #52
  • Harmonize source terminology and fix epoch-source budgeting by @tholop in #53
  • Simple 2p-commit to check remaining budget before consumption. If not enough, enable rollback. by @mychern in #59
  • is_matching_event can be closure with captured variables by @giorgi-o in #60
  • Some type improvements and simplifications by @tholop in #62
  • Refactor PdsReport and PdsFilterStatus by @tholop in #65
  • Add some serialization and Pure DP budget constructors by @tholop in #69
  • Intermediary sites queries optimizations by @mychern in #68
  • Do not specify patch version in Cargo.toml by @giorgi-o in #73
  • PPA: Make URIs generic, instead of hard-coded to String by @giorgi-o in #74
  • Simplify HashMapFilterStorage generics by @giorgi-o in #75
  • Histogram refactor by @tholop in #76
  • Refactor the pds module by @tholop in #77
  • Factor out PDS-core (without EventStorage) from PrivateDataService by @giorgi-o in #81
  • Simplify PureDPBudget type and filter arithmetic #79 by @arcaulfield in #82
  • Clone refactoring by @mychern in #84
  • Create RelevantEvents struct to store relevant events by @giorgi-o in #83
  • Replace (almost) all uses of usize with u64 by @giorgi-o in #85
  • Some small QOL fixes by @giorgi-o in #86
  • Simplify FilterStorage trait by @giorgi-o in #87
  • Make Ppa type aliases uri-customisable by @giorgi-o in #88
  • Implement batching algorithm and release filter by @giorgi-o in #89
  • Rename filters to match the paper's terminology by @giorgi-o in #92
  • Add Big Bird reference by @tholop in #93
  • Experimental flags - debug-reports by @mychern in #91
  • Implement cross-report privacy loss optimization with attributionObject API by @giorgi-o in #95

Full Changelog: v0.2...v0.3

v0.2 - Cookie Monster

21 Feb 00:59
19eee21

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.1...v0.2

v0.1

22 Jan 19:49
3fa1c66

Choose a tag to compare

Changes

  • Expose API for passive privacy loss
  • Create a new HistogramRequest trait, which is a simplified interface allowing queries to issue generic histogram queries. Given a type that implements HistogramRequest, pdslib automatically implements other methods such as compute_report and get_single_epoch_individual_sensitivity. This trait has arbitrary functions to select events, attribute value across events and map events to histogram bins
  • Create a new AraHistogramRequest type that implements HistogramRequest. It roughly mimics how ARA works with source keypiece, trigger keypiece and filters (although filters remain to be implemented). This also required a new AraEvent type, which is another type implementing Event (in addition to the existing SimpleEvent)
  • Refactor the default in-memory event storage, now called HashMapEventStorage
  • Improve event selection with a new RelevantEventSelector trait. Previously we had a type with a lambda function, but it was hard to use it with closures, e.g. if the body of the lambda function wants to refer a string owned by the request. Now we can store state in the type implementing RelevantEventSelector, and the method is_relevant_event can access this state.
  • Rename Query to ReportRequest
  • Testing, documentation, formatting and other fixes

Auto-generated recap below

Pull requests

  • Adding type constraints to PrivateDataService to resolve build failure by @arcaulfield in #1
  • Implement a simple Last Touch Attribution function by @arcaulfield in #2
  • Basic individual sensitivity computation changes by @mychern in #3
  • Refactoring by @tholop in #4
  • Implemented functionality to filter for relevant events by @arcaulfield in #5
  • Histogram and requests by @tholop in #7

New Contributors

Full Changelog: https://github.com/columbia/pdslib/commits/v0.1