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: