Skip to content

Latest commit

 

History

History
194 lines (141 loc) · 6.15 KB

CHANGELOG.rst

File metadata and controls

194 lines (141 loc) · 6.15 KB

Changelog

Not released

v0.6.0 (2024/09/03)

  • Breaking change parameter names l to traces for many functions.
  • Breaking remove unnecessary parameters from initializers (e.g. trace length where it can be inferred).
  • Fix misc. SASCA bugs with PUB, additions, generic factors

v0.5.8 (2024/05/21)

  • Add scalib.preprocessing.Quantizer for conversions of floating-point traces to int.
  • Support modular subtractions (generalized summation) in FactorGraph.
  • Raise minimum supported python version to 3.9.

v0.5.7 (2024/03/18)

  • scalib.attacks.FactorGraph:

    • Add GENERIC factors
    • Add clear beliefs flag for BP.
    • Remove divisions in belief propagation (improves numerical robustness, fixes some NaN issues).
  • Support python 3.12 in releases.

v0.5.6 (2023/06/08)

  • Add scalib.modeling.RLDAClassifier and scalib.metrics.RLDAInformationEstimator.
  • Fix build dependences and run build in an isolated environment.

v0.5.5 (2023/05/30)

  • Fix Distribution size bug in belief propagation computation (#102).
  • Do not include debug symbols in release builds (makes wheel much smaller).
  • Ttest: do not crash on non-contiguous/fortran-order arrays
  • Improve examples and README

v0.5.4 (2023/04/26)

  • Run CI on Mac Os and build wheels (x86_64 and arm64, but we test only x86_64). No AVX2 due to old runner in github CI.
  • Add scalib.tools.ContextExecutor, as a solution to LookupError in get_config().
  • Fix numerical underflow in BPState when multiple traces are used.
  • Fix missing import in MultiLDA.
  • Run BPState methods on the threadpool.
  • Make threadpool initalization lazy -- makes SCALib play more nicely with ProcessPoolExecutor.

v0.5.3 (2023/02/21)

  • Add vars and factors methods on FactorGraph.
  • Add fg property on BPState.
  • Fix bug in belief propagation. Numerical instabilities could lead to negative probabilities for AND (and probably XOR and ADD) factors.

v0.5.2 (2023/02/17)

  • Restructure and expand generated docs.
  • Refactor doc generation.
  • Change docs style.

v0.5.1 (2023/02/16)

  • Fix bug in rank_estimation.
  • Improve documentation and README.
  • Run rust tests.
  • Better selection of default threadpool size.

v0.5.0 (2023/02/08)

  • Deprecate SASCAGraph in favor of the new FactorGraph which provides:

    • Overall much less restrictions on operations, including suport for:

      • non-bijective tables
      • multiple public operands
      • NOT gate
    • A sanity_check feature: verify that the graph is compatible with known value assignment (useful for debugging a graph).

    • Optimized bitwise AND: O(nc*log(nc)) instead of O(nc^2).

  • Re-design scalib.config to handle more configuration in a single Config class. Breaking change to scalib.config and scalib.config.threading.

  • Smarter behavior for progress bars, unified configuration for progress bar. Breaking change to scalib.attack.SASCAGraph.

  • Add accessors for the internal state of the LDA.

  • Introduce the scalib.ScalibError exception and remove scalib.metrics.SnrError (Breaking change).

  • Improve error reporting in case of LDA solving error.

  • Allow all computations to be interrupted with Ctrl-C.

  • Fix deadlock when there is an error in large SNR computations (i.e., when n_vars*n_samples*n_traces > 2**33).

  • Allow LDA to behave like simple pooled gaussian templates (#22).

  • Refresh build system (Tox version 4, improved CI), build by default with native machine optimizations.

  • Not crash anymore on non x86-64 CPUs (no CI for those yet).

v0.4.3 (2022/10/27)

  • Upgrade CI to 3.11.
  • Update dependancies and add python 3.10 to CI (#49)

v0.4.2 (2022/05/31)

  • Fix AVX2 not used when building rust dependencies.

v0.4.1 (2022/05/31)

  • Fix docs not building

v0.4.0 (2022/05/31)

  • SASCA: support modular ADD and MUL operations (#18)
  • TTest: Performance improvement by using a mix of 2 passes and 1 pass algorithms
  • MTTest: First implementation of multivariate T-test.
  • Improved documentation and README.rst
  • SNR: use pooled formulas for better correctness then there are few traces, saves RAM (up to 75% reduction) and improves perf (about 2x single-threaded).
  • Bump python minimum version to 3.7
  • Revamp multi-threading handling thanks to new scalib.threading module.
  • AVX2: Wheels on PyPi are built with AVX2 feature.

v0.3.4 (2021/12/27)

  • Release GC in SASCA's run_bp .
  • Release GC in rank_accurary and rank_nbin.
  • LDA.predict_proba is marked thread-safe.
  • Hide by default the progress bar of SASCAGraph.run_bp (can be re-enable with the progress parameter).

v0.3.3 (2021/07/13)

  • Solving minor issues in MultiLDA and LDAClassifier. Allowing multiple threads in predict_proba() and add a done flag to solve().

v0.3.2 (2021/07/12)

  • Chunk SNR.fit_u to maintain similar performances with long traces and adding a progress bar

v0.3.1 (2021/06/03)

  • Add max_nb_bin parameter to postprocessing.rank_accuracy (that was previously hard-coded).

v0.3.0 (2021/06/01)

  • Rename num_threads parameter of modeling.MultiLDA to num_cpus.
  • Fix rank estimation when there is only one key chunk.
  • Improve performance of SNR.get_snr.

v0.2.0 (2021/05/20)

  • Remove OpenBLAS and LAPACK, use Spectra and nalgebra instead.
  • Use BLIS for matrix multiplications (Linux-only for now).
  • Make modeling.LDAClassifier incremental (breaking change).
  • Add modeling.MultiLDA.

v0.1.1 (2021/04/26)

  • Fix "invalid instruction" bug for CI wheel on windows.

v0.1.0 (2021/04/16)

  • Initial release, with the following features: * LDA and Gaussian templates modeling * SNR * T-test any order (for TLVA) * Soft Analytical Side-Channel Attack (SASCA) * Rank Estimation