Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V17.0 increment version #127

Merged
merged 10 commits into from
Aug 11, 2021
47 changes: 33 additions & 14 deletions .github/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,48 +1,67 @@
# Release 0.17.0-dev
# Release 0.17.0

### New features

* C++ layer now supports float (32-bit) and double (64-bit) templated complex data.
[#113](https://github.com/PennyLaneAI/pennylane-lightning/pull/113)
[(#113)](https://github.com/PennyLaneAI/pennylane-lightning/pull/113)

### Improvements

* The PennyLane device test suite is now included in coverage reports.
[(123)](https://github.com/PennyLaneAI/pennylane-lightning/pull/123)
[(#123)](https://github.com/PennyLaneAI/pennylane-lightning/pull/123)

* Static versions of jQuery and Bootstrap are no longer included in the CSS theme.
[(118)](https://github.com/PennyLaneAI/pennylane-lightning/pull/118)
[(#118)](https://github.com/PennyLaneAI/pennylane-lightning/pull/118)

* C++ tests have been ported to use Catch2 framework.
[#115](https://github.com/PennyLaneAI/pennylane-lightning/pull/115)
[(#115)](https://github.com/PennyLaneAI/pennylane-lightning/pull/115)

* Testing now exists for both float and double precision methods in C++ layer.
[#113](https://github.com/PennyLaneAI/pennylane-lightning/pull/113)
[#115](https://github.com/PennyLaneAI/pennylane-lightning/pull/115)
[(#113)](https://github.com/PennyLaneAI/pennylane-lightning/pull/113)
[(#115)](https://github.com/PennyLaneAI/pennylane-lightning/pull/115)

* Compile-time utility methods with `constexpr` have been added.
[#113](https://github.com/PennyLaneAI/pennylane-lightning/pull/113)
[(#113)](https://github.com/PennyLaneAI/pennylane-lightning/pull/113)

* Wheel-build support for ARM64 (Linux and MacOS) and PowerPC (Linux) added.
[#110](https://github.com/PennyLaneAI/pennylane-lightning/pull/110)
[(#110)](https://github.com/PennyLaneAI/pennylane-lightning/pull/110)

* Add support for Controlled Phase Gate (CPhaseShift).
[(#112)](https://github.com/PennyLaneAI/pennylane-lightning/issues/112)
* Add support for Controlled Phase Gate (`ControlledPhaseShift`).
[(#114)](https://github.com/PennyLaneAI/pennylane-lightning/pull/114)

* Move changelog to `.github` and add a changelog reminder.
[(#111)](https://github.com/PennyLaneAI/pennylane-lightning/pull/111)

* Adds CMake build system support.
[(#104)](https://github.com/PennyLaneAI/pennylane-lightning/pull/104)


### Breaking changes

* Removes support for Python 3.6.
[(#127)](https://github.com/PennyLaneAI/pennylane-lightning/pull/127)

* Compilers with C++17 support are now required to build C++ module.
[#113](https://github.com/PennyLaneAI/pennylane-lightning/pull/113)
[(#113)](https://github.com/PennyLaneAI/pennylane-lightning/pull/113)

* Gate classes have been removed with functionality added to StateVector class.
[#113](https://github.com/PennyLaneAI/pennylane-lightning/pull/113)
[(#113)](https://github.com/PennyLaneAI/pennylane-lightning/pull/113)

* We are no longer building wheels for Python 3.6.
[(#106)](https://github.com/PennyLaneAI/pennylane-lightning/pull/106)

### Bug fixes

* Column-major data in numpy is now correctly converted to row-major upon pass to the C++ layer.
[(#126)](https://github.com/PennyLaneAI/pennylane-lightning/pull/126)

* PowerPC wheel-builder now successfully compiles modules.
[#120](https://github.com/PennyLaneAI/pennylane-lightning/pull/120)
[(#120)](https://github.com/PennyLaneAI/pennylane-lightning/pull/120)

### Documentation

* Added community guidelines.
[(#109)](https://github.com/PennyLaneAI/pennylane-lightning/pull/109)

### Contributors

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ venv/
doc/_build/
PennyLane_Lightning.egg-info/
build/
BuildTests/
dist/
tests/__pycache__/
.idea
Expand Down
4 changes: 2 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Features
Installation
============

PennyLane-Lightning requires Python version 3.6 and above. It can be installed using ``pip``:
PennyLane-Lightning requires Python version 3.7 and above. It can be installed using ``pip``:

.. code-block:: console

Expand Down Expand Up @@ -83,7 +83,7 @@ repository:

.. code-block:: console

$ make test
$ make test-python

while the C++ code can be tested with

Expand Down
2 changes: 1 addition & 1 deletion pennylane_lightning/_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@
Version number (major.minor.patch[-label])
"""

__version__ = "0.16.0-dev"
__version__ = "0.17.0"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also need to update the version of PL that lightning depends on? Currently we have >=0.15 in requirements.txt and lightning_qubit.py. It might still work with 0.15, but probably best to go with 0.17?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'd usually do that if there's a feature that lightning depends on after v0.15.0. That is: we'd pin to the latest released version of PennyLane that the plugin is still fully functional with.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense and should be ok in this case! Though maybe this is something we should test in the long run, I don't trust my own memory on whether subsequent changes should break compatibility with older versions of PL.

12 changes: 8 additions & 4 deletions pennylane_lightning/src/Bindings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,10 @@ template <class fp_t> class StateVecBinder : public StateVector<fp_t> {
* @param wires
* @param inverse
*/
void applyMatrixWires(const py::array_t<complex<fp_t>> &matrix,
const vector<size_t> &wires, bool inverse = false) {
void applyMatrixWires(
const py::array_t<complex<fp_t>,
py::array::c_style | py::array::forcecast> &matrix,
const vector<size_t> &wires, bool inverse = false) {
const vector<size_t> internalIndices = this->generateBitPatterns(wires);
const vector<size_t> externalWires =
this->getIndicesAfterExclusion(wires);
Expand Down Expand Up @@ -118,8 +120,10 @@ template <class PrecisionT> void lightning_class_bindings(py::module &m) {
const vector<size_t> &, bool>(
&StateVecBinder<PrecisionT>::applyMatrixWires))
.def("applyMatrix",
py::overload_cast<const py::array_t<complex<PrecisionT>> &,
const vector<size_t> &, bool>(
py::overload_cast<
const py::array_t<complex<PrecisionT>,
py::array::c_style | py::array::forcecast> &,
const vector<size_t> &, bool>(
&StateVecBinder<PrecisionT>::applyMatrixWires))
.def("PauliX", &StateVecBinder<PrecisionT>::applyPauliX)
.def("PauliY", &StateVecBinder<PrecisionT>::applyPauliY)
Expand Down
1 change: 0 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,6 @@ def build_extensions(self):
"Operating System :: Microsoft :: Windows",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3 :: Only",
Expand Down