This is the release of CuPy v2.0.0rc1. See [here](https://github.com/cupy/cupy/milestone/10?closed=1) for the complete list of solved issues and merged PRs.
Changes that break compatibility
- Change the default value of the `order` argument of `copy` from `’C’` to `’K’` (159)
- Add `order` and `subok` arguments to `array` (167). It breaks the compatibility of positional arguments.
New features
- Complex numbers (232)
- Memory hook (264). It can be used to observe the memory allocation/deallocation events.
- New functions
- Complex routines: `angle`, `conj`, `imag`, `real` (232)
- `einsum` (199, thanks fukatani!)
- Linear algebra: `linalg.solve` (207), `linalg.tensorsolve` (215), `linalg.inv` (441), `linalg.pinv` (459)
- Random numbers: `random.shuffle` (216, thanks KotaroSetoyama!)
- Sorting: `partition` (270)
- New features in sparse matrices
- Support `dia_matrix` (313, 321, 320, 450)
- Sparse matrix creation methods: `eye` (399), `spdiags` (388) and `identity` (358)
- `csr_matrix` and `csc_matrix` are improved: `__mul__` (239), `__rmul__` (300), `__getitem__` (240, 301, 302), `dot` (351, 352)
- Initializers of `csr_matrix`, `csc_matrix`, and `coo_matrix` support `shape` argument (316, 375)
- Sparse matrices can have duplicated elements (326, 371)
- `order` argument in `toarray` method of csc and csr (311)
- `__pow__` (359)
- Conversion from a dense array to a sparse matrix (335)
- Support conversion from `scipy.sparse` matrix to `cupy.sparse` (370)
- Added supports of new libraries
- NumPy 1.13 (347)
- CUDA9 support (353, thanks anaruse!)
- cuDNN7 support (362, thanks anaruse!)
- NCCL2 support (363, thanks anaruse!)
- `argsort` for arrays of rank two or more (288)
- Fix race-condition on memory pool (382)
- Implemented copy option of array conversion methods and wrote tests (408)
- Enable saving CUDA source with environment variable (415)
- Basic support of CUDA unified memory (447)
- Use original function name as fusion kernel name (448)
- Support `replace=False` in `random.choice` (453)
- Add a `sync` option to `time_range` (474, thanks anaruse!)
Bug fixes
- Fix bug of empty `coo_matrix` (328)
- Fix default behavior of methods in `spmatrix` (356)
- Made dummy implementation to prevent infinite loop (364)
- Avoid to call python methods in `__dealloc__()`, use `__del__()` instead. (381)
- Fix race-condition on memory pool (382)
- Fix view when the itemsize of the dtype changes (406, thanks boeddeker!)
- Use double backslash in str literal (418)
- Improved `pow` test (421)
- Use `randint` instead of `random_integer`, which is deprecated (425)
- Fix `diagonal` (428, thanks fukatani!)
- Use `six.assertRegex` (432)
- Fix for numpy1.13 (445)
- Fix tocsc behavior for an empty dia matrix (451)
Improvements
- Tell the memory size when `cudaErrorMemoryAllocation` occurred (314)
- Simplify nogil (164)
- Skip cross compile on `setup.py` develop to build faster (309)
- Remove device memory allocation out of memory pool (337)
- Avoid importing NumPy docstring (355)
- Improve header handling (367)
- Remove redundant code in `cupy_thrust.cu` (369)
- Improve `_tril()` and `_triu()` with an `ElementwiseKernel` (377)
- Remove unnecessary condition (383)
- Add semicolons to the reduction kernel template (386)
- Remove redundant transpose (390)
- Fix usage about `ElementwiseKernel` (391)
- Remove duplicated preamble definition. (402)
- Fix `cumsum` (414)
- Use `AxisError` to maintain compatibility to multiple versions of NumPy (437)
- doc: Sort out navigation menu (444)
- Improve `tensordot_core` (465)
- Simplify `flip` (468)
- Use `None` instead of `set()` to improve memory allocation performance (475)
Installation
- Skip cross compile on `setup.py develop` to build faster (309)
- Fix double declaration of `tuple_less` (368)
- Made a cutomized version of sdist command to use cython (446)
Documentation
- Fix a grammatical error in tutorial (267)
- Add `cupy.sparse` reference (299, 303)
- Cleanup `README.md` (334)
- Hide source link for alien objects (354)
- Avoid importing NumPy docstring (355)
- Remove unsupported `strides` argument from docstring (361)
- Fix `matmul` arguments (384, thanks hvy!)
- Add link to our contribution guide (392)
- Update docstring of `linalg.einsum` (405)
- Write docstring of A property and its test (407)
- Use double backslash in str literal (418)
- Fix typo in `sparse.spdiags` docstring. (426)
- Remove "Edit on GitHub" link (434)
- Reorganize navigation menu (444)
- Clear doctest warnings (455)
- Add documents of `linalg` (456)
- Write docstring of `sparse.issparse` (470)
Examples
- Conjugate Gradient (94, thanks KotaroSetoyama!)
Tests
- Example test (297)
- Add test for `cuda.cusolver_enabled` flag (374)
- Write tests for operators for sparse matrices (401)
- Write docstring of `A` property and its test (407)
- Fix test for random generator (413)
- Fix `cumsum` test (414)
- Add test for `transpose` when axes is not `None` (420)
- Improved `pow` test (421)
- Changed order argument for unknown order test as SciPy causes DeprecationWarning (422)
- Add tests for `asfptype` (423)
- Add `assert_warns` (424)
- Use `randint` instead of `random_integer` that is deprecated (425)
- Use `six.assertRegex` (432)
- Show error message when an error occurs on example test (433)
- Fix tests on Windows (435)
- Fix tolerance of arithmetic tests (443)
- Added test for `__iter__` of `csr_matrix` (449)
- Fix `tocsc` behavior for an empty `dia` matrix (451)
- Fix test for `tensorsolve` (454)
- Skip NumPy `clip` tests in Windows (467)
- Fix typo in test function names (394)
Others
- Configure flake8 to ignore the .git directory (339)