Prelude
The entire C++ library has been rewritten for performance and consistency.
New Features
- New `dimod::abc::QuadraticModelBase` abstract base class.
<!-- -->
- Better performance for linear models.
<!-- -->
- Add `dimod.cyqmbase.cyQMBase_template` Cython class to serve as an abstract base class for Cython quadratic models.
<!-- -->
- Break `dimod/libcpp.pxd` into a full Cython subpackage to mirror the structure under `dimod/include/`. This allows for better organization, and less need to recompile all Cython files when changing parts of the C++ library. Packages that depend on dimod are still encouraged to use the `from dimod.libcpp cimport ...` syntax.
<!-- -->
- Build wheels for Python 3.11.
- Add C++ `dimod::ConstrainedQuadraticModel` class.
<!-- -->
- Add C++ `ConstrainedQuadraticModel.add_constraint()` overload that allows a user to move a binary quadratic model or quadratic model as a constraint.
<!-- -->
- Add C++ `ConstrainedQuadraticModel.constraint_weak_ptr()` method.
<!-- -->
- Make `BinaryQuadraticModel.vartype` callable. This allows for more uniform syntax between binary quadratic models, quadratic models and constrained quadratic models.
<!-- -->
- Replace current `ConstrainedQuadraticModel` implementation with one implemented in Cython.
<!-- -->
- Add `ConstrainedQuadraticModel.clear()` method.
Bug Fixes
- Fix a performance regression introduced in 0.10.0 when loading linear binary quadratic models from files.
<!-- -->
- Fix the handling of self-loops in `dimod::Expression::add_quadratic()` and similar methods.
<!-- -->
- Fix C++ `ConstrainedQuadraticModel.remove_variable()` method. Previously it would segmentation fault.
Upgrade Notes
- Rewrite `dimod::QuadraticModelBase` and move it to `dimod::abc::QuadraticModelBase` in `abc.h`.
<!-- -->
- Move `dimod::Vartype`, `dimod::vartype_info`, and `` dimod::vartype_limits` to ``vartypes.h\`\`.
<!-- -->
- Remove the `dimod::Neighborhood` class.
<!-- -->
- Remove `iterators.h`.
<!-- -->
- Move `dimod::BinaryQuadraticModel` to `binary_quadratic_model.h`.
<!-- -->
- Remove `dimod.binary.cybqm.cyBQMBase` class.
<!-- -->
- Remove `dimod.quadratic.cyqm.cyQMBase` class.
<!-- -->
- Build `manylinux2014` wheels. Previously we built `manylinux2010`.
<!-- -->
- Build `arm64` and `x86_64` wheels for macos. Previously we built `x86_64` and `universal2`.
Deprecation Notes
- Deprecate the `cascade` keyword argument in `ConstrainedQuadraticModel.fix_variable()`.
<!-- -->
- Deprecate the `cascade` keyword argument in `ConstrainedQuadraticModel.fix_variables()`.