Changes in v0.43

Integer Module

  • reduce() method no longer a field of integer object, but rather a class method.
from charm.core.math.integer import *

a = integer(7, 5)
b = reduce(a)
print("a = ", a)
print("b = ", b)
  • Note that certain mixing of integer objects and Python int no longer supported. For example, integer(10, 17) * -1 will generate a runtime exception:


  • Benchmark API now part of group abstraction class which eliminates need for importing the benchmark methods.
  • Removed the ID handle returned by InitBenchmark.
  • No longer necessary to call ClearBenchmark() to clear benchmarking state.
  • Benchmarking options are strings instead of int values. That is, "RealTime", "CpuTime", "Add", "Sub", "Mul", "Div", "Exp", "Pair", and "Granular".
  • Both pairing and elliptic curve modules now support collection of granular benchmarks.


  • We have deprecated the use of Pickle as a primary serilization method. Pickle contains a serious vulnerability that could lead to arbitrary code execution. It has been replaced by a safer implementation based on JSON module.
  • For backwards compatibility, the Pickle methods are still available, but we output a warning that it is vulnerable. The Pickle methods are now objectToBytesWithPickle and bytesToObjectWithPickle.