This is the release note of v6.0.0b2. See [here](https://github.com/cupy/cupy/milestone/43?closed=1) for the complete list of solved issues and merged PRs.
Highlights
- Compatibility with NumPy 1.16 and support for the [`__array_function__`](http://www.numpy.org/neps/nep-0018-array-function-protocol.html) interface allowing CuPy arrays to be passed to NumPy functions.
New Features
- Implement `__array_function__` interface (1650)
- Implement SciPy-compatible FFT functions (1745)
- Add `PlanNd` class for faster 2D and 3D FFTs (1746, thanks grlee77!)
- Add `order` argument to` empty_like`,` zeros_like`, etc. (1819, thanks grlee77!)
- Add `cupyx.scipy.sparse.diags` (1840, thanks grlee77!)
- Add the `order` kwarg to `cupy.reshape` and the underlying `ndarray` method (1843, thanks grlee77!)
- Support order kwarg in `asarray`, `asanyarray`, `ndarray.get`, `tonumpy` (1845, thanks grlee77!)
- `cumsum`, `cumprod`: support array-like input (1847, thanks grlee77!)
- Add sparse option to meshgrid (1848, thanks grlee77!)
- Add `attributes` property to `Device` (1869, thanks grlee77!)
- Support new APIs in cuDNN v7.4.1 (1884)
- Add `as_strided` (1897, thanks fujiisoup!)
- Add `fnc` and `forc` to `core.flags.Flags` (1898, thanks grlee77!)
- CuPy external memory pool with memory pool and function pointers (1904)
- Allow multi-axis `roll` as in NumPy 1.12+ (1818, thanks grlee77!)
Enhancements
- Add `cupy.util.PerformanceWarning` (1607)
- Support NumPy arrays as seeds in `RandomState` (1689, thanks mrocklin!)
- Better support cuda-gdb (1773)
- Allow `cupy.fuse` taking any parameters when fails to fuse (1817)
- Verbose broadcast failure message (1836)
- Bundle CUDA fp16 headers (1837)
- Refactor array creation for RNN API (1842)
- Support for documenting NCCL interfaces (1857)
- Use `item` instead of `asscalar` to support NumPy 1.16 (1880)
- Support NumPy 1.16 (1881)
- Allow passing `None` as parameters of `Fusion.__call__` (1965)
Performance Improvements
- Improve `cudnn.py` performance (1375)
- Improve `matmul` perfomance (x3 faster) (1547)
- Improve `matmul` (small changes) (1894)
- Improve `Fusion.__call__` (1832)
Bug Fixes
- Fix backward of batch normalization (1822)
- Fix `RecursionError` bug in `conj` method of sparse matrix classes (1846, thanks grlee77!)
- Allow `None` as `cx` argument in cuDNN RNN functions (1862)
- Fix `ndarray` initialization bug (1907)
- Set `size` attribute of externally allocated memory (1926)
- Fix `ndim` not using `cdef` (1935)
- Ensure the input to the CUFFT `Plan1D` class is C contiguous (1944, thanks grlee77!)
- Fix wrong variable name in `cudnn.pyx` (1966)
Documentation
- Document Numba CUDA array conversion (1786)
- Align with the latest NumPy docs (1804)
- Update docs for newly supported libraries (1854)
- Fix bad hyperlink in `cupy.around` documentation (1856)
- Add memory management documentation (1871)
- Add `diags` to documentation (1872)
- Fix stylecheck installation in contribution guide. (1873, thanks crcrpar!)
- Avoid using `_ufunc_wrapper` and `_reduction_wrapper` (1888)
- Rename Code of Conduct filename (1900)
Tests
- Add tests for complex `min` and `max` (1828)
- Fix `randint` high value in test for Windows (1892)
- Fix test to support SciPy 1.12 (1968)
Code Fixes
- Refactor manipulation routines from `core.pyx` (1620)
- Use language level 3 in cythonize (1792)
- Change argument name of `core.create_comparison` (1829)
- Refactor cyclic imports (1905)
- Refactor math and indexing routines from `core.pyx` (1949)
- Clean up `internal.pyx` (`prod`) (1951)
- Fix int types (1952)
- Rename `External*` to `CFunction*` (1958)
- Refactor logic, sorting and statistics routines from `core.pyx` (1959)
- Use LF instead of CR+LF (1909)
Others
- Ignore W503 and W504 (1953)