All Versions
Latest Version
Avg Release Cycle
123 days
Latest Release
976 days ago

Changelog History
Page 2

  • v3.4.1 Changes

    January 11, 2017


    ๐Ÿ”‹ Features

    • Neg trait implementation for object type Array
    • ๐Ÿ†• New set of following functions that lets the user create an array based on dimensions and a particular DType. Earlier to this addition, data generation functions deduced the target array type using generic type.
      • constant_t
      • range_t
      • iota_t
      • identity_t


    • A new graphics example that illustrates acoustic wave propagation.

    ๐Ÿ›  Fixes

    ๐Ÿš€ Community contributors for this release

    Thank you.

  • v3.4.0 Changes

    September 15, 2016

    ๐Ÿ”‹ Features

    • ๐Ÿ“œ Sparse Matrix and BLAS
      • Support for CSR and COO storage types.
      • Sparse-Dense Matrix Multiplication and Matrix-Vector Multiplication as a
        ๐Ÿ“œ part of af::matmul() using CSR format for sparse.
      • Conversion to and from dense matrix to CSR and COO storage types.
    • Faster JIT
      • Performance improvements for CUDA and OpenCL JIT functions.
      • Support for evaluating multiple outputs in a single kernel. See eval!() macro or function eval_multiple().
    • Random Number Generation
      • A random engine object to handle setting the random engine type and seed for random number generator engines.
      • Supported engine types are:
      • Philox
      • Threefry
      • Mersenne Twister
    • Graphics
      • Using Forge v0.9.0
      • New Functions to render Vector Fields
      • Window::draw_vector_field2()
      • Window::draw_vector_field3()
      • Window::draw_vector_field()
      • Multiple overlays on the same window are now possible.
      • Overlays support for same type of object (2D/3D)
      • Supported by Window::draw_plot[2|3](), Window::draw_hist(), Window::draw_surface(),
      • New API to set axes limits for graphs.
      • Draw calls do not automatically compute the limits. This is now under user control.
      • Window::set_axes_limits_[2d|3d|compute]() can be used to set axes limits automatically or manually.
      • Window::set_axes_titles() can be used to set axes titles.
      • New API for plot and scatter:
      • Window::draw_plot() and Window::draw_scatter() now can handle 2D and 3D and determine appropriate order.
      • draw_plot()
      • draw_plot2()
      • draw_plot3()
      • draw_scatter()
      • draw_scatter2()
      • draw_scatter3()
    • ๐Ÿ†• New interpolation types to enum InteropType that apply to following functions
      • resize()
      • transform()
      • approx1()
      • approx2()
    • ๐Ÿ‘Œ Support for complex mathematical functions
      • Add complex support for trignometry functions, sqrt(), log().
    • ๐Ÿšฆ medfilt1(): Median filter for 1-d signals
    • Generalized scan functions: scan_func_scan and scan_func_scanbykey
      • Now supports inclusive or exclusive scans
      • Supports binary operations defined by BinaryOp.
    • Image Moments functions
    • Add get_size_of() function for dtype

    ๐Ÿ›  For other information regarding bug fixes, compile time improvements and known issues in ArrayFire upstream, please visit the
    ๐Ÿš€ ArrayFire v3.4.0 Release Notes URL.

    Broken/Replaced API

    • The behaviour of Window::draw_plot has been to changed to handle generic plot rendering, 2D or 3D line plots. New functions Window::draw_plot[2|3] are added for dimension specific plot rendering.
    • The behaviour of Window::draw_scatter has been to changed to handle generic plot rendering, 2D or 3D line plots. New functions Window::draw_scatter[2|3] are added for dimension specific plot rendering.
  • v3.3.1 Changes

    June 08, 2016


    ๐Ÿ›  Fixes

    • ๐Ÿš€ Program crashes on release builds reported here has been fixed.
    • Dependent crates(libc, num, rustc-serialize) versions have been bumped up.

    ๐Ÿš€ Community contributors for this release

    Thank you.

  • v3.3.0 Changes

    May 20, 2016

    โšก๏ธ Major Updates

    • API breaking change is that error handling mechanism of returning Result objects from functions has been replaced with a callback style error handling. By default, we provide an error handler that panics with an appropriate message when a given function call or operation fails. If the users chooses to, they can also implement the error handler by themselves and call register_error_handler that lets the user set the function that has to handle the error values returned by ArrayFire FFI calls.
    • ๐Ÿ”จ enum Aftype has been refactored to DType
    • ๐Ÿ‘ CPU backend supports aysnchronous execution.
    • ๐ŸŽ Performance improvements to OpenCL BLAS and FFT functions.
    • ๐Ÿ‘Œ Improved performance of memory manager.
    • ๐Ÿ‘Œ Improvements to visualization functions.
    • ๐Ÿ‘Œ Improved sorted order for OpenCL devices.

    ๐Ÿ†• New Functions and Features:

    • Scatter plot added to graphics functionality
    • New function get_active_backend that gives us the current active backend.
    • ๐Ÿ‘Œ Improved Array Creation/Generation API
    • โž• Added mem_info macro to print GPU memory usage information to standard output.
    • โž• Added af_print macro.
    • โž• Added traits clone and partialeq to all enums.
    • โž• Added traits partialeq and debug to type Dim4.
    • ๐Ÿ‘ transform() now supports perspective transformation matrices.
    • Type Array now has the implementations for the compound assignment operations traits. These traits are auto-enabled only if you are using Rust >= 1.8.0 since those traits are stabilized from that particular version.
    • A few new member functions are added to object Array.
    • Following are the other miscellaneous functions added to the library
      • is_lapack_available - Returns true if ArrayFire was compiled with LAPACK functions enabled
      • is_imageio_available - Returns true if ArrayFire was compiled with Freeimage enabled
      • New member function for Array Object, get_device_id, that gets the device id on which the array resides.

    ๐Ÿš€ Following are the community contributors for this release.

    Thank you guys!