Skip to content

Releases: zama-ai/concrete

v2.8.1

30 Sep 13:40
Compare
Choose a tag to compare

Summary

Concrete 2.8.1 introduces a major new feature the interoperability between Concrete and TFHE-rs, combining the strengths and features of both libraries. While Concrete is optimized for fast computation on small integer DAGs, TFHE-rs supports integers of arbitrary size but with slower performance. This release provides a bridge between the two, allowing developers to benefit from both libraries' capabilities.

Additionally, Concrete modules has been improved. Previous versions of modules required complex setup of the optimal composition rules and input-sets, in Concrete 2.8.1, an automatic module tracing feature allows the compiler to automatically compute the right input-sets for each functions and compositions rules, simplifying the user experience

What's Changed

New features

Improvements

Fixes

  • Fix simulation that lead to wrong error rate in some cases by @rudy-6-4 in #1002
  • Remove unnecessary signed conversions by @umut-sahin in #1047
  • Handle tracing.trace_ciphertext operations in SimulateTFHEPass by @andidr in #904
  • Bump MLIR fork to version including extended canonicalization of tensor.insert_slice by @andidr in #836
    fix(optimizer): fix leveled noise propagation that may lead to parameters that not satisfy the p-error in modules by @aPere3, @rudy-6-4 in #933, #965
  • Convert scf.for to scf.parallel only if parallel attribute is true by @andidr in #964
  • Bad signed input tlu padding with extra bitwidth by @rudy-6-4 in #908
  • Enable simultaneous execution and simulation in mod… by @aPere3 in #1016

Other changes

Full changelog: v2.7.0...v2.8.1

Resources

v2.7.0

21 Jun 15:23
Compare
Choose a tag to compare

Summary

Concrete v2.7.0 includes several key enhancements and new features:

  • GPU backend: Concrete comes for the first time with a GPU wheel! To facilitate this, we have set up a public Zama PyPI repository at https://pypi.zama.ai/. Here, you can find stable, release candidate (rc), and nightly wheels for both CPU and GPU.

  • Module optimizations: FHE modules have been improved. Users can now describe the wiring between module functions, allowing for better compilation and optimization of complex programs.

  • New features and fixes: As with all new Concrete releases, this version introduces several new features, including fancy indexing, dynamic assignement/indexing, overflow detection in simulation and some bug fixes.

What's Changed

New features

Improvements

Fixes

Resources

Concrete v2.6.2

17 May 06:39
b78417b
Compare
Choose a tag to compare

Fixes

  • fix(compiler): Type inference rewriter: Fix use-after-free in function renaming by @andidr
  • fix(compiler): increases deserialization limit for values by @aPere3

Full Changelog: v2.6.0...v2.6.2

v2.6.0

08 Apr 15:43
Compare
Choose a tag to compare

Summary

Concrete v2.6 introduces support of faster operators (approximate rounding, ternary operator, relu and sign), compression features, extended support of function composition, and as well bug fixes.

What's Changed

New features

  • feat(frontend-python): Introduces fhe.identity and fix scalar squeeze by @umut-sahin in #696
  • feat(frontend-python): Additional Pre and Post Processors by @umut-sahin in #721, #727
  • feat(frontend-python): approximate for round_bit_pattern by @rudy-6-4 in #710
  • feat(compiler): support multi-circuit compilation by @aPere3 in #705
  • feat(frontend-python): Beta version of multi circuits by @aPere3 in #724
  • feat(frontend-python): random inputset generator by @umut-sahin in #730

Improvements

Fixes

  • fix(compiler): fix mac arm exception propagation by @aPere3 in #697
  • fix(compiler): fix double free on aliased outputs by @aPere3 in #711
  • fix(compiler): Guard decompression of seeded keys by @rudy-6-4 in #691
  • fix(compiler): Do not omit assignment of optimizer ID to FHE.reinterpret_precision by @andidr in #729
  • fix(compiler): Preserve explicit optimizer partition frontiers for TFHE circuit parametrization by @andidr in
  • fix(compiler): Handle tensor.empty in the pass that lower tfhe to the simulation code by @BourgerieQuentin in #760
  • fix(frontend-python): Keep negative values inside tlus as is. by @umut-sahin in #765
  • fix(frontend-python): round_bit_pattern, prevent exactness argument misuse by @rudy-6-4 in #759

