diff --git a/docs/source/release/0.60.0-notes.rst b/docs/source/release/0.60.0-notes.rst new file mode 100644 index 00000000000..2d60d77b2e6 --- /dev/null +++ b/docs/source/release/0.60.0-notes.rst @@ -0,0 +1,260 @@ + +Version 0.60.0 (8 May 2024) +=========================== + +.. contents:: Table of Contents + :depth: 2 + +This is a major Numba release. Numba now has binary support for +NumPy 2.0. Users should note that this does NOT yet include NEP 50 +related type-level changes which are still in progress. This +release does not guarantee execution level compatibility with +NumPy 2.0 and hence users should expect some type and numerical +deviations with respect to normal Python behavior while using +Numba with NumPy 2.0. + +Please find a summary of all noteworthy items below. + +Highlights +~~~~~~~~~~ + +NumPy 2.0 Binary Support +------------------------ + +Added Binary Support for NumPy 2.0. However, this does not yet include +NEP 50 related type-level changes which are still in progress. + +Following is a summary of the user facing changes: + +* The ``ptp()`` method previously available for arrays has been deprecated. + Instead, it is recommended to use the ``np.ptp(arr)`` function. +* The data type ``np.bool8`` has been deprecated and replaced with ``np.bool``. +* The ``np.product`` function is deprecated; users are advised to use + ``np.prod`` instead. +* Starting from NumPy version 2.0, the ``itemset()`` method has been removed + from the ``ndarray`` class. To achieve the same functionality, utilize + the assignment operation ``arr[index] = value``. +* Deprecated constants ``np.PINF`` and ``np.NINF`` should be replaced with + ``np.inf`` for positive infinity and ``-np.inf`` for negative infinity, + respectively. + +(`PR-#9466 `__) + + +New Features +~~~~~~~~~~~~ + +Enhance guvectorize support in JIT code +--------------------------------------- + +Generalized universal function support is extended, it is now possible to call +a ``@guvectorize`` decorated function from within a JIT-compiled function. +However, please note that broadcasting is not supported yet. Calling a +guvectorize function in a scenario where broadcast is needed may result in +incorrect behavior. + +(`PR-#8984 `__) + +Add experimental support for ufunc.at +------------------------------------- + +Experimental support for ``ufunc.at`` is added. + +(`PR-#9239 `__) + +Add ``float()`` ctor +------------------------------------ + +Support for ``float()`` is added. + +(`PR-#9378 `__) + +Add support for ``math.log2``. +------------------------------ + +Support for ``math.log2`` is added. + +(`PR-#9416 `__) + +Add math.nextafter support for nopython mode. +--------------------------------------------- + +Support ``math.nextafter`` in nopython mode. + +(`PR-#9438 `__) + +Add support for parfor binop reductions. +---------------------------------------- + +Previously, only operations with inplace operations like `+=` could be used as reductions +in `prange`s. Now, with this PR, binop reductions of the form `a = a binop b` can be used. + +(`PR-#9521 `__) + + +Improvements +~~~~~~~~~~~~ + +Expand ``isinstance()`` support for NumPy datetime types +-------------------------------------------------------- + +Adds support of ``numpy.datetime64`` and ``numpy.timedelta64`` types in +``isinstance()``. + +(`PR-#9455 `__) + +Python 3.12 ``sys.monitoring`` support is added to Numba's dispatcher. +---------------------------------------------------------------------- + +Python 3.12 introduced a new module ``sys.monitoring`` that makes available an +event driven monitoring API for use in tools that need to monitor execution e.g. +debuggers or profilers. Numba's dispatcher class (the code that handles transfer +of control between the Python interpreter and compiled code) has been updated to +emit ``sys.monitoring.events.PY_START`` and ``sys.monitoring.events.PY_RETURN`` +as appropriate. This allows tools that are watching for these events to identify +when control has entered and returned from compiled code. As a result of this +change, Numba compiled code is now identified by ``cProfile`` in the same way +that it has been historically i.e. it will be present in performance profiles. + +(`PR-#9482 `__) + + +NumPy Support +~~~~~~~~~~~~~ + +Added support for ``np.size()`` +------------------------------- + +Added ``np.size()`` support for NumPy, which was previously unsupported. + +(`PR-#9504 `__) + + +CUDA API Changes +~~~~~~~~~~~~~~~~ + +Support for compilation to LTO-IR +--------------------------------- + +Support for compiling device functions to LTO-IR in the compilation API is +added. + +(`PR-#9274 `__) + +Support math.log, math.log2 and math.log10 in CUDA +-------------------------------------------------- + +CUDA target now supports ``np.log``, ``np.log2`` and ``np.log10``. + +(`PR-#9417 `__) + + +Bug Fixes +~~~~~~~~~ + +Fix parfor variable hoisting analysis. +-------------------------------------- + +If a variable is used to build a container (e.g., tuple, list, map, set) or is passed as an +argument to a call then conservatively assume it could escape the current iteration of +the parfor and so should not be hoisted. + +(`PR-#9532 `__) + + +Deprecations +~~~~~~~~~~~~ + +Deprecate `old_style` error-capturing +------------------------------------- + +Per deprecation schedule, `old_style` error-capturing is deprecated and the +`default` is now `new_style`. + +(`PR-#9549 `__) + + +Expired Deprecations +~~~~~~~~~~~~~~~~~~~~ + +Removal of ``numba.core.retarget`` +---------------------------------- + +The experimental features implemented in ``numba.core.retarget`` have been +removed. These features were primarily used in numba-dpex, but that project has +replaced its use of ``numba.core.retarget`` with a preference for +*target extension API*. + +(`PR-#9539 `__) + + +Documentation Changes +~~~~~~~~~~~~~~~~~~~~~ + +``numba.cuda.gpus.current`` documentation correction +---------------------------------------------------- + +``numba.cuda.gpus.current`` was erroneously described +as a function, is now described as an attribute. + +(`PR-#9394 `__) + +CUDA 12 conda installation documentation +---------------------------------------- + +Installation instructions have been added for CUDA 12 conda users. + +(`PR-#9487 `__) + +Pull-Requests: +~~~~~~~~~~~~~~ + +* PR `#8984 `_: Support @gufunc inside @jit (`guilhermeleobas `_) +* PR `#9239 `_: ufunc.at (`guilhermeleobas `_) +* PR `#9274 `_: CUDA: Add support for compilation to LTO-IR (`gmarkall `_) +* PR `#9364 `_: Release notes fixes for appropriate Towncrier header underlines (`kc611 `_) +* PR `#9367 `_: Document release notes generation (`gmarkall `_) +* PR `#9368 `_: Added 0.59.0 release notes (`kc611 `_) +* PR `#9369 `_: Fix release notes link in bug report template (`gmarkall `_) +* PR `#9378 `_: Add `float()` ctor (`guilhermeleobas `_) +* PR `#9394 `_: fix `TypeError: '_DeviceContextManager' object is not callable` (`i7878 `_) +* PR `#9411 `_: Doc updates for 0.59.0 final. (`stuartarchibald `_) +* PR `#9416 `_: Add math.log2 support (`guilhermeleobas `_) +* PR `#9417 `_: Add np.log* bindings for CUDA (`guilhermeleobas `_ `gmarkall `_) +* PR `#9425 `_: Post release for 0.59.0 (`sklam `_) +* PR `#9436 `_: Add timing and junit xml output to testsuite (`sklam `_) +* PR `#9437 `_: Remove dependencies between Numba's Cpython and NumPy module (`kc611 `_) +* PR `#9438 `_: Add math.nextafter support for nopython mode. (`groutr `_) +* PR `#9454 `_: Don't attempt to register overloads that aren't for this target in `BaseContext` and related fixes (`gmarkall `_) +* PR `#9455 `_: Support datetime types in `isinstance()` (`sklam `_) +* PR `#9456 `_: Update release checklist (`sklam `_) +* PR `#9466 `_: Numpy 2.0 binary support testing (`kc611 `_) +* PR `#9468 `_: adding git-copy.py script (`esc `_) +* PR `#9482 `_: Add support for `sys.monitoring` events. (`stuartarchibald `_) +* PR `#9487 `_: Add CUDA 12 conda installation docs (`bdice `_ `gmarkall `_) +* PR `#9488 `_: Update overview.rst (`jftsang `_) +* PR `#9502 `_: Post release task for 0.59.1 (`sklam `_) +* PR `#9504 `_: added np.size() overload and added tests (`shourya5 `_) +* PR `#9521 `_: Support binop reduction. (`DrTodd13 `_) +* PR `#9531 `_: Module pass manager: Don't add passes for unsupported LLVM versions (`gmarkall `_) +* PR `#9532 `_: Fix hoisting bug to exclude variables used in containers or calls. (`DrTodd13 `_) +* PR `#9539 `_: Revert PR #6870 `numba.core.retarget` (`sklam `_) +* PR `#9549 `_: Make new_style the default error capturing mode (`gmarkall `_ `sklam `_) +* PR `#9558 `_: Added 0.60.0 release notes (`kc611 `_) +* PR `#9559 `_: Update version support table 0.60 (`esc `) + +Authors: +~~~~~~~~ + +* `bdice `_ +* `DrTodd13 `_ +* `esc `_ +* `gmarkall `_ +* `groutr `_ +* `guilhermeleobas `_ +* `i7878 `_ +* `jftsang `_ +* `kc611 `_ +* `shourya5 `_ +* `sklam `_ +* `stuartarchibald `_ diff --git a/docs/upcoming_changes/8984.new_feature.rst b/docs/upcoming_changes/8984.new_feature.rst deleted file mode 100644 index 49cfe72a2ec..00000000000 --- a/docs/upcoming_changes/8984.new_feature.rst +++ /dev/null @@ -1,8 +0,0 @@ -Enhance guvectorize support in JIT code ---------------------------------------- - -Generalized universal function support is extended, it is now possible to call -a ``@guvectorize`` decorated function from within a JIT-compiled function. -However, please note that broadcasting is not supported yet. Calling a -guvectorize function in a scenario where broadcast is needed may result in -incorrect behavior. \ No newline at end of file diff --git a/docs/upcoming_changes/9239.new_feature.rst b/docs/upcoming_changes/9239.new_feature.rst deleted file mode 100644 index 56cc8ae2386..00000000000 --- a/docs/upcoming_changes/9239.new_feature.rst +++ /dev/null @@ -1,4 +0,0 @@ -Add experimental support for ufunc.at -------------------------------------- - -Experimental support for ``ufunc.at`` is added. diff --git a/docs/upcoming_changes/9274.cuda.rst b/docs/upcoming_changes/9274.cuda.rst deleted file mode 100644 index 516467837a9..00000000000 --- a/docs/upcoming_changes/9274.cuda.rst +++ /dev/null @@ -1,5 +0,0 @@ -Support for compilation to LTO-IR ---------------------------------- - -Support for compiling device functions to LTO-IR in the compilation API is -added. diff --git a/docs/upcoming_changes/9378.new_feature.rst b/docs/upcoming_changes/9378.new_feature.rst deleted file mode 100644 index 438e3a124dd..00000000000 --- a/docs/upcoming_changes/9378.new_feature.rst +++ /dev/null @@ -1,4 +0,0 @@ -Add ``float()`` ctor -==================================== - -Support for ``float()`` is added. diff --git a/docs/upcoming_changes/9394.doc.rst b/docs/upcoming_changes/9394.doc.rst deleted file mode 100644 index 480dd855643..00000000000 --- a/docs/upcoming_changes/9394.doc.rst +++ /dev/null @@ -1,5 +0,0 @@ -``numba.cuda.gpus.current`` documentation correction -==================================================== - -``numba.cuda.gpus.current`` was erroneously described -as a function, is now described as an attribute. \ No newline at end of file diff --git a/docs/upcoming_changes/9416.new_feature.rst b/docs/upcoming_changes/9416.new_feature.rst deleted file mode 100644 index 7703945bf7e..00000000000 --- a/docs/upcoming_changes/9416.new_feature.rst +++ /dev/null @@ -1,4 +0,0 @@ -Add support for ``math.log2``. ------------------------------- - -Support for ``math.log2`` is added. \ No newline at end of file diff --git a/docs/upcoming_changes/9417.cuda.rst b/docs/upcoming_changes/9417.cuda.rst deleted file mode 100644 index 490a9e92d3a..00000000000 --- a/docs/upcoming_changes/9417.cuda.rst +++ /dev/null @@ -1,4 +0,0 @@ -Support math.log, math.log2 and math.log10 in CUDA --------------------------------------------------- - -CUDA target now supports ``np.log``, ``np.log2`` and ``np.log10``. \ No newline at end of file diff --git a/docs/upcoming_changes/9438.new_feature.rst b/docs/upcoming_changes/9438.new_feature.rst deleted file mode 100644 index 16c42736e44..00000000000 --- a/docs/upcoming_changes/9438.new_feature.rst +++ /dev/null @@ -1,4 +0,0 @@ -Add math.nextafter support for nopython mode. ---------------------------------------------- - -Support ``math.nextafter`` in nopython mode. diff --git a/docs/upcoming_changes/9455.improvement.rst b/docs/upcoming_changes/9455.improvement.rst deleted file mode 100644 index f5d9a32e07f..00000000000 --- a/docs/upcoming_changes/9455.improvement.rst +++ /dev/null @@ -1,5 +0,0 @@ -Expand ``isinstance()`` support for NumPy datetime types --------------------------------------------------------- - -Adds support of ``numpy.datetime64`` and ``numpy.timedelta64`` types in -``isinstance()``. diff --git a/docs/upcoming_changes/9466.highlight.rst b/docs/upcoming_changes/9466.highlight.rst deleted file mode 100644 index 18cb8c37a3b..00000000000 --- a/docs/upcoming_changes/9466.highlight.rst +++ /dev/null @@ -1,19 +0,0 @@ -NumPy 2.0 Binary Support ------------------------- - -Added Binary Support for NumPy 2.0. However, this does not yet include -NEP 50 related type-level changes which are still in progress. - -Following is a summary of the user facing changes: - -* The ``ptp()`` method previously available for arrays has been deprecated. - Instead, it is recommended to use the ``np.ptp(arr)`` function. -* The data type ``np.bool8`` has been deprecated and replaced with ``np.bool``. -* The ``np.product`` function is deprecated; users are advised to use - ``np.prod`` instead. -* Starting from NumPy version 2.0, the ``itemset()`` method has been removed - from the ``ndarray`` class. To achieve the same functionality, utilize - the assignment operation ``arr[index] = value``. -* Deprecated constants ``np.PINF`` and ``np.NINF`` should be replaced with - ``np.inf`` for positive infinity and ``-np.inf`` for negative infinity, - respectively. diff --git a/docs/upcoming_changes/9482.improvement.rst b/docs/upcoming_changes/9482.improvement.rst deleted file mode 100644 index ebcc2f7ce8c..00000000000 --- a/docs/upcoming_changes/9482.improvement.rst +++ /dev/null @@ -1,12 +0,0 @@ -Python 3.12 ``sys.monitoring`` support is added to Numba's dispatcher. ----------------------------------------------------------------------- - -Python 3.12 introduced a new module ``sys.monitoring`` that makes available an -event driven monitoring API for use in tools that need to monitor execution e.g. -debuggers or profilers. Numba's dispatcher class (the code that handles transfer -of control between the Python interpreter and compiled code) has been updated to -emit ``sys.monitoring.events.PY_START`` and ``sys.monitoring.events.PY_RETURN`` -as appropriate. This allows tools that are watching for these events to identify -when control has entered and returned from compiled code. As a result of this -change, Numba compiled code is now identified by ``cProfile`` in the same way -that it has been historically i.e. it will be present in performance profiles. diff --git a/docs/upcoming_changes/9487.doc.rst b/docs/upcoming_changes/9487.doc.rst deleted file mode 100644 index 96f68280df8..00000000000 --- a/docs/upcoming_changes/9487.doc.rst +++ /dev/null @@ -1,4 +0,0 @@ -CUDA 12 conda installation documentation ----------------------------------------- - -Installation instructions have been added for CUDA 12 conda users. diff --git a/docs/upcoming_changes/9504.np_support.rst b/docs/upcoming_changes/9504.np_support.rst deleted file mode 100644 index 01d220a51b8..00000000000 --- a/docs/upcoming_changes/9504.np_support.rst +++ /dev/null @@ -1,4 +0,0 @@ -Added support for ``np.size()`` -------------------------------- - -Added ``np.size()`` support for numpy, which was previously unsupported. \ No newline at end of file diff --git a/docs/upcoming_changes/9521.new_feature.rst b/docs/upcoming_changes/9521.new_feature.rst deleted file mode 100644 index 1ce0326a97d..00000000000 --- a/docs/upcoming_changes/9521.new_feature.rst +++ /dev/null @@ -1,4 +0,0 @@ -Add support for parfor binop reductions. ----------------------------------------- - -Previously, only operations with inplace operations like += could be used as reductions in pranges. Now, with this PR, binop reductions of the form a = a binop b can be used. diff --git a/docs/upcoming_changes/9532.bug_fix.rst b/docs/upcoming_changes/9532.bug_fix.rst deleted file mode 100644 index 5c5154c42e3..00000000000 --- a/docs/upcoming_changes/9532.bug_fix.rst +++ /dev/null @@ -1,6 +0,0 @@ -Fix parfor variable hoisting analysis. --------------------------------------- - -If a variable is used to build a container (e.g., tuple, list, map, set) or is passed as an -argument to a call then conservatively assume it could escape the current iteration of -the parfor and so should not be hoisted. diff --git a/docs/upcoming_changes/9539.expired.rst b/docs/upcoming_changes/9539.expired.rst deleted file mode 100644 index 1fbaca9ee56..00000000000 --- a/docs/upcoming_changes/9539.expired.rst +++ /dev/null @@ -1,7 +0,0 @@ -Removal of ``numba.core.retarget`` ----------------------------------- - -The experimental features implemented in ``numba.core.retarget`` have been -removed. These features were primarily used in numba-dpex, but that project has -replaced its use of ``numba.core.retarget`` with a preference for -*target extension API*. diff --git a/docs/upcoming_changes/9549.deprecation.rst b/docs/upcoming_changes/9549.deprecation.rst deleted file mode 100644 index 1c4064d3714..00000000000 --- a/docs/upcoming_changes/9549.deprecation.rst +++ /dev/null @@ -1,5 +0,0 @@ -Deprecate `old_style` error-capturing -------------------------------------- - -Per deprecation schedule, `old_style` error-capturing is deprecated and the -`default` is now `new_style`.