diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2020-06-08 15:40:06 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-08 15:40:06 -0600 |
commit | 8f8603dd18c9c70191fd75d98793dc94c8ac30fa (patch) | |
tree | d677e09e6cdd62403af618ff1b142ebc181479a6 /doc/neps | |
parent | f1c4ba3e97cbf5c494f29531b35da6144cac5aec (diff) | |
parent | 106e37396991ca3453f98219e02d8a6e3b80c943 (diff) | |
download | numpy-8f8603dd18c9c70191fd75d98793dc94c8ac30fa.tar.gz |
Merge pull request #16445 from rgommers/roadmap-update
DOC: update roadmap
Diffstat (limited to 'doc/neps')
-rw-r--r-- | doc/neps/roadmap.rst | 101 |
1 files changed, 60 insertions, 41 deletions
diff --git a/doc/neps/roadmap.rst b/doc/neps/roadmap.rst index 3780499a0..40fcbd325 100644 --- a/doc/neps/roadmap.rst +++ b/doc/neps/roadmap.rst @@ -6,6 +6,7 @@ This is a live snapshot of tasks and features we will be investing resources in. It may be used to encourage and inspire developers and to search for funding. + Interoperability ---------------- @@ -16,11 +17,21 @@ facilitate interoperability with all such packages, and the code that uses them, may include (among other things) interoperability protocols, better duck typing support and ndarray subclass handling. -- The ``__array_function__`` protocol is currently experimental and needs to be - matured. See :ref`NEP18` for details. -- New protocols for overriding other functionality in NumPy may be needed. -- Array duck typing, or handling "duck arrays", needs improvements. See - :ref:`NEP22` for details. +The ``__array_ufunc__`` and ``__array_function__`` protocols are stable, but +do not cover the whole API. New protocols for overriding other functionality +in NumPy are needed. Work in this area aims to bring to completion one or more +of the following proposals: + +- :ref:`NEP30` +- :ref:`NEP31` +- :ref:`NEP35` +- :ref:`NEP37` + +In addition we aim to provide ways to make it easier for other libraries to +implement a NumPy-compatible API. This may include defining consistent subsets +of the API, as discussed in `this section of NEP 37 +<https://numpy.org/neps/nep-0037-array-module.html#requesting-restricted-subsets-of-numpy-s-api>`__. + Extensibility ------------- @@ -42,56 +53,59 @@ improve the dtype system. - One of these should probably be the default for text data. The current behavior on Python 3 is neither efficient nor user friendly. -- ``np.dtype(int)`` should not be platform dependent -- Better coercion for string + number Performance ----------- -We want to further improve NumPy's performance, through: +Improvements to NumPy's performance are important to many users. The primary +topic at the moment is better use of SIMD instructions, also on platforms other +than x86 - see :ref:`NEP38`. + +Other performance improvement ideas include: -- Better use of SIMD instructions, also on platforms other than x86. -- Reducing ufunc overhead. +- Reducing ufunc and ``__array_function__`` overhead. - Optimizations in individual functions. +- A better story around parallel execution. Furthermore we would like to improve the benchmarking system, in terms of coverage, easy of use, and publication of the results (now `here <https://pv.github.io/numpy-bench>`__) as part of the docs or website. + Website and documentation ------------------------- -Our website (https://numpy.org) is in very poor shape and needs to be rewritten -completely. - -The NumPy `documentation <https://www.numpy.org/devdocs/user/index.html>`__ is -of varying quality - in particular the User Guide needs major improvements. +The NumPy `documentation <https://www.numpy.org/devdocs>`__ is of varying +quality. The API documentation is in good shape; tutorials and high-level +documentation on many topics are missing or outdated. See :ref:`NEP44` for +planned improvements. -Random number generation policy & rewrite ------------------------------------------ +Our website (https://numpy.org) was completely redesigned recently. We aim to +further improve it by adding translations, better Hugo-Sphinx integration via a +new Sphinx theme, and more (see `this tracking issue <https://github.com/numpy/numpy.org/issues/266>`__). -A new random number generation framework with higher performance generators is -close to completion, see :ref:`NEP19` and `PR 13163`_. -Indexing --------- +User experience +--------------- -We intend to add new indexing modes for "vectorized indexing" and "outer indexing", -see :ref:`NEP21`. +Type annotations +```````````````` +We aim to add type annotations for all NumPy functionality, so users can use +tools like `mypy`_ to type check their code and IDEs can improve their support +for NumPy. The existing type stubs in the `numpy-stubs`_ repository are being +improved and will be moved into the NumPy code base. -Continuous Integration ----------------------- +Platform support +```````````````` +We aim to increase our support for different hardware architectures. This +includes adding CI coverage when CI services are available, providing wheels on +PyPI for ARM64 (``aarch64``) and POWER8/9 (``ppc64le``), providing better +build and install documentation, and resolving build issues on other platforms +like AIX. -We depend on CI to discover problems as we continue to develop NumPy before the -code reaches downstream users. -- CI for more exotic platforms (if available as a service). -- Multi-package testing -- Add an official channel for numpy dev builds for CI usage by other projects so - they may confirm new builds do not break their package. - -Other functionality -------------------- +Maintenance +----------- - ``MaskedArray`` needs to be improved, ideas include: @@ -99,12 +113,17 @@ Other functionality - MaskedArray as a duck-array type, and/or - dtypes that support missing values -- A backend system for ``numpy.fft`` (so that e.g. ``fft-mkl`` doesn't need to monkeypatch numpy) -- Write a strategy on how to deal with overlap between NumPy and SciPy for ``linalg`` - and ``fft`` (and implement it). -- Deprecate ``np.matrix`` (very slowly) +- Fortran integration via ``numpy.f2py`` requires a number of improvements, see + `this tracking issue <https://github.com/numpy/numpy/issues/14938>`__. +- A backend system for ``numpy.fft`` (so that e.g. ``fft-mkl`` doesn't need to monkeypatch numpy). +- Write a strategy on how to deal with overlap between NumPy and SciPy for ``linalg``. +- Deprecate ``np.matrix`` (very slowly). +- Add new indexing modes for "vectorized indexing" and "outer indexing" (see :ref:`NEP21`). +- Make the polynomial API easier to use. +- Integrate an improved text file loader. +- Ufunc and gufunc improvements, see `gh-8892 <https://github.com/numpy/numpy/issues/8892>`__ + and `gh-11492 <https://github.com/numpy/numpy/issues/11492>`__. -.. _implementation: https://gist.github.com/shoyer/1f0a308a06cd96df20879a1ddb8f0006 -.. _`reference implementation`: https://github.com/bashtage/randomgen -.. _`PR 13163`: https://github.com/numpy/numpy/pull/13163 +.. _`mypy`: https://mypy.readthedocs.io +.. _`numpy-stubs`: https://github.com/numpy/numpy-stubs |