Skip to content

Latest commit

 

History

History
175 lines (140 loc) · 10.5 KB

CHANGELOG.md

File metadata and controls

175 lines (140 loc) · 10.5 KB

Changelog

  • Unreleased

  • v0.21.0

    • Migrate to the new Bound API introduced by PyO3 0.21. (#410) (#411) (#412) (#415) (#416) (#418) (#419) (#420) (#421) (#422)
    • Add a prelude module to simplify importing method traits required by the Bound API. (#417)
    • Extend documentation to cover some more surprising behaviours. (#405) (#414)
  • v0.20.0

    • Increase MSRV to 1.56 released in October 2021 and available in Debain 12, RHEL 9 and Alpine 3.17 following the same change for PyO3. (#378)
    • Add support for ASCII (PyFixedString<N>) and Unicode (PyFixedUnicode<N>) string arrays, i.e. dtypes SN and UN where N is the number of characters. (#378)
    • Add support for the bfloat16 dtype by extending the optional integration with the half crate. Note that the bfloat16 dtype is not part of NumPy itself so that usage requires third-party packages like Tensorflow. (#381)
    • Add PyArrayLike type which extracts PyReadonlyArray if a NumPy array of the correct type is given and attempts a conversion using numpy.asarray otherwise. (#383)
  • v0.19.0

    • Add PyUntypedArray as an untyped base type for PyArray which can be used to inspect arguments before more targeted downcasts. This is accompanied by some methods like dtype and shape moving from PyArray to PyUntypedArray. They are still accessible though, as PyArray dereferences to PyUntypedArray via the Deref trait. (#369)
    • Drop deprecated PyArray::from_exact_iter as it does not provide any benefits over PyArray::from_iter. (#370)
  • v0.18.0

    • Add conversions from and to datatypes provided by the nalgebra crate. (#347)
    • Drop our wrapper for NumPy iterators which were deprecated in v0.16.0 as ndarray's iteration facilities are almost always preferable. (#324)
    • Dynamic borrow checking now uses a capsule-based API and therefore works across multiple extensions using PyO3 and potentially other bindings or languages. (#361)
  • v0.17.2

    • Fix unsound aliasing into Box<[T]> when converting them into NumPy arrays. (#351)
  • v0.17.1

    • Fix use-after-free in PyArray::resize, PyArray::reshape and PyArray::reshape_with_order. (#341)
    • Fix UB in ToNpyDims::as_dims_ptr with dimensions of dynamic size (-1). (#344)
  • v0.17.0

    • Add dynamic borrow checking to safely construct references into the interior of NumPy arrays. (#274)
      • The deprecated iterator builders NpySingleIterBuilder::{readonly,readwrite} and NpyMultiIterBuilder::add_{readonly,readwrite} now take referencces to PyReadonlyArray and PyReadwriteArray instead of consuming them.
      • The destructive PyArray::resize method is now unsafe if used without an instance of PyReadwriteArray. (#302)
    • Add support for datetime64 and timedelta64 element types via the datetime module. (#308)
    • Add support for IEEE 754-2008 16-bit floating point numbers via an optional dependency on the half crate. (#314)
    • The inner, dot and einsum functions can also return a scalar instead of a zero-dimensional array to match NumPy's types (#285)
    • The PyArray::resize function supports n-dimensional contiguous arrays. (#312)
    • Deprecate PyArray::from_exact_iter after optimizing PyArray::from_iter. (#292)
    • Remove DimensionalityError and TypeError from the public API as they never used directly. (#315)
    • Remove the deprecated PyArrayDescr::get_type which was replaced by PyArrayDescr::typeobj in the last cycle. (#308)
    • Fix returning invalid slices from PyArray::{strides,shape} for rank zero arrays. (#303)
  • v0.16.2

    • Fix build on platforms where c_char is u8 like Linux/AArch64. (#296)
  • v0.16.1

    • Fix build when PyO3's multiple-pymethods feature is used. (#288)
  • v0.16.0

    • Bump PyO3 version to 0.16 (#259)
    • Support object arrays (#216)
    • Support borrowing arrays that are part of other Python objects via PyArray::borrow_from_array (#230)
    • Fixed downcasting ignoring element type and dimensionality (#265)
    • PyArray::new is now unsafe, as it produces uninitialized arrays (#220)
    • PyArray::iter, NpySingleIterBuilder::readwrite and NpyMultiIterBuilder::add_readwrite are now unsafe, as they allow aliasing mutable references to be created (#278/)
    • The npyiter module is deprecated as rust-ndarray's facilities for iteration are more flexible and performant (#280)
    • PyArray::from_exact_iter does not unsoundly trust ExactSizeIterator::len any more (#262)
    • PyArray::as_cell_slice was removed as it unsoundly interacts with PyReadonlyArray allowing safe code to violate aliasing rules (#260)
    • rayon feature is now removed, and directly specifying the feature via ndarray dependency is recommended (#250)
    • Element trait and PyArrayDescr changes (#256):
      • Element trait has been simplified to get_dtype() and IS_COPY
      • New PyArrayDescr methods: of, into_dtype_ptr, is_equiv_to
      • Added numpy::dtype function
      • Element is now implemented for isize
      • c32 / c64 have been renamed with Complex32 / Complex64
      • ShapeError has been split into TypeError and DimensionalityError
      • i32, i64, u32, u64 are now guaranteed to map to np.u?int{32,64}.
      • Removed cfg_if dependency
      • Removed DataType enum
    • Added PyArrayDescr::new constructor (#266)
    • New PyArrayDescr methods (#266):
      • num, base, ndim, shape, byteorder, char, kind, itemsize, alignment, flags, has_object, is_aligned_struct, names, get_field, has_subarray, has_fields, is_native_byteorder
      • Renamed get_type to typeobj
  • v0.15.1

    • Make arrays produced via IntoPyArray, i.e. those owning Rust data, writeable (#235)
    • Fix thread-safety in internal API globals (#222)
  • v0.15.0

  • v0.14.1

  • v0.14

  • v0.13.2

    • Support ndarray 0.15
  • v0.13.1

    • Allow ndarray >=0.13, < 0.15 to work with Rust 1.41.1.
    • Add inner, dot, and einsum
    • Add PyArray0
  • v0.13.0

    • Bump num-complex to 0.3
    • Bump ndarray to 0.14
    • Bump pyo3 to 0.13
    • Drop support for Python 3.5 (as it is now end-of-life).
    • Remove unused python3 feature
  • v0.12.2

    • Pin PyO3 minor versions to 0.12
    • Pin ndarray minor versions to 0.13
  • v0.12.1

    • Fix compile error in Rust 1.39
  • v0.12.0

    • Introduce NpySingleIter and NpyMultiIter.
    • Introduce PyArrayDescr.
  • v0.11.0

    • PyArray::get is now unsafe.
    • Introduce PyArray::get_owned and PyReadonlyArray::get.
  • v0.10.0

    • Remove ErrorKind and introduce some concrete error types.
    • PyArray::as_slice, PyArray::as_slice_mut, PyArray::as_array, and PyArray::as_array_mut is now unsafe.
    • Introduce PyArray::as_cell_slice, PyArray::to_vec, and PyArray::to_owned_array.
    • Rename TypeNum trait Element, and NpyDataType DataType.
    • Update PyO3 to 0.11
  • v0.9.0

    • Update PyO3 to 0.10.0
  • v0.8.0

    • Update PyO3 to 0.9.0
    • Fix SliceBox initialization
  • v0.7.0

    • Update PyO3 to 0.8
  • v0.6.0

    • Update PyO3 to 0.7
    • Drop Python2 support
  • v0.5.0

    • Update PyO3 to 0.6
  • v0.4.0

    • Duplicate PyArrayModule and import Numpy API automatically
    • Fix memory leak of IntoPyArray and add ToPyArray crate
    • PyArray has dimension as type parameter. Now it looks like PyArray<T, D>
    • Use ndarray::IntoDimension to specify dimension
    • Python2 support
  • v0.3.1, v0.3.2

    • Just update dependencies
  • v0.3.0

  • v0.2.1

    • NEW: trait IntoPyErr, IntoPyResult for error translation
  • v0.2.0

    • NEW: traits IntoPyArray, ToPyArray
    • MOD: Interface of PyArray creation functions are changed
  • v0.1.1

    • Update documents
  • v0.1.0

    • First Release
    • Expose unsafe interface of Array and UFunc API