Other changes

Full Changelog: v2.5.1...v2.6.0-rc2

Resources

v2.5.0

23 Jan 10:59
Compare
Choose a tag to compare

New features

Refactors

  • TFHE-rs integration
  • HPX integration

Bug fixes

  • Memory usage of table generation is improved

Commit log

  • Fix/compiler optimizer bad signed dot by @rudy-6-4 in #578
  • fix(optimizer): multi-parameters, shorter_dump for the compiler --dis… by @rudy-6-4 in #579
  • docs: adding a Game of Life example by @bcm-at-zama in #569
  • fix(optimizer): multi-parameters, DEBUG, display reason for lower bound by @rudy-6-4 in #583
  • feat(optimizer): multi-parameters, direct variance and cost operation… by @rudy-6-4 in #581
  • woppbs simulation by @youben11 in #580
  • refactor(frontend-python): reduce memory usage for table construction of non-multi table lookups by @umut-sahin in #584
  • Docs: Statistics by @umut-sahin in #586
  • fix(backend): fix boolean rounding in woppbs simulation by @youben11 in #589
  • Support linalg.generic in the MANP analysis by @youben11 in #571
  • feat(frontend-python): implement dumping/loading of auto rounders by @umut-sahin in #596
  • docs(frontend): add FHE workarounds by @aquint-zama in #588
  • Fix: Key Value Database Example by @umut-sahin in #599
  • fix(frontend-python): convert rounding to tlu when necessary by @umut-sahin in #595
  • chore(frontend-python): push docker images on releases by @umut-sahin in #597
  • chore(ci): add markdown link check by @aquint-zama in #398
  • chore(ci): markdown link check by @rudy-6-4 in #600
  • chore(deps): bump actions/checkout from 2 to 4 by @dependabot in #559
  • feat(frontend-python): create multivariate extension by @umut-sahin in #594
  • feat(optimizer): multi-parameters, variance and cost value and coeffi… by @rudy-6-4 in #585
  • fix(concrete-cpu): fix rust lint error by @aPere3 in #602
  • fix(front-end-python): ci, duplicated shared lib by @rudy-6-4 in #604
  • Integrates concrete-protocol in compiler and client/server lib by @aPere3 in #493
  • test(frontend-python): add tests of assigning circuit.keys by @umut-sahin in #610
  • feat(compiler): Support multi-output by @BourgerieQuentin in #470
  • fix(compiler): Force linking of libomp with libstdc++ in debug builds by @andidr in #615
  • Feat: np.minimum & np.maximum by @umut-sahin in #613
  • test(compiler): Add retry for fixing some flaky tests by @BourgerieQuentin in #611
  • refactor(frontend/python): improve basic implementation of game of life example by @umut-sahin in #617
  • fix noise in woppbs by @samcrx in #592
  • test(frontend/python): use hinting instead of multiple outputs to test semi-optimized min/max by @umut-sahin in #620
  • feat(frontend/python): process graph in place before MLIR conversion by @umut-sahin in #619
  • fix(frontend-python): hint correct node when it's used after assignment by @umut-sahin in #622
  • fix(compiler): print parameters correctly in the bindings by @umut-sahin in #623
  • feat(frontend-python): make it possible to query maximum bit-width of… by @umut-sahin in #624
  • chore(ci): Update m6i to m7i by @BourgerieQuentin in #625
  • chore(frontend-python): typo in fhe_basics.md by @bcm-at-zama in #626
  • Feat/new ops compiler by @rudy-6-4 in #614
  • fix(frontend-python): assigning signed values to unsigned tensors by @umut-sahin in #627
  • feat(frontend-python): add truncate bit pattern extension by @umut-sahin in #628
  • chore(compiler): fix capnp build step requiring network by @aPere3 in #631
  • Main bench fix by @BourgerieQuentin in #634
  • fix(frontend-python): use more strict inputset to fix a flanky test by @umut-sahin in #636
  • chore(compiler): fix broken retry for flaky tests by @aPere3 in #632
  • feat(frontend-python): fancy indexing by @umut-sahin in #640
  • docs(compiler): update the readme by @bcm-at-zama in #641
  • feat(compiler): Input compression bis by @mkmks in #605
  • Feat: Bit Extraction by @umut-sahin in #635
  • feat(frontend-python): printing assignment by @umut-sahin in #643
  • fix(frontend-python): generate correct MLIR for signed integer rounding to 1-bit by @umut-sahin in #644
  • chore(deps): bump rustix from 0.37.21 to 0.37.27 in /compilers/concrete-optimizer by @dependabot in #645
  • chore(deps): bump rustix from 0.37.21 to 0.37.27 in /backends/concrete-cpu/noise-model by @dependabot in #646
  • chore(deps): bump rustix from 0.37.21 to 0.37.27 in /backends/concrete-cpu/implementation by @dependabot in #648
  • chore(ci): bump actions/setup-python from 4 to 5 by @dependabot in #630
  • chore(ci): bump actions/download-artifact from 3 to 4 by @dependabot in #637
  • chore(ci): bump actions/upload-artifact from 3 to 4 by @dependabot in #638
  • chore(ci): bump dawidd6/action-download-artifact from 2 to 3 by @dependabot in #639
  • chore(ci): bump tj-actions/changed-files from 32 to 41 by @dependabot in #649
  • Fix flaky python test by @BourgerieQuentin in #651
  • fix(backend/cpu): Fix the size of the expanded lut in woppbs case of … by @BourgerieQuentin in #650
  • chore(backend/frontend): Fixing formatting... by @BourgerieQuentin in #652
  • feat(frontend-python): activate local env using make by @rudy-6-4 in #647
  • chore(concrete_cpu): fix nightly feature which was not forwarded to TFHE-rs by @IceTDrinker in #654
  • feat(optimizer): add support for weak function composition by @aPere3 in #629
  • Support for [Multi-]GPU in CP by @antoniupop in #544
  • Antoniu/fix distributed by @antoniupop in #633
  • chore: using fhe.bits() feature in Game of Life example by @bcm-at-zama in #655
  • fix(optimizer): accept composable for v0-no-dag and woppbs by @rudy-6-4 in #660
  • fix(frontend-python): some tests are broken due to compiler bug by @rudy-6-4 in #618
  • fix(frontend-python): ensure shift strategies coverage by @rudy-6-4 in #658
  • refactor(compiler/frontend): Rename option to compress_evaluation_keys by @BourgerieQuentin in #659
  • fix(compiler/benchmark): Use default compiler options for default com… by @BourgerieQuentin in #661
  • docs(compiler): fix readme by @aquint-zama in #662

