Releases: zama-ai/concrete
v2.11.0 - GPU
v2.11.0 - CPU
Summary
Concrete v2.11 improve Concrete for Rust especially by adding the compatibility with TFHE-rs and includes some minor fixes.
The compatibility between TFHE-rs and Concrete is documented here
Full Changelog: v2.10.0...v2.11.0
Resources
- Concrete for Rust:
- Blog Post:
concrete-keygen-v0.1.0
First release of the concrete-keygen
Rust crate. Its main purpose is to provide a way to manage Concrete Keys in Rust and Wasm.
v2.10.1-rc1 - CPU
chore(ci): Add libhpx* and libomp to binaries tarball
v2.10.0 - CPU
Summary
Concrete v2.10 introduces a beta release of Concrete for Rust and includes several improvements and fixes, particularly on the concrete-python
frontend.
What's Changed
New Features
- Concrete for Rust: Introduce a concrete API in rust (1197)
- Concrete Keygen for WASM: Implement the concrete Keygen in Rust for WASM compilation (#1198)
Improvements
- TFHE-rs bridge: Enhance API by allowing creation of TFHE-rs bridge from a client (#1236, #1242, #1244)
- TFHE-rs interoperability: Enhance interoperability by supporting more conversions and TFHE-rs 132 bits gaussian parameters (#1240, #1219)
- TFHE-rs interoperability: Improve performances of tfhers_to_native and size of keys (#1218)
Fixes
Other changes
Full Changelog: v2.9.0...v2.10.0
Resources
- Concrete for Rust:
- Blog Post:
v2.9.0 - GPU
v2.9.0 - CPU
Summary
Concrete v2.9.0 introduces several enhancements, new features, and fixes. Highlights include:
- Python 3.12 support: This version is fully compatible with Python 3.12 for both CPU and GPU releases.
- Improved interoperability with TFHE-rs:
- Added support for more data types, including signed integers and tensors.
- TFHE-rs safe serialization features are now utilized to seamlessly import and export ciphertexts.
- Modules are now supported in the TFHE-rs interoperability bridge.
- Backend update: Concrete v2.9.0 uses the latest version of TFHE-rs (v0.10.0) as the backend for both CPU and GPU, benefiting from all its latest performance and feature improvements.
In addition to these key updates, this release includes further enhancements, optimizations, and bug fixes, as outlined below.
What's Changed
New Features
- TFHE-rs data type support:
- Optimization features:
- Modules in TFHE-rs bridge: Extended interoperability to support modules (#1188).
Improvements
- Backend updates: Updated CPU and GPU backends to the latest TFHE-rs version (v0.10.0) (#1154).
- Python 3.12 support: Fully supports Python 3.12 (#1114, #1126).
- Performance enhancements:
- Extended security: Added 132-bit security curves (#1174).
- Refactoring: Simplified low-level API to streamline C++ Python bindings and expose more fine-grained objects (#1078).
- Documentation: Added examples demonstrating TFHE-rs interoperability (#1151, #1190).
Fixes
- TFHE-rs interoperability:
- Noise handling: Improved noise propagation in the optimizer (#1104).
Other changes
- Full changelog: v2.8.1...v2.9.0
Resources
- Documentation:
- Blog Post:
v2.8.1
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
- Add a use-case for Levenshtein distance by @bcm-at-zama in #902
- Add a levelled case for XOR distance between one encrypted and one clear vectors by @bcm-at-zama in #928
- Add a use-case for fuzzy encrypted name comparison by @bcm-at-zama in #995
- Add Inventory Matching System tutorial by @aquint-zama in #938
- Add performance tips section by @umut-sahin in #919
- Add a tutorial with floats by @bcm-at-zama in #971
- Add a use-case for private information retrieval by @bcm-at-zama in #1040
*Introduce interoperability between TFHE-rs and Concrete by @youben11 in #1036, #915, #858, #945 - Accept clear arguments in server.run by @umut-sahin in #989
- Wire tracing by @aPere3 in #946
- Add support for np.min and np.max by @umut-sahin in #1025
- Provide an API to reset the compiler state by @umut-sahin in #1048
- Provide trivial encryption by @aPere3 in #1027
Improvements
- Documentation fixes and improvement, @yuxizama, @bcm-at-zama, @aPere3, @youben11, @umut-sahin, @BourgerieQuentin in #906, #907, #897, #901, #910, #83, #917, #930, #942, #952, #944, #948, #958, #950, #973, #986, #954, #982, #998, #1006, #1011, #1012, #1013, #1015, #1018, #1017, #1008, #1014, #1019, #1022, #1029
- Refactor test and benchmark of examples @umut-sahin in #1034, #1046, #913, #914, #975
- Improve sha1 example by @umut-sahin in #911
- Benchmark infrastructure by @umut-sahin in #937, #1053, #939
- Add sanity checks when GPU is requested by @antoniupop in #903
- Bump version of tfhe-rs and rust compiler and fixed… by @BourgerieQuentin in #927
- Add notebook tests by @bcm-at-zama in #1056
- GPU runtime optimisation by @antoniupop in #896, #943
- Release GIL on run, encrypt, decrypt for better concurrency of client applications by @rudy-6-4 in #962
- Improve errors for non-composable functions by @aPere3 in #955, #960, #1010
- Decompress ciphertext at decryption by @BourgerieQuentin in #999
- Support configuration overrides for Server.load when via_mlir is used by @umut-sahin in #985
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
-
Documentation:
-
Tutorials:
-
Blog Post:
v2.7.0
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
- Create and improve GPU backend and runtime, deliver GPU wheels by @antoniupop in #786, @youben11 in #855 #877 #879 #878 #882, @andidr in #748
- Introduce wiring API for FHE modules by @aPere3 in #771 #803 #826 #828 #845 #890 #895
- New python operators by @umut-sahin, fancy indexing and assignment in #814, dynamic indexing in #847, dynamic assignment in #867
- Overflow detection in simulation by @youben11 in #777 #846 #850
- Release concrete-python stable, rc and nightlies to new zama public pypi by @youben11 in #818 #833 #837 #838
Improvements
- Optimize extract bits by @rudy-6-4 in #769
- Improve documentation by @bcm-at-zama, @yuxizama, @aquint-zama, @youben11, @sukrucildirr and @miles-six in #780 #756 #781 #704 @bcm-at-zama in #784 #782 #794 #793 #795 #799 #791 #811 #816 #876 #834 #839 #840 #830 #835 #863 #864
- Add a new options to run in simulation mode with standard FHE flow #892
- Add option to configure tlu on original bit width by @umut-sahin in #785
- Allow concat with only one operand by @BourgerieQuentin in #805
- Add memory usage per location in statistics by @umut-sahin in #808
- Allow uncompressed ciphertext in compressed gate by @BourgerieQuentin in #860
Fixes
- Fix maxpool operator by @umut-sahin in #875
- Fix compress ciphertext + simulation in #778
- Fix key size statistics by @BourgerieQuentin in #783
- Catch-all for exceptions for error reporting by @aPere3 in #776
- Increases deserialization limit for values by @aPere3 in #789
- Decompression of evaluation keys was done several times by @BourgerieQuentin in #809
- Change input bit-width only when tlu is optimized based on original bit-width during table generation by @umut-sahin in #849
- Fix input parameter deserialization by @antoniupop in #857
- Ensures the numpy version is inferior to 2.0 by @aPere3 in #898
Resources
-
Documentation:
-
Demo & Examples:
- Adding a SHA1 tutorial with modules
-
Full Changelog: v2.6.0...v2.7.0
Concrete v2.6.2
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