### v3.6.20181017
- Feature parity with ArrayFire v3.6. Refer to the [release notes](https://github.com/arrayfire/arrayfire/blob/master/docs/pages/release_notes.md) for more information regarding upstream library improvements in v3.6.
- `anisotropic_diffusion()`: Anisotropic diffusion filter.
- `topk()`: Returns top-K elements given an array.
- Bug fixes:
- Fixed `sift()` and `gloh()`, which were improperly calling the library.
- Enhancements:
- Added `len()` method, which returns `array.elements()`.
- Documentation:
- Documented statistics API.
- Corrected `sign()` documentation.
- Modified `helloworld` example to match C++ lib.
### v3.5.20170721
- Bug fixes when using v3.5 of arrayfire libs + graphics
### v3.5.20170721
- Bug fixes for canny edge detection
### v3.5.20170718
- Feature parity with ArrayFire 3.5.
- `canny`: Canny Edge detector
- `Array.scalar`: Return the first element of the array
- `dot`: Now support option to return scalar
- `print_mem_info`: Prints memory being used / locked by arrayfire memory manager.
- `Array.allocated`: Returs the amount of memory allocated for the given buffer.
- `set_fft_plan_cache_size`: Sets the size of the fft plan cache.
- Bug Fixes:
- `sort_by_key` had key and value flipped in documentation.
- Improvements and bugfixes from upstream include:
- CUDA backend uses nvrtc instead of nvvm
- Performance improvements to arrayfire.reorder
- Faster unified backend
- You can find more information at arrayfire's [release notes](https://github.com/arrayfire/arrayfire/blob/v3.5.0/docs/pages/release_notes.md)
### v3.4.20170222
- Bugfix: Fixes typo in `approx1`.
- Bugfix: Fixes typo in `hamming_matcher` and `nearest_neighbour`.
- Bugfix: Added necessary copy and lock mechanisms in interop.py.
- Example / Benchmark: New conjugate gradient benchmark.
- Feature: Added support to create arrayfire arrays from numba.
- Behavior change: af.print() only prints full arrays for smaller sizes.
### v3.4.20161126
- Fixing memory leak in array creation.
- Supporting 16 bit integer types in interop.
### v3.4.20160925
- Feature parity with ArrayFire 3.4 libs
- [Sparse matrix support](http://arrayfire.org/arrayfire-python/arrayfire.sparse.html#module-arrayfire.sparse)
- `create_sparse`
- `create_sparse_from_dense`
- `create_sparse_from_host`
- `convert_sparse_to_dense`
- `convert_sparse`
- `sparse_get_info`
- `sparse_get_nnz`
- `sparse_get_values`
- `sparse_get_row_idx`
- `sparse_get_col_idx`
- `sparse_get_storage`
- [Random Engine support](http://arrayfire.org/arrayfire-python/arrayfire.random.html#module-arrayfire.random)
- Three new random engines, `RANDOM_ENGINE.PHILOX`, `RANDOM_ENGINE.THREEFRY`, and `RANDOM_ENGINE.MERSENNE`.
- `randu` and `randn` now accept an additional engine parameter.
- `set_default_random_engine_type`
- `get_default_random_engine`
- New functions
- [`scan`](http://arrayfire.org/arrayfire-python/arrayfire.algorithm.html?arrayfire.algorithm.scan#arrayfire.algorithm.scan)
- [`scan_by_key`](http://arrayfire.org/arrayfire-python/arrayfire.algorithm.html?arrayfire.algorithm.scan#arrayfire.algorithm.scan_by_key)
- [`clamp`](http://arrayfire.org/arrayfire-python/arrayfire.arith.html?arrayfire.arith.clamp#arrayfire.arith.clamp)
- [`medfilt1`](http://arrayfire.org/arrayfire-python/arrayfire.signal.html#arrayfire.signal.medfilt1)
- [`medfilt2`](http://arrayfire.org/arrayfire-python/arrayfire.signal.html#arrayfire.signal.medfilt2)
- [`moments`](http://arrayfire.org/arrayfire-python/arrayfire.image.html#arrayfire.image.moments)
- [`get_size_of`](http://arrayfire.org/arrayfire-python/arrayfire.library.html#arrayfire.library.get_size_of)
- [`get_manual_eval_flag`](http://arrayfire.org/arrayfire-python/arrayfire.device.html#arrayfire.device.get_manual_eval_flag)
- [`set_manual_eval_flag`](http://arrayfire.org/arrayfire-python/arrayfire.device.html#arrayfire.device.set_manual_eval_flag)
- Behavior changes
- [`eval`](http://arrayfire.org/arrayfire-python/arrayfire.device.html#arrayfire.device.eval) now supports fusing kernels.
- Graphics updates
- [`plot`](http://arrayfire.org/arrayfire-python/arrayfire.graphics.html#arrayfire.graphics.Window.plot) updated to take new parameters.
- [`plot2`](http://arrayfire.org/arrayfire-python/arrayfire.graphics.html#arrayfire.graphics.Window.plot2) added.
- [`scatter`](http://arrayfire.org/arrayfire-python/arrayfire.graphics.html#arrayfire.graphics.Window.scatter) updated to take new parameters.
- [`scatter2`](http://arrayfire.org/arrayfire-python/arrayfire.graphics.html#arrayfire.graphics.Window.scatter2) added.
- [`vector_field`](http://arrayfire.org/arrayfire-python/arrayfire.graphics.html#arrayfire.graphics.Window.vector_field) added.
- [`set_axes_limits`](http://arrayfire.org/arrayfire-python/arrayfire.graphics.html#arrayfire.graphics.Window.set_axes_limits) added.
- Bug fixes
- ArrayFire now has higher priority when numpy for mixed operations. [1](https://github.com/arrayfire/arrayfire-python/issues/69) [2](https://github.com/arrayfire/arrayfire-python/pull/71)
- Numpy interoperability issues on Widnows. [1](https://github.com/arrayfire/arrayfire-python/issues/92)
- Switch to a working backend by default. [1](https://github.com/arrayfire/arrayfire-python/issues/90)
- Fixed incorrect behavior for Hermitian transpose and QR. [1](https://github.com/arrayfire/arrayfire-python/issues/91)
- `array[0:0]` now returns empty arrays. [1](https://github.com/arrayfire/arrayfire-python/issues/26)
- Further Improvements from upstream can be read in the [arrayfire release notes](https://github.com/arrayfire/arrayfire/blob/master/docs/pages/release_notes.md).
### v3.3.20160624
- Adding 16 bit integer support
- Adding support for sphinx documentation
### v3.3.20160516
- Bugfix: Increase arrayfire's priority over numpy for mixed operations
- Added new library functions
- `get_backend` returns backend name
### v3.3.20160510
- Bugfix to `af.histogram`
- Added missing functions / methods
- `gaussian_kernel`
- Added new array properties
- `Array.T` now returns transpose
- `Array.H` now returns hermitian transpose
- `Array.shape` now allows easier access individual dimensions
### v3.3.20160427
- Fixes to numpy interop on Windows
- Fixes issues with occasional double free
- Fixes to graphics examples
### v3.3.20160328
- Fixes to make arrayfire-python to work on 32 bit systems
### v3.3.20160320
- Feature parity with Arrayfire 3.3 libs
- Functions to interact with arryafire's internal data structures.
- `Array.offset`
- `Array.strides`
- `Array.is_owner`
- `Array.is_linear`
- `Array.raw_ptr`
- Array constructor now takes `offset` and `strides` as optional parameters.
- New visualization functions: `scatter` and `scatter3`
- OpenCL backend specific functions:
- `get_device_type`
- `get_platform`
- `add_device_context`
- `delete_device_context`
- `set_device_context`
- Functions to allocate and free memory on host and device
- `alloc_host` and `free_host`
- `alloc_pinned` and `free_pinned`
- `alloc_device` and `free_device`
- Function to query which device and backend an array was created on
- `get_device_id`
- `get_backend_id`
- Miscellaneous functions
- `is_lapack_available`
- `is_image_io_available`
- Interopability
- Transfer PyCUDA GPUArrays using `af.pycuda_to_af_array`
- Transfer PyOpenCL Arrays using `af.pyopencl_to_af_array`
- New helper function `af.to_array` added to convert a different `array` to arrayfire Array.
- This function can be used in place of `af.xyz_to_af_array` functions mentioned above.
- Deprecated functions list
- `lock_device_ptr` is deprecated. Use `lock_array` instead.
- `unlock_device_ptr` is deprecated. Use `unlock_array` instead.
- Bug Fixes:
- [Boolean indexing giving faulty results](https://github.com/arrayfire/arrayfire-python/issues/68) for multi dimensional arrays.
- [Enum types comparision failures](https://github.com/arrayfire/arrayfire-python/issues/65) in Python 2.x
- [Support loading SO versioned libraries](https://github.com/arrayfire/arrayfire-python/issues/64) in Linux and OSX.
- Fixed typo that prevented changing backend
- Fixed image processing functions that accepted floating point scalar paramters.
- Affected functions include: `translate`, `scale`, `skew`, `histogram`, `bilateral`, `mean_shift`.
### v3.2.20151224
- Bug fixes:
- A default `AF_PATH` is set if none is found as an environment variable.
- Examples:
- Heston model example uses a smaller data set to help run on low end GPUs.
### v3.2.20151214
- Bug fixes:
- `get_version()` now returns ints instead of `c_int`
- Fixed bug in `tests/simple/device.py`
- The module now looks at additional paths when loading ArrayFire libraries.
- Link to the wiki is provided when `ctypes.cdll.LoadLibrary` fails.
- New function:
- `info_str()` returns information similar to `info()` as a string.
- Updated README.md with latest instructions
### v3.2.20151211
- Feature parity with ArrayFire 3.2 libs
- New computer vision functions: `sift`, `gloh`, `homography`
- New graphics functions: `plot3`, `surface`
- Functions to load and save native images: `load_image_native`, `save_image_native`
- Use `unified` backend when possible
- Added missing functions
- `eval`, `init`, `convolve2_separable`, `as_type` method
- `cuda` backend specific functions
- `opencl` backend specific functions
- `timeit` function to benchmark arrayfire functions
- Added new examples
- getting_started: `intro`, `convolve`
- benchmarks: `bench_blas`, `bench_fft`
- financial: `monte_carlo_options`, `black_scholes`, `heston_model`
- graphics: `fractal`, `histogram`, `plot3d`, `conway`, `surface`
- Bug fixes
- Fixed bug when array types were being reported incorrectly
- Fixed various bugs in graphics functions
### v3.1.20151111
- Feature parity with ArrayFire 3.1 libs
- Ability to interop with other python libs
- Ability to extract raw device pointers
- Load and Save arrays from disk
- Improved `__repr__` support
### v3.0.20150914
- Feature parity with ArrayFire 3.0 libs
- Ability to switch all backends
- Supports both python2 and python3