New Contributors

Full Changelog: v2.4.0...v2.5.0

Concrete v2.4.0

02 Oct 14:33
Compare
Choose a tag to compare

What's Changed

  • feat: Multi Precision Bitwise by @umut-sahin in #558
  • feat(frontend-python): support dynamic table lookups by @umut-sahin in #566
  • feat: various performance improvements up to 5x in some cases
  • docs(frontend-python): update outdated warning in simulation docs by @umut-sahin in #565
  • fix: Uncaught error on building statistics make the compilation crash by @umut-sahin in #568

Internal

  • feat/optimizer/key sharing by @rudy-6-4 in #555
  • chore(frontend-python): remove optimization goal from z3 by @umut-sahin in #567
  • feat(compiler): adds support for dynamic luts in fhelinalg by @aPere3 in #563
  • chore(ci): Tag nightly on the public githut repository by @BourgerieQuentin in #543
  • fix(frontend-python): update bad static indexing tests to use a constant inputset for consistent errors by @umut-sahin in #576
  • fix(frontend-python): Makefile, default value for COMPILER_BUILD_DIRE… by @rudy-6-4 in #573
  • fix(frontend-python): Makefile, portability 'source' by @rudy-6-4 in #572

Full Changelog: v2.3.0...v2.4.0

Concrete v2.3.0

