Releases: columbia/pdslib
Releases · columbia/pdslib
v0.3 - Big Bird
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
EventandReportAPIs 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_eventcan 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
RelevantEventsstruct to store relevant events by @giorgi-o in #83 - Replace (almost) all uses of
usizewithu64by @giorgi-o in #85 - Some small QOL fixes by @giorgi-o in #86
- Simplify
FilterStoragetrait 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
What's Changed
- Type improvements by @tholop in #15
- Improve documentation by @tholop in #17
- Rust fmt edits by @bmcase in #26
- Rename variables in PPA example and make it closer to CM 3.3 by @tholop in #24
- Refactor pdslib error-handling by @giorgi-o in #28
- Remove the abstract PDS trait by @tholop in #29
New Contributors
Full Changelog: v0.1...v0.2
v0.1
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,
pdslibautomatically implements other methods such ascompute_reportandget_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_eventcan 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
- @arcaulfield made their first contribution in #1
- @mychern made their first contribution in #3
- @tholop made their first contribution in #4
Full Changelog: https://github.com/columbia/pdslib/commits/v0.1