Skip to content

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 11:28
· 10 commits to master since this release

Added

  • New documentation site at libqif.chatzi.org, with one page per module.
  • qif.lp: HiGHS solver.
  • method argument in channel.factorize, channel.left_factorize ("lp", "subgrad") and metric.kantorovich ("lp", "fastemd").
  • bayes_vuln.mult_capacity_bound_cap in python.
  • metric.manhattan in python, rat support in metric.l1, total_variation, convex_separation(_quasi), kantorovich, from_distance_matrix and to_distance_matrix.

Changed

  • metric.euclidean(uint) and metric.discrete(uint) return distances of the default type (rat after set_default_type(rat), previously always double).
  • qif.lp: the default solver is CLP (instead of GLOP), and HiGHS for interior point.
  • qif.metric: the combinators work for metrics on any domain.
  • channel.hyper removes zero-probability columns, bayes_risk.mult_leakage returns inf for zero posterior risk.
  • Python: more consistent argument names.
  • Upgraded Armadillo to 15.6.2 and OSQP to 1.0.0. CMake 4 works without extra flags.
  • Tests are in python (tests/, pytest), tests_cpp only covers C++ internals (LP/QP solvers, equal).

Removed

  • C++: refinement::refined_by(A, B, G), use refined_by(A, B, G, R) instead.
  • C++: metric::threshold_bin.

Fixed

  • mechanism.l_risk ignored n_guesses.
  • Windows: functions using linear system solving (channel.factorize with the subgradient method, left_factorize for large channels, mechanism.d_privacy.tight_constraints) failed, the wheels were built without LAPACK.
  • rat infinity (e.g. bayes_risk.mult_capacity of channels with zero risk) was 2^31-1 on Windows, 2^63-1 elsewhere.
  • channel.left_factorize failed for matrices with 1000 or more elements (and channel.factorize with col_stoch using the subgradient method).
  • channel.iterative_bayesian_update and channel.posteriors silently computed in double for rat arguments, unless all optional arguments were given.