<div dir="ltr">Many thanks to Ralf for managing this release! Thanks to the many contributors too! This is a major milestone.<div><br><div>Best,</div><div><br></div><div>Ian Henriksen</div></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Oct 25, 2017 at 5:48 AM Francesc Alted <<a href="mailto:faltet@gmail.com">faltet@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">​Congrats everybody!​</div><br></div><div class="gmail_extra"><br><div class="gmail_quote"></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2017-10-25 12:14 GMT+02:00 Ralf Gommers <span dir="ltr"><<a href="mailto:ralf.gommers@gmail.com" target="_blank">ralf.gommers@gmail.com</a>></span>:<br></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Hi all,</div><div><br></div><div>We are extremely pleased to announce the release of SciPy 1.0, 16 years after<br>version 0.1 saw the light of day.  It has been a long, productive journey to<br>get here, and we anticipate many more exciting new features and releases in the<br>future.<br><br><br>Why 1.0 now?<br>------------<br><br>A version number should reflect the maturity of a project - and SciPy was a<br>mature and stable library that is heavily used in production settings for a<br>long time already.  From that perspective, the 1.0 version number is long<br>overdue.<br><br>Some key project goals, both technical (e.g. Windows wheels and continuous<br>integration) and organisational (a governance structure, code of conduct and a<br>roadmap), have been achieved recently.<br><br>Many of us are a bit perfectionist, and therefore are reluctant to call<br>something "1.0" because it may imply that it's "finished" or "we are 100% happy<br>with it".  This is normal for many open source projects, however that doesn't<br>make it right.  We acknowledge to ourselves that it's not perfect, and there<br>are some dusty corners left (that will probably always be the case).  Despite<br>that, SciPy is extremely useful to its users, on average has high quality code<br>and documentation, and gives the stability and backwards compatibility<br>guarantees that a 1.0 label imply.<br><br><br>Some history and perspectives<br>-----------------------------<br><br>- 2001: the first SciPy release<br>- 2005: transition to NumPy<br>- 2007: creation of scikits<br>- 2008: scipy.spatial module and first Cython code added<br>- 2010: moving to a 6-monthly release cycle<br>- 2011: SciPy development moves to GitHub<br>- 2011: Python 3 support<br>- 2012: adding a sparse graph module and unified optimization interface<br>- 2012: removal of scipy.maxentropy<br>- 2013: continuous integration with TravisCI<br>- 2015: adding Cython interface for BLAS/LAPACK and a benchmark suite<br>- 2017: adding a unified C API with scipy.LowLevelCallable; removal of scipy.weave<br>- 2017: SciPy 1.0 release<br><br><br>**Pauli Virtanen** is SciPy's Benevolent Dictator For Life (BDFL).  He says:<br><br>*Truthfully speaking, we could have released a SciPy 1.0 a long time ago, so I'm<br>happy we do it now at long last. The project has a long history, and during the<br>years it has matured also as a software project.  I believe it has well proved<br>its merit to warrant a version number starting with unity.*<br><br>*Since its conception 15+ years ago, SciPy has largely been written by and for<br>scientists, to provide a box of basic tools that they need. Over time, the set<br>of people active in its development has undergone some rotation, and we have<br>evolved towards a somewhat more systematic approach to development. Regardless,<br>this underlying drive has stayed the same, and I think it will also continue<br>propelling the project forward in future. This is all good, since not long<br>after 1.0 comes 1.1.*<br><br>**Travis Oliphant** is one of SciPy's creators.  He says:<br><br>*I'm honored to write a note of congratulations to the SciPy developers and the<br>entire SciPy community for the release of SciPy 1.0.   This release represents<br>a dream of many that has been patiently pursued by a stalwart group of pioneers<br>for nearly 2 decades.   Efforts have been broad and consistent over that time<br>from many hundreds of people.   From initial discussions to efforts coding and<br>packaging to documentation efforts to extensive conference and community<br>building, the SciPy effort has been a global phenomenon that it has been a<br>privilege to participate in.*<br><br>*The idea of SciPy was already in multiple people’s minds in 1997 when I first<br>joined the Python community as a young graduate student who had just fallen in<br>love with the expressibility and extensibility of Python.   The internet was<br>just starting to bringing together like-minded mathematicians and scientists in<br>nascent electronically-connected communities.   In 1998, there was a concerted<br>discussion on the matrix-SIG, python mailing list with people like Paul<br>Barrett, Joe Harrington, Perry Greenfield, Paul Dubois, Konrad Hinsen, David<br>Ascher, and others.   This discussion encouraged me in 1998 and 1999 to<br>procrastinate my PhD and spend a lot of time writing extension modules to<br>Python that mostly wrapped battle-tested Fortran and C-code making it available<br>to the Python user.   This work attracted the help of others like Robert Kern,<br>Pearu Peterson and Eric Jones who joined their efforts with mine in 2000 so<br>that by 2001, the first SciPy release was ready.   This was long before Github<br>simplified collaboration and input from others and the "patch" command and<br>email was how you helped a project improve.*<br><br>*Since that time, hundreds of people have spent an enormous amount of time<br>improving the SciPy library and the community surrounding this library has<br>dramatically grown. I stopped being able to participate actively in developing<br>the SciPy library around 2010.  Fortunately, at that time, Pauli Virtanen and<br>Ralf Gommers picked up the pace of development supported by dozens of other key<br>contributors such as David Cournapeau, Evgeni Burovski, Josef Perktold, and<br>Warren Weckesser.   While I have only been able to admire the development of<br>SciPy from a distance for the past 7 years, I have never lost my love of the<br>project and the concept of community-driven development.    I remain driven<br>even now by a desire to help sustain the development of not only the SciPy<br>library but many other affiliated and related open-source projects.  I am<br>extremely pleased that SciPy is in the hands of a world-wide community of<br>talented developers who will ensure that SciPy remains an example of how<br>grass-roots, community-driven development can succeed.*<br><br>**Fernando Perez** offers a wider community perspective:<br><br>*The existence of a nascent Scipy library, and the incredible --if tiny by<br>today's standards-- community surrounding it is what drew me into the<br>scientific Python world while still a physics graduate student in 2001.  Today,<br>I am awed when I see these tools power everything from high school education to<br>the research that led to the 2017 Nobel Prize in physics.*<br><br>*Don't be fooled by the 1.0 number: this project is a mature cornerstone of the<br>modern scientific computing ecosystem.  I am grateful for the many who have<br>made it possible, and hope to be able to contribute again to it in the future.<br>My sincere congratulations to the whole team!*<br><br><br>Highlights of this release<br>--------------------------<br><br>Some of the highlights of this release are:<br><br>- Major build improvements.  Windows wheels are available on PyPI for the<br>  first time, and continuous integration has been set up on Windows and OS X<br>  in addition to Linux.<br>- A set of new ODE solvers and a unified interface to them<br>  (`scipy.integrate.solve_ivp`).<br>- Two new trust region optimizers and a new linear programming method, with<br>  improved performance compared to what `scipy.optimize` offered previously.<br>- Many new BLAS and LAPACK functions were wrapped.  The BLAS wrappers are now<br>  complete.<br><br><br>Upgrading and compatibility<br>---------------------------<br><br>There have been a number of deprecations and API changes in this release, which<br>are documented below.  Before upgrading, we recommend that users check that<br>their own code does not use deprecated SciPy functionality (to do so, run your<br>code with ``python -Wd`` and check for ``DeprecationWarning`` s).<br><br>This release requires Python 2.7 or >=3.4 and NumPy 1.8.2 or greater.<br><br>This is also the last release to support LAPACK 3.1.x - 3.3.x.  Moving the<br>lowest supported LAPACK version to >3.2.x was long blocked by Apple Accelerate<br>providing the LAPACK 3.2.1 API.  We have decided that it's time to either drop<br>Accelerate or, if there is enough interest, provide shims for functions added<br>in more recent LAPACK versions so it can still be used.<br><br><br>New features<br>============<br><br>`scipy.cluster` improvements<br>----------------------------<br><br>`scipy.cluster.hierarchy.optimal_leaf_ordering`, a function to reorder a<br>linkage matrix to minimize distances between adjacent leaves, was added.<br><br><br>`scipy.fftpack` improvements<br>----------------------------<br><br>N-dimensional versions of the discrete sine and cosine transforms and their<br>inverses were added as ``dctn``, ``idctn``, ``dstn`` and ``idstn``.<br><br><br>`scipy.integrate` improvements<br>------------------------------<br><br>A set of new ODE solvers have been added to `scipy.integrate`.  The convenience<br>function `scipy.integrate.solve_ivp` allows uniform access to all solvers.<br>The individual solvers (``RK23``, ``RK45``, ``Radau``, ``BDF`` and ``LSODA``)<br>can also be used directly.<br><br><br>`scipy.linalg` improvements<br>----------------------------<br><br>The BLAS wrappers in `scipy.linalg.blas` have been completed.  Added functions<br>are ``*gbmv``, ``*hbmv``, ``*hpmv``, ``*hpr``, ``*hpr2``, ``*spmv``, ``*spr``,<br>``*tbmv``, ``*tbsv``, ``*tpmv``, ``*tpsv``, ``*trsm``, ``*trsv``, ``*sbmv``,<br>``*spr2``,<br><br>Wrappers for the LAPACK functions ``*gels``, ``*stev``, ``*sytrd``, ``*hetrd``,<br>``*sytf2``, ``*hetrf``, ``*sytrf``, ``*sycon``, ``*hecon``, ``*gglse``,<br>``*stebz``, ``*stemr``, ``*sterf``, and ``*stein`` have been added.<br><br>The function `scipy.linalg.subspace_angles` has been added to compute the<br>subspace angles between two matrices.<br><br>The function `scipy.linalg.clarkson_woodruff_transform` has been added.<br>It finds low-rank matrix approximation via the Clarkson-Woodruff Transform.<br><br>The functions `scipy.linalg.eigh_tridiagonal` and<br>`scipy.linalg.eigvalsh_tridiagonal`, which find the eigenvalues and<br>eigenvectors of tridiagonal hermitian/symmetric matrices, were added.<br><br><br>`scipy.ndimage` improvements<br>----------------------------<br><br>Support for homogeneous coordinate transforms has been added to<br>`scipy.ndimage.affine_transform`.<br><br>The ``ndimage`` C code underwent a significant refactoring, and is now<br>a lot easier to understand and maintain.<br><br><br>`scipy.optimize` improvements<br>-----------------------------<br><br>The methods ``trust-region-exact`` and ``trust-krylov`` have been added to the<br>function `scipy.optimize.minimize`. These new trust-region methods solve the<br>subproblem with higher accuracy at the cost of more Hessian factorizations<br>(compared to dogleg) or more matrix vector products (compared to ncg) but<br>usually require less nonlinear iterations and are able to deal with indefinite<br>Hessians. They seem very competitive against the other Newton methods<br>implemented in scipy.<br><br>`scipy.optimize.linprog` gained an interior point method.  Its performance is<br>superior (both in accuracy and speed) to the older simplex method.<br><br><br>`scipy.signal` improvements<br>---------------------------<br><br>An argument ``fs`` (sampling frequency) was added to the following functions:<br>``firwin``, ``firwin2``, ``firls``, and ``remez``.  This makes these functions<br>consistent with many other functions in `scipy.signal` in which the sampling<br>frequency can be specified.<br><br>`scipy.signal.freqz` has been sped up significantly for FIR filters.<br><br><br>`scipy.sparse` improvements<br>---------------------------<br><br>Iterating over and slicing of CSC and CSR matrices is now faster by up to ~35%.<br><br>The ``tocsr`` method of COO matrices is now several times faster.<br><br>The ``diagonal`` method of sparse matrices now takes a parameter, indicating<br>which diagonal to return.<br><br><br>`scipy.sparse.linalg` improvements<br>----------------------------------<br><br>A new iterative solver for large-scale nonsymmetric sparse linear systems,<br>`scipy.sparse.linalg.gcrotmk`, was added.  It implements ``GCROT(m,k)``, a<br>flexible variant of ``GCROT``.<br><br>`scipy.sparse.linalg.lsmr` now accepts an initial guess, yielding potentially<br>faster convergence.<br><br>SuperLU was updated to version 5.2.1.<br><br><br>`scipy.spatial` improvements<br>----------------------------<br><br>Many distance metrics in `scipy.spatial.distance` gained support for weights.<br><br>The signatures of `scipy.spatial.distance.pdist` and<br>`scipy.spatial.distance.cdist` were changed to ``*args, **kwargs`` in order to<br>support a wider range of metrics (e.g. string-based metrics that need extra<br>keywords).  Also, an optional ``out`` parameter was added to ``pdist`` and<br>``cdist`` allowing the user to specify where the resulting distance matrix is<br>to be stored<br><br><br>`scipy.stats` improvements<br>--------------------------<br><br>The methods ``cdf`` and ``logcdf`` were added to<br>`scipy.stats.multivariate_normal`, providing the cumulative distribution<br>function of the multivariate normal distribution.<br><br>New statistical distance functions were added, namely<br>`scipy.stats.wasserstein_distance` for the first Wasserstein distance and<br>`scipy.stats.energy_distance` for the energy distance.<br><br><br>Deprecated features<br>===================<br><br>The following functions in `scipy.misc` are deprecated: ``bytescale``,<br>``fromimage``, ``imfilter``, ``imread``, ``imresize``, ``imrotate``,<br>``imsave``, ``imshow`` and ``toimage``.  Most of those functions have unexpected<br>behavior (like rescaling and type casting image data without the user asking<br>for that).  Other functions simply have better alternatives.<br><br>``scipy.interpolate.interpolate_wrapper`` and all functions in that submodule<br>are deprecated.  This was a never finished set of wrapper functions which is<br>not relevant anymore.<br><br>The ``fillvalue`` of `scipy.signal.convolve2d` will be cast directly to the<br>dtypes of the input arrays in the future and checked that it is a scalar or<br>an array with a single element.<br><br>``scipy.spatial.distance.matching`` is deprecated.  It is an alias of<br>`scipy.spatial.distance.hamming`, which should be used instead.<br><br>Implementation of `scipy.spatial.distance.wminkowski` was based on a wrong<br>interpretation of the metric definition. In scipy 1.0 it has been just<br>deprecated in the documentation to keep retro-compatibility but is recommended<br>to use the new version of `scipy.spatial.distance.minkowski` that implements<br>the correct behaviour.<br><br>Positional arguments of `scipy.spatial.distance.pdist` and<br>`scipy.spatial.distance.cdist` should be replaced with their keyword version.<br><br><br>Backwards incompatible changes<br>==============================<br><br>The following deprecated functions have been removed from `scipy.stats`:<br>``betai``, ``chisqprob``, ``f_value``, ``histogram``, ``histogram2``,<br>``pdf_fromgamma``, ``signaltonoise``, ``square_of_sums``, ``ss`` and<br>``threshold``.<br><br>The following deprecated functions have been removed from `scipy.stats.mstats`:<br>``betai``, ``f_value_wilks_lambda``, ``signaltonoise`` and ``threshold``.<br><br>The deprecated ``a`` and ``reta`` keywords have been removed from<br>`scipy.stats.shapiro`.<br><br>The deprecated functions ``sparse.csgraph.cs_graph_components`` and<br>``sparse.linalg.symeig`` have been removed from `scipy.sparse`.<br><br>The following deprecated keywords have been removed in `scipy.sparse.linalg`:<br>``drop_tol`` from ``splu``, and ``xtype`` from ``bicg``, ``bicgstab``, ``cg``,<br>``cgs``, ``gmres``, ``qmr`` and ``minres``.<br><br>The deprecated functions ``expm2`` and ``expm3`` have been removed from<br>`scipy.linalg`.  The deprecated keyword ``q`` was removed from<br>`scipy.linalg.expm`.  And the deprecated submodule ``linalg.calc_lwork`` was<br>removed.<br><br>The deprecated functions ``C2K``, ``K2C``, ``F2C``, ``C2F``, ``F2K`` and<br>``K2F`` have been removed from `scipy.constants`.<br><br>The deprecated ``ppform`` class was removed from `scipy.interpolate`.<br><br>The deprecated keyword ``iprint`` was removed from `scipy.optimize.fmin_cobyla`.<br><br>The default value for the ``zero_phase`` keyword of `scipy.signal.decimate`<br>has been changed to True.<br><br>The ``kmeans`` and ``kmeans2`` functions in `scipy.cluster.vq` changed the<br>method used for random initialization, so using a fixed random seed will<br>not necessarily produce the same results as in previous versions.<br><br>`scipy.special.gammaln` does not accept complex arguments anymore.<br><br>The deprecated functions ``sph_jn``, ``sph_yn``, ``sph_jnyn``, ``sph_in``,<br>``sph_kn``, and ``sph_inkn`` have been removed. Users should instead use<br>the functions ``spherical_jn``, ``spherical_yn``, ``spherical_in``, and<br>``spherical_kn``. Be aware that the new functions have different<br>signatures.<br><br>The cross-class properties of `scipy.signal.lti` systems have been removed.<br>The following properties/setters have been removed:<br><br>Name - (accessing/setting has been removed) - (setting has been removed)<br><br>* StateSpace - (``num``, ``den``, ``gain``) - (``zeros``, ``poles``)<br>* TransferFunction (``A``, ``B``, ``C``, ``D``, ``gain``) - (``zeros``, ``poles``)<br>* ZerosPolesGain (``A``, ``B``, ``C``, ``D``, ``num``, ``den``) - ()<br><br>``signal.freqz(b, a)`` with ``b`` or ``a`` >1-D raises a ``ValueError``.  This<br>was a corner case for which it was unclear that the behavior was well-defined.<br><br>The method ``var`` of `scipy.stats.dirichlet` now returns a scalar rather than<br>an ndarray when the length of alpha is 1.<br><br><br>Other changes<br>=============<br><br>SciPy now has a formal governance structure.  It consists of a BDFL (Pauli<br>Virtanen) and a Steering Committee.  See `the governance document<br><<a href="https://github.com/scipy/scipy/blob/master/doc/source/dev/governance/governance.rst" target="_blank">https://github.com/scipy/scipy/blob/master/doc/source/dev/governance/governance.rst</a>>`_<br>for details.<br><br>It is now possible to build SciPy on Windows with MSVC + gfortran!  Continuous<br>integration has been set up for this build configuration on Appveyor, building<br>against OpenBLAS.<br><br>Continuous integration for OS X has been set up on TravisCI.<br><br>The SciPy test suite has been migrated from ``nose`` to ``pytest``.<br><br>``scipy/_distributor_init.py`` was added to allow redistributors of SciPy to<br>add custom code that needs to run when importing SciPy (e.g. checks for<br>hardware, DLL search paths, etc.).<br><br>Support for PEP 518 (specifying build system requirements) was added - see<br>``pyproject.toml`` in the root of the SciPy repository.<br><br>In order to have consistent function names, the function<br>``scipy.linalg.solve_lyapunov`` is renamed to<br>`scipy.linalg.solve_continuous_lyapunov`.  The old name is kept for<br>backwards-compatibility.<br><br><br>Authors<br>=======<br><br>* @arcady +<br>* @xoviat +<br>* Anton Akhmerov<br>* Dominic Antonacci +<br>* Alessandro Pietro Bardelli<br>* Ved Basu +<br>* Michael James Bedford +<br>* Ray Bell +<br>* Juan M. Bello-Rivas +<br>* Sebastian Berg<br>* Felix Berkenkamp<br>* Jyotirmoy Bhattacharya +<br>* Matthew Brett<br>* Jonathan Bright<br>* Bruno Jiménez +<br>* Evgeni Burovski<br>* Patrick Callier<br>* Mark Campanelli +<br>* CJ Carey<br>* Robert Cimrman<br>* Adam Cox +<br>* Michael Danilov +<br>* David Haberthür +<br>* Andras Deak +<br>* Philip DeBoer<br>* Anne-Sylvie Deutsch<br>* Cathy Douglass +<br>* Dominic Else +<br>* Guo Fei +<br>* Roman Feldbauer +<br>* Yu Feng<br>* Jaime Fernandez del Rio<br>* Orestis Floros +<br>* David Freese +<br>* Adam Geitgey +<br>* James Gerity +<br>* Dezmond Goff +<br>* Christoph Gohlke<br>* Ralf Gommers<br>* Dirk Gorissen +<br>* Matt Haberland +<br>* David Hagen +<br>* Charles Harris<br>* Lam Yuen Hei +<br>* Jean Helie +<br>* Gaute Hope +<br>* Guillaume Horel +<br>* Franziska Horn +<br>* Yevhenii Hyzyla +<br>* Vladislav Iakovlev +<br>* Marvin Kastner +<br>* Mher Kazandjian<br>* Thomas Keck<br>* Adam Kurkiewicz +<br>* Ronan Lamy +<br>* J.L. Lanfranchi +<br>* Eric Larson<br>* Denis Laxalde<br>* Gregory R. Lee<br>* Felix Lenders +<br>* Evan Limanto<br>* Julian Lukwata +<br>* François Magimel<br>* Syrtis Major +<br>* Charles Masson +<br>* Nikolay Mayorov<br>* Tobias Megies<br>* Markus Meister +<br>* Roman Mirochnik +<br>* Jordi Montes +<br>* Nathan Musoke +<br>* Andrew Nelson<br>* M.J. Nichol<br>* Juan Nunez-Iglesias<br>* Arno Onken +<br>* Nick Papior +<br>* Dima Pasechnik +<br>* Ashwin Pathak +<br>* Oleksandr Pavlyk +<br>* Stefan Peterson<br>* Ilhan Polat<br>* Andrey Portnoy +<br>* Ravi Kumar Prasad +<br>* Aman Pratik<br>* Eric Quintero<br>* Vedant Rathore +<br>* Tyler Reddy<br>* Joscha Reimer<br>* Philipp Rentzsch +<br>* Antonio Horta Ribeiro<br>* Ned Richards +<br>* Kevin Rose +<br>* Benoit Rostykus +<br>* Matt Ruffalo +<br>* Eli Sadoff +<br>* Pim Schellart<br>* Nico Schlömer +<br>* Klaus Sembritzki +<br>* Nikolay Shebanov +<br>* Jonathan Tammo Siebert<br>* Scott Sievert<br>* Max Silbiger +<br>* Mandeep Singh +<br>* Michael Stewart +<br>* Jonathan Sutton +<br>* Deep Tavker +<br>* Martin Thoma<br>* James Tocknell +<br>* Aleksandar Trifunovic +<br>* Paul van Mulbregt +<br>* Jacob Vanderplas<br>* Aditya Vijaykumar<br>* Pauli Virtanen<br>* James Webber<br>* Warren Weckesser<br>* Eric Wieser +<br>* Josh Wilson<br>* Zhiqing Xiao +<br>* Evgeny Zhurko<br>* Nikolay Zinov +<br>* Zé Vinícius +<br><br>A total of 121 people contributed to this release.<br>People with a "+" by their names contributed a patch for the first time.<br>This list of names is automatically generated, and may not be fully complete.<br></div><div><br></div><div><br></div>Cheers,<br></div>Ralf<br></div>
<br>_______________________________________________<br></blockquote></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@python.org" target="_blank">NumPy-Discussion@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="m_-1674289427817267678gmail_signature" data-smartmail="gmail_signature">Francesc Alted</div>
</div></div>
_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@python.org" target="_blank">NumPy-Discussion@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/numpy-discussion</a><br>
</blockquote></div>