concrete

Concrete: TFHE Compiler that converts python programs into FHE equivalent

OTHER License

Downloads
5K
Stars
1.1K
Committers
46

Bot releases are hidden (Show)

concrete - v2.6.0 Latest Release

Published by BourgerieQuentin 6 months ago

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

Improvements

Fixes

Other changes

Full Changelog: https://github.com/zama-ai/concrete/compare/v2.5.1...v2.6.0-rc2

Resources

concrete - v2.5.0

Published by umut-sahin 9 months ago

New features

Refactors

  • TFHE-rs integration
  • HPX integration

Bug fixes

  • Memory usage of table generation is improved

Commit log

New Contributors

Full Changelog: https://github.com/zama-ai/concrete/compare/v2.4.0...v2.5.0

concrete - Concrete v2.4.0

Published by youben11 about 1 year ago

What's Changed

Internal

Full Changelog: https://github.com/zama-ai/concrete/compare/v2.3.0...v2.4.0

concrete - Concrete v2.3.0

Published by youben11 about 1 year ago

What's Changed

Internal

New Contributors

Full Changelog: https://github.com/zama-ai/concrete/compare/v2.2.0...v2.3.0

concrete - Concrete v2.2.0

Published by BourgerieQuentin about 1 year ago

What's Changed

Features

Internal changes

New Contributors

Full Changelog: https://github.com/zama-ai/concrete/compare/v2.1.0...v2.2.0

concrete - Concrete v2.1.0

Published by youben11 about 1 year ago

Summary

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

Features

Fixes

Full Changelog: https://github.com/zama-ai/concrete/compare/v2.0.0...v2.1.0

concrete - Concrete v2.0.0

Published by BourgerieQuentin about 1 year ago

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

concrete - Concrete v1

Published by youben11 over 1 year ago

Summary

First public release of Concrete TFHE Compiler.

⚠️ BREAKING ⚠️
All versions prior to v1 refers to the Rust implementation of TFHE, now available in TFHE-rs.
For users of concrete-numpy see the Upgrading notes to see how you should update your code to make it work with concrete-python.

Links

Docker Image: zamafhe/concrete-python:v1.0.0
PyPI Package: https://pypi.org/project/concrete-python/1.0.0/

v1.0.0

(compared to concrete-numpy v0.11.1)

Breaking Changes

  • Python 3.7 support is dropped
  • concrete.numpy namespace is renamed to concrete.fhe
  • concrete.onnx namespace is moved to concrete.fhe
  • Virtual option is removed, all circuits must be compiled now, and then they can be simulated without encryption using the simulate method.
  • Dataflow parallelization is disabled by default as it’s not available on macOS yet. You can manually enable it using dataflow_parallelize=True configuration option on Linux.

Feature

  • Native Apple Silicon support
  • Explicit Key Management interface
  • Branching Detection Mechanism for good error messages instead of unexpected execution
  • Ciphertext Multiplication
  • Maximum Pooling

Fixes

  • (De)serialization of PublicArgs for some big bit-width circuits is fixed
  • Crash on macOS is fixed
concrete - concrete-boolean 0.2.0

Published by tmontaigu almost 2 years ago

Added

  • Support for accelerating the bootstrap via GPU (cuda).

Changed

  • Replaced fftw with concrete-fft
  • Updated concrete-core dependency to 1.0.0
concrete - concrete-integer 0.1.0

Published by tmontaigu almost 2 years ago

Added

  • Crt functions (sub, neg, scalar_add, scalar_sub, scalar_mul)
  • Parallelized Crt functions (_parallelized function of ServerKey)
  • Parallelized Radix functions (_parallelized function of ServerKey)
  • Initial support for aarch64 (requires nightly)
  • Look Up Table (LUT) generation and evaluation via WoP-PBS for all supported representations

Changed

  • Replaced fftw with concrete-fft
  • Improved API (Breaking changes):
    • Split the Ciphertext struct into two structs RadixCiphertext and CrtCiphertex.
    • Added RadixClientKey and CrtClientKey (The more general ClientKey still exist)

Removed

  • TreePBS related functions and structures.
concrete - concrete-shortint 0.1.0

Published by tmontaigu almost 2 years ago

Added

  • Initial support for aarch64 (requires nightly)
  • Look Up Table (LUT) generation and evaluation via WoP-PBS for all supported representations

Changed

  • Replaced fftw with concrete-fft
  • Replaced concrete-core-experimental dependency with concrete-core 1.0.0

Removed

  • TreePBS related functions and structures.
concrete - concrete 0.2.0

Published by tmontaigu almost 2 years ago

Added

  • Crt representation for integers (8 bits +)
    (Breaking Change for the parameters of Dynamic Integers).
  • Univariate and bivariate function evaluations for integers (8 bits +)
  • Initial support for aarch64 targets (requires nightly rust)

Changed

  • Replaced fftw with concrete-fft

  • Updated concrete-boolean dependency to 0.2.0

  • Updated concrete-shortint dependency to 0.1.0

  • Updated concrete-integer dependency to 0.1.0

concrete - Concrete Core V1.0.0-beta

Published by agnesLeroy over 2 years ago