15 Sep 06:15
Compare
Choose a tag to compare

What's Changed

  • feat(frontend-python): Introduce fhe.hint to allows the end user to specify the operation bit width by @umut-sahin in #542

  • feat(frontend-python): Improve performance on comparison operators by using multi-precision by @umut-sahin in #549

  • docs(frontend-python): Improve comparisons tutorial by @umut-sahin in #556

  • feat(compiler): Add to the compiler feedback the estimated memory footprint per location by @youben11 in #538

  • feat(compiler): Expose more compilation options to the python bindings by @youben11 in #552

  • feat(optimizer): Improve optimization of levelled only circuit by removing the power of two constraint on lwe size by @rudy-6-4 in #541

  • fix(compiler): Fixing the lowering of fhe.zero to tfhe with crt encoding by @youben11 in #548

  • fix(optimizer): Fixing woppbs cost model by @rudy-6-4 in #540

  • fix(compiler): Disable high error warning when an explicit global_p_error is set by @rudy-6-4 in #511

  • fix(compiler): do not optimize llvm twice by @rudy-6-4 in #502

  • feat(compiler): Allow arbitrary integer bit width of the apply lookup table operator by @aPere3 in #554

Internal

  • feat(concrete-cuda): Add multiplication of radix encoded integers by @bbarbakadze in #547
  • refactor(compiler): clean statistic passes by @youben11 in #551
  • chore(compiler/benchmark): Activate levelled + cifar-16 benchmark by @rudy-6-4 in #553
  • fix(compiler): ci, format_cpp.sh, bug + better message by @rudy-6-4 in #557
  • fix(compiler): Use FHE.zero_tensor instead of bufferization.alloc_ten… by @BourgerieQuentin in #561
  • refactor(compiler): Interfaces to generalize noise calculation in FHE/FHELinalg ops by @mkmks in #416

New Contributors

Full Changelog: v2.2.0...v2.3.0

Concrete v2.2.0

14 Sep 07:40
Compare
Choose a tag to compare

What's Changed

Features

  • feat(frontend-python): Support of len by @umut-sahin in #534
  • feat(frontend-python/compiler): Enable multi precision for encrypted multiplication in order to have a finer optimization in multi parameters by @umut-sahin in #535
  • feat(frontend-python): Enable multi precision and multi parameters by default by @umut-sahin in #483

Internal changes

  • test: Add a workflow to validate Concrete using Concrete ML tests #531 in #537 #539
  • chore(optimizer): Update for nightly rust linting by @rudy-6-4 in #533
  • test(frontend-python): Remove the high p_error in graph evaluation tests to avoid Concrete Python flaky tests by @BourgerieQuentin in #532
  • chore(backend-gpu): changes the mutability of cuda streams in the rust api by @pdroalves in #536

New Contributors

Full Changelog: v2.1.0...v2.2.0

Concrete v2.1.0

02 Aug 14:54
Compare
Choose a tag to compare

Summary

Concrete v2.1.0 brings some important fixes, along with a couple of features improving its usability

Features

  • Report Python line causing compilation erros #509 #514
  • New options to enable verbose/debug mode in the Compiler #525
  • Statistics about the compiled circuit #526

Fixes

  • Simulation when using simple assignment #516
  • Simulation when using multi parameters #518
  • Compilation of full encrypted dot and matmul operators in multi parameters #522

Full Changelog: v2.0.0...v2.1.0

Concrete v2.0.0

01 Aug 15:14
Compare
Choose a tag to compare

Summary

Concrete v2.0.0 brings significant enhancements and new features, along with a few minor yet essential changes

⚠️ BREAKING ⚠️ to upgrade from concrete-python v1 to v2 please see the Upgrading notes.

Features

  • More accurate simulation
  • Separate arguments
  • Multi parameters optimization
  • Rounding operator
  • Progressbar

You can read more about it in the release blog post