summaryrefslogtreecommitdiff
path: root/doc/release
diff options
context:
space:
mode:
Diffstat (limited to 'doc/release')
-rw-r--r--doc/release/numpy2_changes/23089.change.rst2
-rw-r--r--doc/release/numpy2_changes/README.md4
-rw-r--r--doc/release/upcoming_changes/10615.deprecation.rst14
-rw-r--r--doc/release/upcoming_changes/12065.performance.rst6
-rw-r--r--doc/release/upcoming_changes/16154.new_feature.rst25
-rw-r--r--doc/release/upcoming_changes/18053.new_feature.rst4
-rw-r--r--doc/release/upcoming_changes/18535.improvement.rst7
-rw-r--r--doc/release/upcoming_changes/19388.improvement.rst10
-rw-r--r--doc/release/upcoming_changes/19388.new_feature.rst10
-rwxr-xr-xdoc/release/upcoming_changes/20913.improvement.rst12
-rw-r--r--doc/release/upcoming_changes/20924.compatibility.rst13
-rw-r--r--doc/release/upcoming_changes/21120.new_feature.rst21
-rw-r--r--doc/release/upcoming_changes/21437.improvement.rst33
-rw-r--r--doc/release/upcoming_changes/21468.new_feature.rst6
-rw-r--r--doc/release/upcoming_changes/21483.performance.rst7
-rw-r--r--doc/release/upcoming_changes/21506.change.rst18
-rw-r--r--doc/release/upcoming_changes/21595.new_feature.rst5
-rw-r--r--doc/release/upcoming_changes/21623.new_feature.rst6
-rw-r--r--doc/release/upcoming_changes/21627.new_feature.rst16
-rw-r--r--doc/release/upcoming_changes/21645.expired.rst4
-rw-r--r--doc/release/upcoming_changes/21807.improvement.rst7
-rw-r--r--doc/release/upcoming_changes/21925.compatibility.rst12
-rw-r--r--doc/release/upcoming_changes/21976.new_feature.rst33
-rw-r--r--doc/release/upcoming_changes/21995.compatibility.rst21
-rw-r--r--doc/release/upcoming_changes/22004.expired.rst2
-rw-r--r--doc/release/upcoming_changes/22014.improvement.rst10
-rw-r--r--doc/release/upcoming_changes/22046.change.rst7
-rw-r--r--doc/release/upcoming_changes/22139.expired.rst4
-rw-r--r--doc/release/upcoming_changes/22159.expired.rst1
-rw-r--r--doc/release/upcoming_changes/22228.expired.rst5
-rw-r--r--doc/release/upcoming_changes/22313.deprecation.rst10
-rw-r--r--doc/release/upcoming_changes/22315.performance.rst7
-rw-r--r--doc/release/upcoming_changes/22357.improvement.rst6
-rw-r--r--doc/release/upcoming_changes/22393.deprecation.rst17
-rw-r--r--doc/release/upcoming_changes/22456.deprecation.rst4
-rw-r--r--doc/release/upcoming_changes/22457.change.rst8
-rw-r--r--doc/release/upcoming_changes/22575.compatibility.rst9
-rw-r--r--doc/release/upcoming_changes/22637.compatibility.rst15
-rw-r--r--doc/release/upcoming_changes/22638.deprecation.rst2
-rw-r--r--doc/release/upcoming_changes/22638.expired.rst1
-rw-r--r--doc/release/upcoming_changes/22644.new_feature.rst7
-rw-r--r--doc/release/upcoming_changes/22675.compatibility.rst6
-rw-r--r--doc/release/upcoming_changes/22707.compatibility.rst4
-rw-r--r--doc/release/upcoming_changes/22707.expired.rst13
-rw-r--r--doc/release/upcoming_changes/22707.improvement.rst8
-rw-r--r--doc/release/upcoming_changes/22769.improvement.rst5
-rw-r--r--doc/release/upcoming_changes/22776.improvement.rst6
-rw-r--r--doc/release/upcoming_changes/22863.new_feature.rst4
-rw-r--r--doc/release/upcoming_changes/22963.new_feature.rst7
-rw-r--r--doc/release/upcoming_changes/22982.new_feature.rst13
-rw-r--r--doc/release/upcoming_changes/22997.improvement.rst5
-rw-r--r--doc/release/upcoming_changes/22998.expired.rst2
-rw-r--r--doc/release/upcoming_changes/23011.deprecation.rst1
-rw-r--r--doc/release/upcoming_changes/23019.expired.rst2
-rw-r--r--doc/release/upcoming_changes/23020.change.rst9
-rw-r--r--doc/release/upcoming_changes/23020.performance.rst5
-rw-r--r--doc/release/upcoming_changes/23041.expired.rst27
-rw-r--r--doc/release/upcoming_changes/23060.expired.rst5
-rw-r--r--doc/release/upcoming_changes/23105.compatibility.rst5
-rw-r--r--doc/release/upcoming_changes/23113.improvement.rst3
-rw-r--r--doc/release/upcoming_changes/23136.performance.rst18
-rw-r--r--doc/release/upcoming_changes/23195.improvement.rst20
-rw-r--r--doc/release/upcoming_changes/23229.compatibility.rst3
-rw-r--r--doc/release/upcoming_changes/23240.compatibility.rst10
-rw-r--r--doc/release/upcoming_changes/23275.improvement.rst4
-rw-r--r--doc/release/upcoming_changes/23302.deprecation.rst1
-rw-r--r--doc/release/upcoming_changes/23314.deprecation.rst4
-rw-r--r--doc/release/upcoming_changes/23322.improvement.rst4
-rw-r--r--doc/release/upcoming_changes/23357.improvement.rst9
-rw-r--r--doc/release/upcoming_changes/23358.improvement.rst5
-rw-r--r--doc/release/upcoming_changes/23376.expired.rst9
-rw-r--r--doc/release/upcoming_changes/23403.expired.rst4
-rw-r--r--doc/release/upcoming_changes/23480.expired.rst1
-rw-r--r--doc/release/upcoming_changes/23528.compatibility.rst16
-rw-r--r--doc/release/upcoming_changes/23601.change.rst6
-rw-r--r--doc/release/upcoming_changes/23660.expired.rst2
-rw-r--r--doc/release/upcoming_changes/23661.performance.rst4
-rw-r--r--doc/release/upcoming_changes/23666.expired.rst5
-rw-r--r--doc/release/upcoming_changes/23713.improvement.rst9
79 files changed, 357 insertions, 318 deletions
diff --git a/doc/release/numpy2_changes/23089.change.rst b/doc/release/numpy2_changes/23089.change.rst
new file mode 100644
index 000000000..fbd87e0aa
--- /dev/null
+++ b/doc/release/numpy2_changes/23089.change.rst
@@ -0,0 +1,2 @@
+* ``np.gradient()`` now returns a tuple rather than list making the
+ return value immutable.
diff --git a/doc/release/numpy2_changes/README.md b/doc/release/numpy2_changes/README.md
new file mode 100644
index 000000000..fb59749a9
--- /dev/null
+++ b/doc/release/numpy2_changes/README.md
@@ -0,0 +1,4 @@
+Same as ``../upcoming_changes`` but for changes that currently
+are opt-in behind ``NPY_NUMPY_2_BEHAVIOR=1``.
+
+This is to get a start on release notes for such changes.
diff --git a/doc/release/upcoming_changes/10615.deprecation.rst b/doc/release/upcoming_changes/10615.deprecation.rst
new file mode 100644
index 000000000..7fa948ea8
--- /dev/null
+++ b/doc/release/upcoming_changes/10615.deprecation.rst
@@ -0,0 +1,14 @@
+Only ndim-0 arrays are treated as scalars
+-----------------------------------------
+NumPy used to treat all arrays of size 1 (e.g., ``np.array([3.14])``) as scalars.
+In the future, this will be limited to arrays of ndim 0 (e.g., ``np.array(3.14)``).
+The following expressions will report a deprecation warning:
+
+.. code-block:: python
+
+ a = np.array([3.14])
+ float(a) # better: a[0] to get the numpy.float or a.item()
+
+ b = np.array([[3.14]])
+ c = numpy.random.rand(10)
+ c[0] = b # better: c[0] = b[0, 0]
diff --git a/doc/release/upcoming_changes/12065.performance.rst b/doc/release/upcoming_changes/12065.performance.rst
deleted file mode 100644
index 08d1263b9..000000000
--- a/doc/release/upcoming_changes/12065.performance.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-Faster version of ``np.isin`` and ``np.in1d`` for integer arrays
-----------------------------------------------------------------
-``np.in1d`` (used by ``np.isin``) can now switch to a faster algorithm
-(up to >10x faster) when it is passed two integer arrays.
-This is often automatically used, but you can use ``kind="sort"`` or
-``kind="table"`` to force the old or new method, respectively. \ No newline at end of file
diff --git a/doc/release/upcoming_changes/16154.new_feature.rst b/doc/release/upcoming_changes/16154.new_feature.rst
deleted file mode 100644
index 99d4b1b04..000000000
--- a/doc/release/upcoming_changes/16154.new_feature.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-New attribute ``symbol`` added to polynomial classes
-----------------------------------------------------
-
-The polynomial classes in the ``numpy.polynomial`` package have a new
-``symbol`` attribute which is used to represent the indeterminate
-of the polynomial.
-This can be used to change the value of the variable when printing::
-
- >>> P_y = np.polynomial.Polynomial([1, 0, -1], symbol="y")
- >>> print(P_y)
- 1.0 + 0.0·y¹ - 1.0·y²
-
-Note that the polynomial classes only support 1D polynomials, so operations
-that involve polynomials with different symbols are disallowed when the
-result would be multivariate::
-
- >>> P = np.polynomial.Polynomial([1, -1]) # default symbol is "x"
- >>> P_z = np.polynomial.Polynomial([1, 1], symbol="z")
- >>> P * P_z
- Traceback (most recent call last)
- ...
- ValueError: Polynomial symbols differ
-
-The symbol can be any valid Python identifier. The default is ``symbol=x``,
-consistent with existing behavior.
diff --git a/doc/release/upcoming_changes/18053.new_feature.rst b/doc/release/upcoming_changes/18053.new_feature.rst
new file mode 100644
index 000000000..fea04f79a
--- /dev/null
+++ b/doc/release/upcoming_changes/18053.new_feature.rst
@@ -0,0 +1,4 @@
+``np.einsum`` now accepts arrays with ``object`` dtype
+------------------------------------------------------
+The code path will call python operators on object dtype arrays, much
+like ``np.dot`` and ``np.matmul``.
diff --git a/doc/release/upcoming_changes/18535.improvement.rst b/doc/release/upcoming_changes/18535.improvement.rst
new file mode 100644
index 000000000..a0386b3bf
--- /dev/null
+++ b/doc/release/upcoming_changes/18535.improvement.rst
@@ -0,0 +1,7 @@
+Fix power of complex zero
+-------------------------
+``np.power`` now returns a different result for ``0^{non-zero}``
+for complex numbers. Note that the value is only defined when
+the real part of the exponent is larger than zero.
+Previously, NaN was returned unless the imaginary part was strictly
+zero. The return value is either ``0+0j`` or ``0-0j``.
diff --git a/doc/release/upcoming_changes/19388.improvement.rst b/doc/release/upcoming_changes/19388.improvement.rst
deleted file mode 100644
index c899f9019..000000000
--- a/doc/release/upcoming_changes/19388.improvement.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-F2PY Improvements
------------------
-
-* The generated extension modules don't use the deprecated NumPy-C API anymore
-* Improved ``f2py`` generated exception messages
-* Numerous bug and ``flake8`` warning fixes
-* various CPP macros that one can use within C-expressions of signature files are prefixed with ``f2py_``. For example, one should use ``f2py_len(x)`` instead of ``len(x)``
-* A new construct ``character(f2py_len=...)`` is introduced to support returning assumed length character strings (e.g. ``character(len=*)``) from wrapper functions
-
-A hook to support rewriting ``f2py`` internal data structures after reading all its input files is introduced. This is required, for instance, for BC of SciPy support where character arguments are treated as character strings arguments in ``C`` expressions.
diff --git a/doc/release/upcoming_changes/19388.new_feature.rst b/doc/release/upcoming_changes/19388.new_feature.rst
deleted file mode 100644
index bffe5753b..000000000
--- a/doc/release/upcoming_changes/19388.new_feature.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-F2PY support for Fortran ``character`` strings
-----------------------------------------------
-F2PY now supports wrapping Fortran functions with:
-
-* character (e.g. ``character x``)
-* character array (e.g. ``character, dimension(n) :: x``)
-* character string (e.g. ``character(len=10) x``)
-* and character string array (e.g. ``character(len=10), dimension(n, m) :: x``)
-
-arguments, including passing Python unicode strings as Fortran character string arguments.
diff --git a/doc/release/upcoming_changes/20913.improvement.rst b/doc/release/upcoming_changes/20913.improvement.rst
deleted file mode 100755
index 335f44831..000000000
--- a/doc/release/upcoming_changes/20913.improvement.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-IBM zSystems Vector Extension Facility (SIMD)
----------------------------------------------
-
-Added support for SIMD extensions of zSystem (z13, z14, z15),
-through the universal intrinsics interface. This support leads
-to performance improvements for all SIMD kernels implemented
-using the universal intrinsics, including the following operations:
-
-rint, floor, trunc, ceil, sqrt, absolute, square, reciprocal, tanh, sin, cos,
-equal, not_equal, greater, greater_equal, less, less_equal,
-maximum, minimum, fmax, fmin, argmax, argmin,
-add, subtract, multiply, divide.
diff --git a/doc/release/upcoming_changes/20924.compatibility.rst b/doc/release/upcoming_changes/20924.compatibility.rst
deleted file mode 100644
index 02f3e9fdb..000000000
--- a/doc/release/upcoming_changes/20924.compatibility.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-``array.fill(scalar)`` may behave slightly different
-----------------------------------------------------
-`~numpy.ndarray.fill` may in some cases behave slightly different
-now due to the fact that the logic is aligned with item assignment::
-
- arr = np.array([1]) # with any dtype/value
- arr.fill(scalar)
- # is now identical to:
- arr[0] = scalar
-
-Previously casting may have produced slightly different answers when using
-values that could not be represented in the target ``dtype`` or when the
-target had ``object`` dtype.
diff --git a/doc/release/upcoming_changes/21120.new_feature.rst b/doc/release/upcoming_changes/21120.new_feature.rst
new file mode 100644
index 000000000..7d4dbf743
--- /dev/null
+++ b/doc/release/upcoming_changes/21120.new_feature.rst
@@ -0,0 +1,21 @@
+Add support for inplace matrix multiplication
+----------------------------------------------
+It is now possible to perform inplace matrix multiplication
+via the ``@=`` operator.
+
+.. code-block:: python
+
+ >>> import numpy as np
+
+ >>> a = np.arange(6).reshape(3, 2)
+ >>> print(a)
+ [[0 1]
+ [2 3]
+ [4 5]]
+
+ >>> b = np.ones((2, 2), dtype=int)
+ >>> a @= b
+ >>> print(a)
+ [[1 1]
+ [5 5]
+ [9 9]]
diff --git a/doc/release/upcoming_changes/21437.improvement.rst b/doc/release/upcoming_changes/21437.improvement.rst
deleted file mode 100644
index 291483b5f..000000000
--- a/doc/release/upcoming_changes/21437.improvement.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-NumPy now gives floating point errors in casts
-----------------------------------------------
-
-In most cases, NumPy previously did not give floating point
-warnings or errors when these happened during casts.
-For examples, casts like::
-
- np.array([2e300]).astype(np.float32) # overflow for float32
- np.array([np.inf]).astype(np.int64)
-
-Should now generally give floating point warnings. These warnings
-should warn that floating point overflow occurred.
-For errors when converting floating point values to integers users
-should expect invalid value warnings.
-
-Users can modify the behavior of these warnings using `np.errstate`.
-
-Note that for float to int casts, the exact warnings that are given may
-be platform dependent. For example::
-
- arr = np.full(100, value=1000, dtype=np.float64)
- arr.astype(np.int8)
-
-May give a result equivalent to (the intermediate cast means no warning is given)::
-
- arr.astype(np.int64).astype(np.int8)
-
-May return an undefined result, with a warning set::
-
- RuntimeWarning: invalid value encountered in cast
-
-The precise behavior is subject to the C99 standard and its implementation
-in both software and hardware.
diff --git a/doc/release/upcoming_changes/21468.new_feature.rst b/doc/release/upcoming_changes/21468.new_feature.rst
deleted file mode 100644
index c37f05735..000000000
--- a/doc/release/upcoming_changes/21468.new_feature.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-New function ``np.show_runtime``
---------------------------------
-
-A new function `numpy.show_runtime` has been added to display the runtime
-information of the machine in addition to `numpy.show_config` which displays
-the build-related information.
diff --git a/doc/release/upcoming_changes/21483.performance.rst b/doc/release/upcoming_changes/21483.performance.rst
deleted file mode 100644
index f9456d69f..000000000
--- a/doc/release/upcoming_changes/21483.performance.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-Faster comparison operators
-----------------------------
-The comparison functions (``numpy.equal``, ``numpy.not_equal``, ``numpy.less``,
-``numpy.less_equal``, ``numpy.greater`` and ``numpy.greater_equal``) are now
-much faster as they are now vectorized with universal intrinsics. For a CPU
-with SIMD extension AVX512BW, the performance gain is up to 2.57x, 1.65x and
-19.15x for integer, float and boolean data types, respectively (with N=50000).
diff --git a/doc/release/upcoming_changes/21506.change.rst b/doc/release/upcoming_changes/21506.change.rst
deleted file mode 100644
index 18bc6cbc2..000000000
--- a/doc/release/upcoming_changes/21506.change.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-Better reporting of integer division overflow
----------------------------------------------
-
-Integer division overflow of scalars and arrays used to provide a ``RuntimeWarning``
-and the return value was undefined leading to crashes at rare occasions::
-
- >>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
- <stdin>:1: RuntimeWarning: divide by zero encountered in floor_divide
- array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32)
-
-Integer division overflow now returns the input dtype's minimum value and raise the
-following ``RuntimeWarning``::
-
- >>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1)
- <stdin>:1: RuntimeWarning: overflow encountered in floor_divide
- array([-2147483648, -2147483648, -2147483648, -2147483648, -2147483648,
- -2147483648, -2147483648, -2147483648, -2147483648, -2147483648],
- dtype=int32)
diff --git a/doc/release/upcoming_changes/21595.new_feature.rst b/doc/release/upcoming_changes/21595.new_feature.rst
deleted file mode 100644
index 21b2a746f..000000000
--- a/doc/release/upcoming_changes/21595.new_feature.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-``strict`` option for `testing.assert_array_equal`
---------------------------------------------------
-The ``strict`` option is now available for `testing.assert_array_equal`.
-Setting ``strict=True`` will disable the broadcasting behaviour for scalars and
-ensure that input arrays have the same data type.
diff --git a/doc/release/upcoming_changes/21623.new_feature.rst b/doc/release/upcoming_changes/21623.new_feature.rst
deleted file mode 100644
index d783ef5a9..000000000
--- a/doc/release/upcoming_changes/21623.new_feature.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-New parameter ``equal_nan`` added to `np.unique`
-------------------------------------------------
-
-`np.unique` was changed in 1.21 to treat all ``NaN`` values as equal and return
-a single ``NaN``. Setting ``equal_nan=False`` will restore pre-1.21 behavior
-to treat ``NaNs`` as unique. Defaults to ``True``.
diff --git a/doc/release/upcoming_changes/21627.new_feature.rst b/doc/release/upcoming_changes/21627.new_feature.rst
deleted file mode 100644
index f516ac96d..000000000
--- a/doc/release/upcoming_changes/21627.new_feature.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-``casting`` and ``dtype`` keyword arguments for `numpy.stack`
--------------------------------------------------------------
-The ``casting`` and ``dtype`` keyword arguments are now available for `numpy.stack`.
-To use them, write ``np.stack(..., dtype=None, casting='same_kind')``.
-
-
-``casting`` and ``dtype`` keyword arguments for `numpy.vstack`
---------------------------------------------------------------
-The ``casting`` and ``dtype`` keyword arguments are now available for `numpy.vstack`.
-To use them, write ``np.vstack(..., dtype=None, casting='same_kind')``.
-
-
-``casting`` and ``dtype`` keyword arguments for `numpy.hstack`
---------------------------------------------------------------
-The ``casting`` and ``dtype`` keyword arguments are now available for `numpy.hstack`.
-To use them, write ``np.hstack(..., dtype=None, casting='same_kind')``. \ No newline at end of file
diff --git a/doc/release/upcoming_changes/21645.expired.rst b/doc/release/upcoming_changes/21645.expired.rst
deleted file mode 100644
index 4c9933244..000000000
--- a/doc/release/upcoming_changes/21645.expired.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-* The ``normed`` keyword argument has been removed from
- `np.histogram`, `np.histogram2d`, and `np.histogramdd`.
- Use ``density`` instead. If ``normed`` was passed by
- position, ``density`` is now used.
diff --git a/doc/release/upcoming_changes/21807.improvement.rst b/doc/release/upcoming_changes/21807.improvement.rst
deleted file mode 100644
index bfad55fb7..000000000
--- a/doc/release/upcoming_changes/21807.improvement.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-F2PY supports the value attribute
----------------------------------
-
-The Fortran standard requires that variables declared with the ``value``
-attribute must be passed by value instead of reference. F2PY now supports this
-use pattern correctly. So ``integer, intent(in), value :: x`` in Fortran codes
-will have correct wrappers generated.
diff --git a/doc/release/upcoming_changes/21925.compatibility.rst b/doc/release/upcoming_changes/21925.compatibility.rst
deleted file mode 100644
index af9c47127..000000000
--- a/doc/release/upcoming_changes/21925.compatibility.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-Subarray to object cast now copies
-----------------------------------
-Casting a dtype that includes a subarray to an object will now ensure
-a copy of the subarray. Previously an unsafe view was returned::
-
- arr = np.ones(3, dtype=[("f", "i", 3)])
- subarray_fields = arr.astype(object)[0]
- subarray = subarray_fields[0] # "f" field
-
- np.may_share_memory(subarray, arr)
-
-Is now always false. While previously it was true for the specific cast.
diff --git a/doc/release/upcoming_changes/21976.new_feature.rst b/doc/release/upcoming_changes/21976.new_feature.rst
deleted file mode 100644
index 387f093dd..000000000
--- a/doc/release/upcoming_changes/21976.new_feature.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-The bit generator underlying the singleton RandomState can be changed
----------------------------------------------------------------------
-The singleton ``RandomState`` instance exposed in the ``numpy.random`` module
-is initialized at startup with the ``MT19937` bit generator. The new
-function ``set_bit_generator`` allows the default bit generator to be
-replaced with a user-provided bit generator. This function has been introduced
-to provide a method allowing seamless integration of a high-quality, modern bit
-generator in new code with existing code that makes use of the
-singleton-provided random variate generating functions. The companion function
-``get_bit_generator`` returns the current bit generator being used by the
-singleton ``RandomState``. This is provided to simplify restoring
-the original source of randomness if required.
-
-The preferred method to generate reproducible random numbers is to use a modern
-bit generator in an instance of ``Generator``. The function ``default_rng``
-simplifies instantization.
-
- >>> rg = np.random.default_rng(3728973198)
- >>> rg.random()
-
-The same bit generator can then be shared with the singleton instance so that
-calling functions in the ``random`` module will use the same bit
-generator.
-
- >>> orig_bit_gen = np.random.get_bit_generator()
- >>> np.random.set_bit_generator(rg.bit_generator)
- >>> np.random.normal()
-
-The swap is permanent (until reversed) and so any call to functions
-in the ``random`` module will use the new bit generator. The original
-can be restored if required for code to run correctly.
-
- >>> np.random.set_bit_generator(orig_bit_gen)
diff --git a/doc/release/upcoming_changes/21995.compatibility.rst b/doc/release/upcoming_changes/21995.compatibility.rst
deleted file mode 100644
index 0ae5e3626..000000000
--- a/doc/release/upcoming_changes/21995.compatibility.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-Returned arrays respect uniqueness of dtype kwarg objects
----------------------------------------------------------
-When the ``dtype`` keyword argument is used with :py:func:`np.array()`
-or :py:func:`asarray()`, the dtype of the returned array now
-always exactly matches the dtype provided by the caller.
-
-In some cases this change means that a *view* rather than the
-input array is returned.
-The following is an example for this on 64bit Linux where ``long``
-and ``longlong`` are the same precision but different ``dtypes``::
-
- >>> arr = np.array([1, 2, 3], dtype="long")
- >>> new_dtype = np.dtype("longlong")
- >>> new = np.asarray(arr, dtype=new_dtype)
- >>> new.dtype is new_dtype
- True
- >>> new is arr
- False
-
-Before the change, the ``dtype`` did not match because ``new is arr``
-was ``True``.
diff --git a/doc/release/upcoming_changes/22004.expired.rst b/doc/release/upcoming_changes/22004.expired.rst
deleted file mode 100644
index e07dffa84..000000000
--- a/doc/release/upcoming_changes/22004.expired.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-* Ragged array creation will now always raise a ``ValueError`` unless
- ``dtype=object`` is passed. This includes very deeply nested sequences.
diff --git a/doc/release/upcoming_changes/22014.improvement.rst b/doc/release/upcoming_changes/22014.improvement.rst
deleted file mode 100644
index b32590c85..000000000
--- a/doc/release/upcoming_changes/22014.improvement.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-Added pickle support for third-party BitGenerators
---------------------------------------------------
-
-The pickle format for bit generators was extended to allow each bit generator
-to supply its own constructor when during pickling. Previous versions of NumPy
-only supported unpickling ``Generator`` instances created with one of the core set
-of bit generators supplied with NumPy. Attempting to unpickle a ``Generator``
-that used a third-party bit generators would fail since the constructor used during
-the unpickling was only aware of the bit generators included in NumPy.
-
diff --git a/doc/release/upcoming_changes/22046.change.rst b/doc/release/upcoming_changes/22046.change.rst
deleted file mode 100644
index 13a15f9e1..000000000
--- a/doc/release/upcoming_changes/22046.change.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-``masked_invalid`` now modifies the mask in-place
------------------------------------------------------------------
-
-When used with ``copy=False``, `numpy.ma.masked_invalid` now modifies the
-input masked array in-place.
-This makes it now behave identical to ``masked_where`` and better matches the
-documentation.
diff --git a/doc/release/upcoming_changes/22139.expired.rst b/doc/release/upcoming_changes/22139.expired.rst
deleted file mode 100644
index baf19a0b2..000000000
--- a/doc/release/upcoming_changes/22139.expired.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-* Support for Visual Studio 2015 and earlier has been removed.
-
-* Support for the Windows Interix POSIX interop layer has been removed.
-
diff --git a/doc/release/upcoming_changes/22159.expired.rst b/doc/release/upcoming_changes/22159.expired.rst
deleted file mode 100644
index bb8405718..000000000
--- a/doc/release/upcoming_changes/22159.expired.rst
+++ /dev/null
@@ -1 +0,0 @@
-* Support for cygwin < 3.3 has been removed.
diff --git a/doc/release/upcoming_changes/22228.expired.rst b/doc/release/upcoming_changes/22228.expired.rst
deleted file mode 100644
index 220ae2a7b..000000000
--- a/doc/release/upcoming_changes/22228.expired.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-* The mini() method of ``np.ma.MaskedArray`` has been removed. Use either
- ``np.ma.MaskedArray.min()`` or ``np.ma.minimum.reduce()``.
-
-* The single-argument form of ``np.ma.minimum`` and ``np.ma.maximum`` has been
- removed. Use ``np.ma.minimum.reduce()`` or ``np.ma.maximum.reduce()`` instead.
diff --git a/doc/release/upcoming_changes/22313.deprecation.rst b/doc/release/upcoming_changes/22313.deprecation.rst
deleted file mode 100644
index c4a0a4a9a..000000000
--- a/doc/release/upcoming_changes/22313.deprecation.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-Deprecate fastCopyAndTranspose and PyArray_CopyAndTranspose
------------------------------------------------------------
-
-The ``numpy.fastCopyAndTranspose`` function has been deprecated. Use the
-corresponding copy and transpose methods directly::
-
- arr.T.copy()
-
-The underlying C function ``PyArray_CopyAndTranspose`` has also been
-deprecated from the NumPy C-API.
diff --git a/doc/release/upcoming_changes/22315.performance.rst b/doc/release/upcoming_changes/22315.performance.rst
new file mode 100644
index 000000000..a2f623e5a
--- /dev/null
+++ b/doc/release/upcoming_changes/22315.performance.rst
@@ -0,0 +1,7 @@
+Faster ``np.sort`` on AVX-512 enabled processors
+------------------------------------------------
+Quicksort for 16-bit and 64-bit dtypes gain up to 15x and 9x speed up on
+processors that support AVX-512 instruction set.
+
+Thanks to `Intel corporation <https://open.intel.com/>`_ for sponsoring this
+work.
diff --git a/doc/release/upcoming_changes/22357.improvement.rst b/doc/release/upcoming_changes/22357.improvement.rst
deleted file mode 100644
index a0332eaa0..000000000
--- a/doc/release/upcoming_changes/22357.improvement.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-``numpy.typing`` protocols are now runtime checkable
-----------------------------------------------------
-
-The protocols used in `~numpy.typing.ArrayLike` and `~numpy.typing.DTypeLike`
-are now properly marked as runtime checkable, making them easier to use for
-runtime type checkers.
diff --git a/doc/release/upcoming_changes/22393.deprecation.rst b/doc/release/upcoming_changes/22393.deprecation.rst
deleted file mode 100644
index 52099506c..000000000
--- a/doc/release/upcoming_changes/22393.deprecation.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-Conversion of out-of-bound Python integers
-------------------------------------------
-Attempting a conversion from a Python integer to a NumPy
-value will now always check whether the result can be
-represented by NumPy. This means the following examples will
-fail in the future and give a ``DeprecationWarning`` now::
-
- np.uint8(-1)
- np.array([3000], dtype=np.int8)
-
-Many of these did succeed before. Such code was mainly
-useful for unsigned integers with negative values such as
-`np.uint8(-1)` giving `np.iinfo(np.uint8).max`.
-
-Note that conversion between NumPy integers is unaffected,
-so that `np.array(-1).astype(np.uint8)` continues to work
-and use C integer overflow logic.
diff --git a/doc/release/upcoming_changes/22456.deprecation.rst b/doc/release/upcoming_changes/22456.deprecation.rst
deleted file mode 100644
index ab5e7ee31..000000000
--- a/doc/release/upcoming_changes/22456.deprecation.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Deprecate ``msort``
--------------------
-
-The ``numpy.msort`` function is deprecated. Use ``np.sort(a, axis=0)`` instead.
diff --git a/doc/release/upcoming_changes/22457.change.rst b/doc/release/upcoming_changes/22457.change.rst
deleted file mode 100644
index 7d787441f..000000000
--- a/doc/release/upcoming_changes/22457.change.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-``nditer``/``NpyIter`` allows all allocating all operands
----------------------------------------------------------
-The NumPy iterator available through `np.nditer` in Python
-and as ``NpyIter`` in C now supports allocating all arrays.
-
-The iterator shape defaults to ``()`` in this case. The operands
-dtype must be provided, since a "common dtype" cannot be inferred
-from the other inputs.
diff --git a/doc/release/upcoming_changes/22575.compatibility.rst b/doc/release/upcoming_changes/22575.compatibility.rst
new file mode 100644
index 000000000..256a8e933
--- /dev/null
+++ b/doc/release/upcoming_changes/22575.compatibility.rst
@@ -0,0 +1,9 @@
+``np.pad`` with ``mode=wrap`` pads with strict multiples of original data
+-------------------------------------------------------------------------
+
+Code based on earlier version of ``pad`` that uses ``mode="wrap"`` will return
+different results when the padding size is larger than initial array.
+
+``np.pad`` with ``mode=wrap`` now always fills the space with
+strict multiples of original data even if the padding size is larger than the
+initial array.
diff --git a/doc/release/upcoming_changes/22637.compatibility.rst b/doc/release/upcoming_changes/22637.compatibility.rst
new file mode 100644
index 000000000..a35b70861
--- /dev/null
+++ b/doc/release/upcoming_changes/22637.compatibility.rst
@@ -0,0 +1,15 @@
+Cython ``long_t`` and ``ulong_t`` removed
+-----------------------------------------
+``long_t`` and ``ulong_t`` were aliases for ``longlong_t`` and ``ulonglong_t``
+and confusing (a remainder from of Python 2). This change may lead to the errors::
+
+ 'long_t' is not a type identifier
+ 'ulong_t' is not a type identifier
+
+We recommend use of bit-sized types such as ``cnp.int64_t`` or the use of
+``cnp.intp_t`` which is 32 bits on 32 bit systems and 64 bits on 64 bit
+systems (this is most compatible with indexing).
+If C ``long`` is desired, use plain ``long`` or ``npy_long``.
+``cnp.int_t`` is also ``long`` (NumPy's default integer). However, ``long``
+is 32 bit on 64 bit windows and we may wish to adjust this even in NumPy.
+(Please do not hesitate to contact NumPy developers if you are curious about this.)
diff --git a/doc/release/upcoming_changes/22638.deprecation.rst b/doc/release/upcoming_changes/22638.deprecation.rst
new file mode 100644
index 000000000..2db186106
--- /dev/null
+++ b/doc/release/upcoming_changes/22638.deprecation.rst
@@ -0,0 +1,2 @@
+* ``np.core.MachAr`` is deprecated. It is private API. In names
+ defined in ``np.core`` should generally be considered private.
diff --git a/doc/release/upcoming_changes/22638.expired.rst b/doc/release/upcoming_changes/22638.expired.rst
new file mode 100644
index 000000000..01e87fa9f
--- /dev/null
+++ b/doc/release/upcoming_changes/22638.expired.rst
@@ -0,0 +1 @@
+* ``np.core.machar`` and ``np.finfo.machar`` have been removed.
diff --git a/doc/release/upcoming_changes/22644.new_feature.rst b/doc/release/upcoming_changes/22644.new_feature.rst
new file mode 100644
index 000000000..e903fc7a0
--- /dev/null
+++ b/doc/release/upcoming_changes/22644.new_feature.rst
@@ -0,0 +1,7 @@
+NumPy now has an ``np.exceptions`` namespace
+--------------------------------------------
+NumPy now has a dedicated namespace making most exceptions
+and warnings available. All of these remain available in the
+main namespace, although some may be moved slowly in the future.
+The main reason for this is to increase discoverably and add
+future exceptions.
diff --git a/doc/release/upcoming_changes/22675.compatibility.rst b/doc/release/upcoming_changes/22675.compatibility.rst
new file mode 100644
index 000000000..f3c08246b
--- /dev/null
+++ b/doc/release/upcoming_changes/22675.compatibility.rst
@@ -0,0 +1,6 @@
+Changed error message and type for bad ``axes`` argument to ``ufunc``
+---------------------------------------------------------------------
+The error message and type when a wrong ``axes`` value is passed to
+``ufunc(..., axes=[...])``` has changed. The message is now more indicative of
+the problem, and if the value is mismatched an ``AxisError`` will be raised.
+A ``TypeError`` will still be raised for invalid input types.
diff --git a/doc/release/upcoming_changes/22707.compatibility.rst b/doc/release/upcoming_changes/22707.compatibility.rst
new file mode 100644
index 000000000..8c9805f37
--- /dev/null
+++ b/doc/release/upcoming_changes/22707.compatibility.rst
@@ -0,0 +1,4 @@
+* When comparing datetimes and timedelta using ``np.equal`` or ``np.not_equal``
+ numpy previously allowed the comparison with ``casting="unsafe"``.
+ This operation now fails. Forcing the output dtype using the ``dtype``
+ kwarg can make the operation succeed, but we do not recommend it.
diff --git a/doc/release/upcoming_changes/22707.expired.rst b/doc/release/upcoming_changes/22707.expired.rst
new file mode 100644
index 000000000..496752e8d
--- /dev/null
+++ b/doc/release/upcoming_changes/22707.expired.rst
@@ -0,0 +1,13 @@
+``==`` and ``!=`` warnings finalized
+------------------------------------
+The ``==`` and ``!=`` operators on arrays now always:
+
+* raise errors that occur during comparisons such as when the arrays
+ have incompatible shapes (``np.array([1, 2]) == np.array([1, 2, 3])``).
+* return an array of all ``True`` or all ``False`` when values are
+ fundamentally not comparable (e.g. have different dtypes). An example
+ is ``np.array(["a"]) == np.array([1])``.
+
+This mimics the Python behavior of returning ``False`` and ``True``
+when comparing incompatible types like ``"a" == 1`` and ``"a" != 1``.
+For a long time these gave ``DeprecationWarning`` or ``FutureWarning``.
diff --git a/doc/release/upcoming_changes/22707.improvement.rst b/doc/release/upcoming_changes/22707.improvement.rst
new file mode 100644
index 000000000..1b8d4f844
--- /dev/null
+++ b/doc/release/upcoming_changes/22707.improvement.rst
@@ -0,0 +1,8 @@
+New ``DTypePromotionError``
+---------------------------
+NumPy now has a new ``DTypePromotionError`` which is used when two
+dtypes cannot be promoted to a common one, for example::
+
+ np.result_type("M8[s]", np.complex128)
+
+raises this new exception.
diff --git a/doc/release/upcoming_changes/22769.improvement.rst b/doc/release/upcoming_changes/22769.improvement.rst
new file mode 100644
index 000000000..3566648ac
--- /dev/null
+++ b/doc/release/upcoming_changes/22769.improvement.rst
@@ -0,0 +1,5 @@
+`np.show_config` uses information from Meson
+--------------------------------------------
+Build and system information now contains information from Meson.
+`np.show_config` now has a new optional parameter ``mode`` to help
+customize the output.
diff --git a/doc/release/upcoming_changes/22776.improvement.rst b/doc/release/upcoming_changes/22776.improvement.rst
new file mode 100644
index 000000000..669fcff16
--- /dev/null
+++ b/doc/release/upcoming_changes/22776.improvement.rst
@@ -0,0 +1,6 @@
+Fix ``np.ma.diff`` not preserving the mask when called with arguments prepend/append.
+-------------------------------------------------------------------------------------
+Calling ``np.ma.diff`` with arguments prepend and/or append now returns a
+``MaskedArray`` with the input mask preserved.
+
+Previously, a ``MaskedArray`` without the mask was returned. \ No newline at end of file
diff --git a/doc/release/upcoming_changes/22863.new_feature.rst b/doc/release/upcoming_changes/22863.new_feature.rst
new file mode 100644
index 000000000..3f45ed834
--- /dev/null
+++ b/doc/release/upcoming_changes/22863.new_feature.rst
@@ -0,0 +1,4 @@
+String functions in np.char are compatible with NEP 42 custom dtypes
+--------------------------------------------------------------------
+Custom dtypes that represent unicode strings or byte strings can now be
+passed to the string functions in np.char.
diff --git a/doc/release/upcoming_changes/22963.new_feature.rst b/doc/release/upcoming_changes/22963.new_feature.rst
new file mode 100644
index 000000000..88ec3f641
--- /dev/null
+++ b/doc/release/upcoming_changes/22963.new_feature.rst
@@ -0,0 +1,7 @@
+String dtype instances can be created from the string abstract dtype classes
+----------------------------------------------------------------------------
+It is now possible to create a string dtype instance with a size without
+using the string name of the dtype. For example, ``type(np.dtype('U'))(8)``
+will create a dtype that is equivalent to ``np.dtype('U8')``. This feature
+is most useful when writing generic code dealing with string dtype
+classes.
diff --git a/doc/release/upcoming_changes/22982.new_feature.rst b/doc/release/upcoming_changes/22982.new_feature.rst
new file mode 100644
index 000000000..c98f2791c
--- /dev/null
+++ b/doc/release/upcoming_changes/22982.new_feature.rst
@@ -0,0 +1,13 @@
+Fujitsu C/C++ compiler is now supported
+----------------------------------------------
+Support for Fujitsu compiler has been added.
+To build with Fujitsu compiler, run:
+
+ python setup.py build -c fujitsu
+
+
+SSL2 is now supported
+-----------------------------------
+Support for SSL2 has been added. SSL2 is a library that provides OpenBLAS compatible GEMM functions.
+To enable SSL2, it need to edit site.cfg and build with Fujitsu compiler.
+See site.cfg.example.
diff --git a/doc/release/upcoming_changes/22997.improvement.rst b/doc/release/upcoming_changes/22997.improvement.rst
new file mode 100644
index 000000000..156c9dece
--- /dev/null
+++ b/doc/release/upcoming_changes/22997.improvement.rst
@@ -0,0 +1,5 @@
+Corrected error handling for NumPy C-API in Cython
+--------------------------------------------------
+Many NumPy C functions defined for use in Cython were lacking the
+correct error indicator like ``except -1`` or ``except *``.
+These have now been added.
diff --git a/doc/release/upcoming_changes/22998.expired.rst b/doc/release/upcoming_changes/22998.expired.rst
new file mode 100644
index 000000000..a4399b639
--- /dev/null
+++ b/doc/release/upcoming_changes/22998.expired.rst
@@ -0,0 +1,2 @@
+* ``+arr`` will now raise an error when the dtype is not
+ numeric (and positive is undefined).
diff --git a/doc/release/upcoming_changes/23011.deprecation.rst b/doc/release/upcoming_changes/23011.deprecation.rst
new file mode 100644
index 000000000..72168ff87
--- /dev/null
+++ b/doc/release/upcoming_changes/23011.deprecation.rst
@@ -0,0 +1 @@
+* ``np.finfo(None)`` is deprecated.
diff --git a/doc/release/upcoming_changes/23019.expired.rst b/doc/release/upcoming_changes/23019.expired.rst
new file mode 100644
index 000000000..0879c2658
--- /dev/null
+++ b/doc/release/upcoming_changes/23019.expired.rst
@@ -0,0 +1,2 @@
+* A sequence must now be passed into the stacking family of functions
+ (``stack``, ``vstack``, ``hstack``, ``dstack`` and ``column_stack``).
diff --git a/doc/release/upcoming_changes/23020.change.rst b/doc/release/upcoming_changes/23020.change.rst
new file mode 100644
index 000000000..b4198fcba
--- /dev/null
+++ b/doc/release/upcoming_changes/23020.change.rst
@@ -0,0 +1,9 @@
+Most NumPy functions are wrapped into a C-callable
+--------------------------------------------------
+To speed up the ``__array_function__`` dispatching, most NumPy functions
+are now wrapped into C-callables and are not proper Python functions or
+C methods.
+They still look and feel the same as before (like a Python function), and this
+should only improve performance and user experience (cleaner tracebacks).
+However, please inform the NumPy developers if this change confuses your
+program for some reason.
diff --git a/doc/release/upcoming_changes/23020.performance.rst b/doc/release/upcoming_changes/23020.performance.rst
new file mode 100644
index 000000000..db9fcbf3c
--- /dev/null
+++ b/doc/release/upcoming_changes/23020.performance.rst
@@ -0,0 +1,5 @@
+``__array_function__`` machinery is now much faster
+---------------------------------------------------
+The overhead of the majority of functions in NumPy is now smaller
+especially when keyword arguments are used. This change significantly
+speeds up many simple function calls.
diff --git a/doc/release/upcoming_changes/23041.expired.rst b/doc/release/upcoming_changes/23041.expired.rst
new file mode 100644
index 000000000..9049ea70f
--- /dev/null
+++ b/doc/release/upcoming_changes/23041.expired.rst
@@ -0,0 +1,27 @@
+Nose support has been removed
+-----------------------------
+NumPy switched to using pytest in 2018 and nose has been unmaintained for many
+years. We have kept NumPy's nose support to avoid breaking downstream projects
+who might have been using it and not yet switched to pytest or some other
+testing framework. With the arrival of Python 3.12, unpatched nose will raise
+an error. It is time to move on.
+
+Decorators removed
+^^^^^^^^^^^^^^^^^^
+- raises
+- slow
+- setastest
+- skipif
+- knownfailif
+- deprecated
+- parametrize
+- _needs_refcount
+
+These are not to be confused with pytest versions with similar names, e.g.,
+pytest.mark.slow, pytest.mark.skipif, pytest.mark.parametrize.
+
+Functions removed
+^^^^^^^^^^^^^^^^^
+- Tester
+- import_nose
+- run_module_suite
diff --git a/doc/release/upcoming_changes/23060.expired.rst b/doc/release/upcoming_changes/23060.expired.rst
new file mode 100644
index 000000000..f80ba6fd0
--- /dev/null
+++ b/doc/release/upcoming_changes/23060.expired.rst
@@ -0,0 +1,5 @@
+The ``numpy.testing.utils`` shim has been removed.
+--------------------------------------------------
+Importing from the ``numpy.testing.utils`` shim has been deprecated since 2019,
+the shim has now been removed. All imports should be made directly from
+``numpy.testing``.
diff --git a/doc/release/upcoming_changes/23105.compatibility.rst b/doc/release/upcoming_changes/23105.compatibility.rst
new file mode 100644
index 000000000..8a0b677e5
--- /dev/null
+++ b/doc/release/upcoming_changes/23105.compatibility.rst
@@ -0,0 +1,5 @@
+* When loading data from a file handle using ``np.load``,
+ if the handle is at the end of file, as can happen when reading
+ multiple arrays by calling ``np.load`` repeatedly, numpy previously
+ raised ``ValueError`` if ``allow_pickle=False``, and ``OSError`` if
+ ``allow_pickle=True``. Now it raises ``EOFError`` instead, in both cases.
diff --git a/doc/release/upcoming_changes/23113.improvement.rst b/doc/release/upcoming_changes/23113.improvement.rst
new file mode 100644
index 000000000..299b8f762
--- /dev/null
+++ b/doc/release/upcoming_changes/23113.improvement.rst
@@ -0,0 +1,3 @@
+- The ``NDArrayOperatorsMixin`` class now specifies that it contains no
+ ``__slots__`` ensureing that subclasses can now make use of this feature in
+ Python.
diff --git a/doc/release/upcoming_changes/23136.performance.rst b/doc/release/upcoming_changes/23136.performance.rst
new file mode 100644
index 000000000..1096f8bd1
--- /dev/null
+++ b/doc/release/upcoming_changes/23136.performance.rst
@@ -0,0 +1,18 @@
+``ufunc.at`` can be much faster
+-------------------------------
+Generic ``ufunc.at`` can be up to 9x faster. The conditions for this speedup:
+
+- operands are aligned
+- no casting
+
+If ufuncs with appropriate indexed loops on 1d arguments with the above
+conditions, ``ufunc.at`` can be up to 60x faster (an additional 7x speedup).
+Appropriate indexed loops have been added to ``add``, ``subtract``,
+``multiply``, ``floor_divide``, ``maximum``, ``minimum``, ``fmax``, and
+``fmin``.
+
+The internal logic is similar to the logic used for regular ufuncs, which also
+have fast paths.
+
+Thanks to the `D. E. Shaw group <https://deshaw.com/>`_ for sponsoring this
+work.
diff --git a/doc/release/upcoming_changes/23195.improvement.rst b/doc/release/upcoming_changes/23195.improvement.rst
new file mode 100644
index 000000000..38b33e849
--- /dev/null
+++ b/doc/release/upcoming_changes/23195.improvement.rst
@@ -0,0 +1,20 @@
+Ability to directly spawn random number generators
+--------------------------------------------------
+`numpy.random.Generator.spawn` now allows to directly spawn new
+independent child generators via the `numpy.random.SeedSequence.spawn`
+mechanism.
+`numpy.random.BitGenerator.spawn` does the same for the underlying
+bit generator.
+
+Additionally, `numpy.random.BitGenerator.seed_seq` now gives direct
+access to the seed sequence used for initializing the bit generator.
+This allows for example::
+
+ seed = 0x2e09b90939db40c400f8f22dae617151
+ rng = np.random.default_rng(seed)
+ child_rng1, child_rng2 = rng.spawn(2)
+
+ # safely use rng, child_rng1, and child_rng2
+
+Previously, this was hard to do without passing the ``SeedSequence``
+explicitly. Please see `numpy.random.SeedSequence` for more information.
diff --git a/doc/release/upcoming_changes/23229.compatibility.rst b/doc/release/upcoming_changes/23229.compatibility.rst
new file mode 100644
index 000000000..284cc06ab
--- /dev/null
+++ b/doc/release/upcoming_changes/23229.compatibility.rst
@@ -0,0 +1,3 @@
+- The ``busday_count`` method now correctly handles cases where the ``begindates`` is later in time
+ than the ``enddates``. Previously, the ``enddates`` was included, even though the documentation states
+ it is always excluded.
diff --git a/doc/release/upcoming_changes/23240.compatibility.rst b/doc/release/upcoming_changes/23240.compatibility.rst
new file mode 100644
index 000000000..28536a020
--- /dev/null
+++ b/doc/release/upcoming_changes/23240.compatibility.rst
@@ -0,0 +1,10 @@
+Array-likes that define ``__array_ufunc__`` can now override ufuncs if used as ``where``
+----------------------------------------------------------------------------------------
+If the ``where`` keyword argument of a :class:`numpy.ufunc` is a subclass of
+:class:`numpy.ndarray` or is a duck type that defines
+:func:`numpy.class.__array_ufunc__` it can override the behavior of the ufunc
+using the same mechanism as the input and output arguments.
+Note that for this to work properly, the ``where.__array_ufunc__``
+implementation will have to unwrap the ``where`` argument to pass it into the
+default implementation of the ``ufunc`` or, for :class:`numpy.ndarray`
+subclasses before using ``super().__array_ufunc__``. \ No newline at end of file
diff --git a/doc/release/upcoming_changes/23275.improvement.rst b/doc/release/upcoming_changes/23275.improvement.rst
new file mode 100644
index 000000000..14ed5d9ad
--- /dev/null
+++ b/doc/release/upcoming_changes/23275.improvement.rst
@@ -0,0 +1,4 @@
+``numpy.logspace`` now supports a non-scalar ``base`` argument
+--------------------------------------------------------------
+The ``base`` argument of ``numpy.logspace`` can now be array-like if it's
+broadcastable against the ``start`` and ``stop`` arguments. \ No newline at end of file
diff --git a/doc/release/upcoming_changes/23302.deprecation.rst b/doc/release/upcoming_changes/23302.deprecation.rst
new file mode 100644
index 000000000..9e36d658c
--- /dev/null
+++ b/doc/release/upcoming_changes/23302.deprecation.rst
@@ -0,0 +1 @@
+* ``np.round_`` is deprecated. Use `np.round` instead.
diff --git a/doc/release/upcoming_changes/23314.deprecation.rst b/doc/release/upcoming_changes/23314.deprecation.rst
new file mode 100644
index 000000000..8bed1aef8
--- /dev/null
+++ b/doc/release/upcoming_changes/23314.deprecation.rst
@@ -0,0 +1,4 @@
+* ``np.product`` is deprecated. Use `np.prod` instead.
+* ``np.cumproduct`` is deprecated. Use `np.cumprod` instead.
+* ``np.sometrue`` is deprecated. Use `np.any` instead.
+* ``np.alltrue`` is deprecated. Use `np.all` instead.
diff --git a/doc/release/upcoming_changes/23322.improvement.rst b/doc/release/upcoming_changes/23322.improvement.rst
new file mode 100644
index 000000000..ce5ab8cf5
--- /dev/null
+++ b/doc/release/upcoming_changes/23322.improvement.rst
@@ -0,0 +1,4 @@
+`np.ma.dot()` now supports for non-2d arrays
+--------------------------------------------
+Previously `np.ma.dot()` only worked if `a` and `b` were both 2d.
+Now it works for non-2d arrays as well as `np.dot()`.
diff --git a/doc/release/upcoming_changes/23357.improvement.rst b/doc/release/upcoming_changes/23357.improvement.rst
new file mode 100644
index 000000000..3b474146b
--- /dev/null
+++ b/doc/release/upcoming_changes/23357.improvement.rst
@@ -0,0 +1,9 @@
+Explicitly show keys of .npz file in repr
+-----------------------------------------
+``NpzFile`` shows keys of loaded .npz file when printed.
+
+.. code-block:: python
+
+ >>> npzfile = np.load('arr.npz')
+ >>> npzfile
+ NpzFile 'arr.npz' with keys arr_0, arr_1, arr_2, arr_3, arr_4...
diff --git a/doc/release/upcoming_changes/23358.improvement.rst b/doc/release/upcoming_changes/23358.improvement.rst
new file mode 100644
index 000000000..a8a0e56ef
--- /dev/null
+++ b/doc/release/upcoming_changes/23358.improvement.rst
@@ -0,0 +1,5 @@
+NumPy now exposes DType classes in ``np.dtypes``
+------------------------------------------------
+The new `numpy.dtypes` module now exposes DType classes and
+will contain future dtype related functionality.
+Most users should have no need to use these classes directly.
diff --git a/doc/release/upcoming_changes/23376.expired.rst b/doc/release/upcoming_changes/23376.expired.rst
new file mode 100644
index 000000000..e289b087c
--- /dev/null
+++ b/doc/release/upcoming_changes/23376.expired.rst
@@ -0,0 +1,9 @@
+Environment variable to disable dispatching removed
+---------------------------------------------------
+Support for the ``NUMPY_EXPERIMENTAL_ARRAY_FUNCTION`` environment variable has
+been removed. This variable disabled dispatching with ``__array_function__``.
+
+Support for ``y=`` as an alias of ``out=`` removed
+--------------------------------------------------
+The ``fix``, ``isposinf`` and ``isneginf`` functions allowed using ``y=`` as a
+(deprecated) alias for ``out=``. This is no longer supported.
diff --git a/doc/release/upcoming_changes/23403.expired.rst b/doc/release/upcoming_changes/23403.expired.rst
new file mode 100644
index 000000000..b099eb4e9
--- /dev/null
+++ b/doc/release/upcoming_changes/23403.expired.rst
@@ -0,0 +1,4 @@
+* ``np.clip`` now defaults to same-kind casting. Falling back to
+ unsafe casting was deprecated in NumPy 1.17.
+* ``np.clip`` will now propagate ``np.nan`` values passed as ``min`` or ``max``.
+ Previously, a scalar NaN was usually ignored. This was deprecated in NumPy 1.17.
diff --git a/doc/release/upcoming_changes/23480.expired.rst b/doc/release/upcoming_changes/23480.expired.rst
new file mode 100644
index 000000000..164677b98
--- /dev/null
+++ b/doc/release/upcoming_changes/23480.expired.rst
@@ -0,0 +1 @@
+* The ``np.dual`` submodule has been removed.
diff --git a/doc/release/upcoming_changes/23528.compatibility.rst b/doc/release/upcoming_changes/23528.compatibility.rst
new file mode 100644
index 000000000..439fb6a27
--- /dev/null
+++ b/doc/release/upcoming_changes/23528.compatibility.rst
@@ -0,0 +1,16 @@
+By default, the exported NumPy C API is now compatible with NumPy 1.19
+----------------------------------------------------------------------
+Starting with NumPy 1.25 when including NumPy headers, NumPy now
+defaults to exposing a backwards compatible API.
+This means that by default binaries such as wheels build against
+NumPy 1.25 will also work with NumPy 1.16 because it has the same API version
+as NumPy 1.19 which is the oldest NumPy version compatible with Python 3.9.
+
+You can customize this behavior using::
+
+ #define NPY_TARGET_VERSION NPY_1_22_API_VERSION
+
+or the equivalent ``-D`` option to the compiler. For more details
+please see `for-downstream-package-authors`_.
+A change should only be required in rare cases when a package relies on newly
+added C-API.
diff --git a/doc/release/upcoming_changes/23601.change.rst b/doc/release/upcoming_changes/23601.change.rst
new file mode 100644
index 000000000..e09bd50fe
--- /dev/null
+++ b/doc/release/upcoming_changes/23601.change.rst
@@ -0,0 +1,6 @@
+C++ standard library usage
+--------------------------
+
+NumPy builds now depend on the C++ standard library, because
+the ``numpy.core._multiarray_umath`` extension is linked with
+the C++ linker.
diff --git a/doc/release/upcoming_changes/23660.expired.rst b/doc/release/upcoming_changes/23660.expired.rst
new file mode 100644
index 000000000..615367350
--- /dev/null
+++ b/doc/release/upcoming_changes/23660.expired.rst
@@ -0,0 +1,2 @@
+* NumPy now always ignores sequence behavior for an array-like (defining
+ one of the array protocols). (Deprecation started NumPy 1.20)
diff --git a/doc/release/upcoming_changes/23661.performance.rst b/doc/release/upcoming_changes/23661.performance.rst
new file mode 100644
index 000000000..e3e55f3d5
--- /dev/null
+++ b/doc/release/upcoming_changes/23661.performance.rst
@@ -0,0 +1,4 @@
+Faster membership test on ``NpzFile``
+-------------------------------------
+Membership test on ``NpzFile`` will no longer
+decompress the archive if it is successful.
diff --git a/doc/release/upcoming_changes/23666.expired.rst b/doc/release/upcoming_changes/23666.expired.rst
new file mode 100644
index 000000000..eb51c91f3
--- /dev/null
+++ b/doc/release/upcoming_changes/23666.expired.rst
@@ -0,0 +1,5 @@
+* The niche ``FutureWarning`` when casting to a subarray dtype in ``astype``
+ or the array creation functions such as ``asarray`` is now finalized.
+ The behavior is now always the same as if the subarray dtype was
+ wrapped into a single field (which was the workaround, previously).
+ (FutureWarning since NumPy 1.20)
diff --git a/doc/release/upcoming_changes/23713.improvement.rst b/doc/release/upcoming_changes/23713.improvement.rst
new file mode 100644
index 000000000..15a4f412b
--- /dev/null
+++ b/doc/release/upcoming_changes/23713.improvement.rst
@@ -0,0 +1,9 @@
+Signed and unsigned integers always compare correctly
+-----------------------------------------------------
+When ``uint64`` and ``int64`` are mixed in NumPy, NumPy typically
+promotes both to ``float64``. This behavior may be argued about
+but is confusing for comparisons ``==``, ``<=``, since the results
+returned can be incorrect but the conversion is hidden since the
+result is a boolean.
+NumPy will now return the correct results for these by avoiding
+the cast to float.