Public features:

  • Breaking change: serde becomes an optional dependency
  • Breaking change: cleartext_vector_encoding_unchecked name is fixed (the vector word was missing in the name)
  • Breaking change: the name of all public engines involving "negation" are renamed to use "opposite" instead, "negate" into "compute_opposite", "neg" into "opp"
  • Implement the fuse_sub_lwe_ciphertext, discard_sub_lwe_ciphertext, fuse_add_lwe_ciphertext_vector, discard_add_lwe_ciphertext_vector, fuse_sub_lwe_ciphertext_plaintext, discard_sub_lwe_ciphertext_plaintext, fuse_sub_lwe_ciphertext_vector, discard_sub_lwe_ciphertext_vector engines in CoreEngine
  • Add entities for GGSW ciphertexts in the Fourier domain, and implement them in the core backend
  • Implement conversion engines to convert a GGSW from the standard to the Fourier domain in CoreEngine
  • Implement the GGSW encryption trait in CoreEngine
  • Implement the external product between a GLWE and a GGSW ciphertext in CoreEngine
  • Add GlweCiphertextTrivialEncryptionEngine and GlweCiphertextTrivialDecryptionEngine traits and their implementation in CoreEngine
  • Add GlweCiphertextVectorTrivialEncryptionEngine and GlweCiphertextVectorTrivialDecryptionEngine traits and their implementation in CoreEngine
  • Add LweCiphertextTrivialEncryptionEngine and LweCiphertextTrivialDecryptionEnginetraits and their implementation inCoreEngine`
  • Add LweCiphertextVectorTrivialEncryptionEngine and LweCiphertextVectorTrivialDecryptionEnginetraits and their implementation inCoreEngine`
  • Add an error for unsupported polynomial size in CoreEngine
  • Implement the conversion of GLWE ciphertexts from the standard to the Fourier domain in CoreEngine

Internal refactoring:

  • The dependency to bincode is removed
  • A new companion library containing generic fixtures for the concrete-core operators is added. This fixture allows to sample and test any implementation of an engine trait.
  • A new companion library using the generic fixtures to systematically test the public engines for all backends is added.

Bug fixes:

  • When generating large bootstrap keys, we used to reach the bounds of the generator. This is due to the rejection sampling algorithm used to sample gaussian variates: we did not provision enough randomness to generate one sample (86) bytes. We now provision (832) bytes, which solves the issue.
  • The CoreEngine implementation of the LweCiphertextDiscardingDecryptionEngine contained a bug. The decryption was added to the output, while it is supposed to be a discarding operation.

Links

concrete - Concrete Npe V0.2.1

Published by agnesLeroy over 2 years ago

Bug fixes:

  • several functions used to return a variance that was not scaled, they now return a scaled variance as expected
  • fix bug in estimate_modulus_switching_noise_with_binary_key: the formula was outputting a variance scaled on the ciphertext modulus after the modulus switch, but for consistency between formulas it was changed to return a variance scaled on the ciphertext modulus before the modulus switching.
concrete - Concrete Commons V0.2.0

Published by agnesLeroy over 2 years ago

Public features:

  • Breaking change: serde becomes an optional dependency
  • New types PolynomialSizeLog, LutCountLog and ModulusSwitchOffset added
concrete - Concrete Core V1.0.0-alpha

Published by aPere3 over 2 years ago

Public features:

  • A new modular API was added on top of concrete-core. This new API allows different backends (which use different hardwares or acceleration libraries) to collaborate in the same code-base. The concrete scheme was completely specified in a specification module, using an collection of traits. A backend implementing a part of this specification was added in the backends module, under the name of core.
  • concrete-core supports now more sizes for polynomials. The following sizes are now supported: 128, 256, 512, 1024, 2048, 4096, 8192 and 16384.
  • the core backend now exposes functions to retrieve values from a cleartext or a plaintext, or their vector counterparts (these values may be of arbitrary type)

Internal refactoring:

  • the bootstrap key has ceased to contain some FFT buffers, which have been moved at the CoreEngine level

Bug fixes:

  • Fix the doc link in Cargo.toml (#84)
  • Add missing links to the readme (#84)

Check our community update about the release here.

concrete - Concrete Commons V0.1.2

Published by aPere3 over 2 years ago

Public features:

  • add ZeroKeyKind for testing purposes (#70)

Bug fixes:

  • Fix the doc link in Cargo.toml (#84)
concrete - Concrete Npe V0.2.0

Published by aPere3 over 2 years ago

Public features:

  • The public API was refactored to better reflect the concrete-core architecture (#70)
  • New formulas were added to the API (#70 )

Bug fixes:

  • Fix the doc link in Cargo.toml (#84)
  • Add missing links to the readme (#84)
  • Fix typo in 'estimate_external_product_noise_with_binary_ggsw' (#112)
concrete - Concrete V0.1.11

Published by aPere3 almost 3 years ago

Public features:

  • LWEBSK now implements Serialize and Deserialize.

Bug fixes:

  • Fix the doc link in Cargo.toml (#84)
  • Add missing links to the readme (#84)
  • Synchronize with latest version of concrete-core, concrete-npe, concrete-npe (#84)
concrete - Concrete Boolean V0.1.0

Published by damienligier about 3 years ago

Add a new crate implementing homomorphic logic gates was added to the ecosystem.

Algorithms come from TFHE's gate bootstrapping. There are two different types of keys: ClientKey which is a private key and ServerKey which is a public key used for computing homomorphic algorithms on a server. The ClientKey is used to encrypt and decrypt bits. It is possible to compute AND, OR, NAND, XOR, XNOR, NOR, NOT and MUX gates.